首页 分享 自制Java贪吃蛇小游戏

自制Java贪吃蛇小游戏

来源:萌宠菠菠乐园 时间:2026-04-01 21:04

最近正在学java,就跟着视频做了一个贪吃蛇 小游戏 ,虽然做的很low,但还是记录一下。

功能比较简单:

1.小蛇自由上下左右移动

2.可以吃食物

3.吃到食物后,可以增加 积分

4.蛇头接触到身体为死亡

5.点击空格重新开开始

开始界面如下 :

 图片材料取自这篇博客

https://blog.csdn.net/u011622021/article/details/81162083

代码:

package com.msb.game;

import javax.swing.*;

import java.net.URL;

public class images {

public static URL topUrl = images.class.getResource("/images/top.jpg");

public static ImageIcon topImg = new ImageIcon(topUrl);

public static URL backgroundUrl = images.class.getResource("/images/background.jpg");

public static ImageIcon backgroundImg = new ImageIcon(backgroundUrl);

public static URL bottomUrl = images.class.getResource("/images/bottom.jpg");

public static ImageIcon bottomImg = new ImageIcon(bottomUrl);

public static URL failUrl = images.class.getResource("/images/fail.png");

public static ImageIcon failImg = new ImageIcon(failUrl);

public static URL foodUrl = images.class.getResource("/images/food.png");

public static ImageIcon foodImg = new ImageIcon(foodUrl);

public static URL leftUrl = images.class.getResource("/images/left.jpg");

public static ImageIcon leftImg = new ImageIcon(leftUrl);

public static URL rightUrl = images.class.getResource("/images/right.jpg");

public static ImageIcon rightImg = new ImageIcon(rightUrl);

public static URL snake_bodyUrl = images.class.getResource("/images/snake_body.png");

public static ImageIcon snake_bodyImg = new ImageIcon(snake_bodyUrl);

}

java

运行

package com.msb.game;

import javax.swing.*;

public class StartGame {

public static void main(String[] args) {

JFrame jf=new JFrame();

jf.setTitle("小游戏 贪吃蛇 by Alensandern");

int width = jf.getToolkit().getDefaultToolkit().getScreenSize().width;

int height = jf.getToolkit().getDefaultToolkit().getScreenSize().height;

jf.setBounds((width-1024)/2,(height-578)/2,1024,578);

jf.setResizable(false);

jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

GamePanel gp=new GamePanel();

jf.add(gp);

jf.setVisible(true);

}

}

java

运行

package com.msb.game;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.util.Random;

public class GamePanel extends JPanel {

int[] snakeX = new int[200];

int[] snakeY = new int[200];

int length;

boolean isDie=false;

int score=0;

int foodX;

int foodY;

String direction;

boolean gameStart=false;

Timer time;

public void gameInit() {

length = 3;

snakeX[0] = 175;

snakeY[0] = 275;

snakeX[1] = 150;

snakeY[1] = 275;

snakeX[2] = 125;

snakeY[2] = 275;

foodX=400;

foodY=200;

direction="R";

}

public GamePanel() {

gameInit();

this.setFocusable(true);

this.addKeyListener(new KeyAdapter() {

@Override

public void keyPressed(KeyEvent e) {

super.keyPressed(e);

int keyCode = e.getKeyCode();

if(keyCode==KeyEvent.VK_SPACE){

if(isDie){

gameInit();

isDie=false;

}else {

gameStart=!gameStart;

repaint();

}

}

else if(keyCode==KeyEvent.VK_UP){

direction="T";

}

else if(keyCode==KeyEvent.VK_DOWN){

direction="B";

}

else if(keyCode==KeyEvent.VK_LEFT){

direction="L";

}

else if(keyCode==KeyEvent.VK_RIGHT){

direction="R";

}

}

});

time=new Timer(150, new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if(gameStart&&isDie==false){

for(int i=length-1;i>0;i--){

snakeX[i]=snakeX[i-1];

snakeY[i]=snakeY[i-1];

}

if(direction=="R"){

snakeX[0]+=25;

}

else if(direction=="L"){

snakeX[0]-=25;

}

else if(direction=="T"){

snakeY[0]-=25;

}

else if(direction=="B"){

snakeY[0]+=25;

}

if(snakeX[0]>1024){

snakeX[0]=0;

}

if(snakeX[0]>1024){

snakeX[0]=0;

}

else if(snakeX[0]<0){

snakeX[0]=1024;

}

else if(snakeY[0]<0){

snakeY[0]=578;

}

else if(snakeY[0]>578){

snakeY[0]=0;

}

if(foodX==snakeX[0]&&foodY==snakeY[0]){

length++;

score+=10;

foodX=((new Random().nextInt(40)+1)*25);

foodY=((new Random().nextInt(23)+1)*25);

}

for(int i=1;i<length;i++){

if(snakeX[0]==snakeX[i]&&snakeY[0]==snakeY[i]){

isDie=true;

}

}

repaint();

}

}

});

time.start();

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

images.backgroundImg.paintIcon(this, g, 0, 0);

if("R".equals(direction)){

images.rightImg.paintIcon(this,g,snakeX[0],snakeY[0]);

}

else if("L".equals(direction)){

images.leftImg.paintIcon(this,g,snakeX[0],snakeY[0]);

}

else if("T".equals(direction)){

images.topImg.paintIcon(this,g,snakeX[0],snakeY[0]);

}

else if("B".equals(direction)){

images.bottomImg.paintIcon(this,g,snakeX[0],snakeY[0]);

}

for(int i=1;i<length;i++){

images.snake_bodyImg.paintIcon(this,g,snakeX[i],snakeY[i]);

}

if(gameStart==false){

g.setColor(new Color(105, 146, 73, 255));

g.setFont(new Font("微软雅体",Font.BOLD,40));

g.drawString("按下空格开始游戏",350,250);

}

images.foodImg.paintIcon(this,g,foodX,foodY);

g.setColor(new Color(175, 90, 44, 255));

g.setFont(new Font("微软雅体",Font.BOLD,40));

g.drawString("积分: "+score,800,50);

if(isDie){

g.setColor(new Color(175, 90, 44, 255));

g.setFont(new Font("微软雅体",Font.BOLD,40));

g.drawString("小蛇已死亡,点击空格,从新开始 ",150,250);

}

}

}

java

运行

不嫌弃的伙伴可以 提取 资源哦! 

 源码压缩包:

链接:https://pan.baidu.com/s/11lo3Sw-dSjncrkJgz_lmPw 提取码:4kx0 

图片链接:

 http://链接:https://pan.baidu.com/s/17oNUcXn4X0HUflvJG45qtA 提取码:bhd9

.jar文件(可直接执行游戏)

http://链接:https://pan.baidu.com/s/13J6wi8W1NGGSApqLioWFxA 提取码:ubgq 

相关知识

自制Java贪吃蛇小游戏
python实现贪吃蛇小游戏
C#贪吃蛇小游戏
贪吃蛇游戏程序设计实验报告
使用MaxKB 增加互动小游戏——贪吃蛇
基于单片机的贪吃蛇游戏设计
python+pygame 贪吃蛇游戏
python 250行代码开发一个贪吃蛇
Java开发宠物猫培养小游戏:全程教程与实践
贪吃蛇大作战的最新评论和评分

网址: 自制Java贪吃蛇小游戏 https://www.mcbbbk.com/newsview1360781.html

所属分类:萌宠日常
上一篇: 异宠专属医疗行业深度调研及发展策
下一篇: 玩具蛇行业发展趋势、现状分析、市

推荐分享