Java实现贪吃蛇游戏源码
本文实例为大家分享了Java实现贪吃蛇游戏源码的具体代码,供大家参考,具体内容如下
1.StartGame
packagecom.qiang.snake;
importjavax.swing.*;
//游戏的主启动类
publicclassStartGame{
publicstaticvoidmain(String[]args){
JFrameframe=newJFrame();
frame.setResizable(false);//窗口大小不可变
frame.setBounds(10,10,900,720);
frame.add(newGamePanel());
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
2.Data
packagecom.qiang.snake;
importjavax.swing.*;
importjava.net.URL;
//数据中心
publicclassData{
publicstaticURLheaderURL=Data.class.getResource("/statics/header.png");
publicstaticURLupURL=Data.class.getResource("/statics/up.png");
publicstaticURLdownURL=Data.class.getResource("/statics/down.png");
publicstaticURLleftURL=Data.class.getResource("/statics/left.png");
publicstaticURLrightURL=Data.class.getResource("/statics/right.png");
publicstaticURLbodyURL=Data.class.getResource("/statics/body.png");
publicstaticURLfoodURL=Data.class.getResource("/statics/food.png");
publicstaticImageIconheader=newImageIcon(headerURL);
publicstaticImageIconup=newImageIcon(upURL);
publicstaticImageIcondown=newImageIcon(downURL);
publicstaticImageIconleft=newImageIcon(leftURL);
publicstaticImageIconright=newImageIcon(rightURL);
publicstaticImageIconbody=newImageIcon(bodyURL);
publicstaticImageIconfood=newImageIcon(foodURL);
}
3.GamePanel
packagecom.qiang.snake;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.util.Random;
publicclassGamePanelextendsJPanelimplementsKeyListener,ActionListener{
intlenth;//蛇的长度
int[]snakeX=newint[600];//蛇的坐标x
int[]snakeY=newint[500];//蛇的坐标y
Stringfx="R";//蛇的方向:R:右L:左U:上D:下
booleanisStart=false;//游戏是否开始
Timertimer=newTimer(100,this);//定时器:第一个参数,就是定时执行时间
//食物
intfoodx;
intfoody;
Randomrandom=newRandom();
booleanisFail=false;//游戏是否结束
intscore;//游戏分数!
//构造方法
publicGamePanel(){
init();//初始化
this.setFocusable(true);//获取焦点事件
this.addKeyListener(this);//键盘监听事件
timer.start();
}
//初始化方法
publicvoidinit(){
lenth=3;//初始小蛇有三节,包括小脑袋
//初始化开始的蛇,给蛇定位,
snakeX[0]=100;snakeY[0]=100;
snakeX[1]=75;snakeY[1]=100;
snakeX[2]=50;snakeY[2]=100;
//初始化食物数据
foodx=25+25*random.nextInt(34);
foody=75+25*random.nextInt(24);
score=0;//初始化游戏分数
}
//画组件
@Override
publicvoidpaintComponent(Graphicsg){
super.paintComponent(g);//清屏
this.setBackground(Color.WHITE);//设置面板的背景色
Data.header.paintIcon(this,g,25,11);//绘制头部信息区域
g.fillRect(25,75,850,600);//绘制游戏区域
//把小蛇画上去
if(fx.equals("R")){//蛇的头通过方向变量来判断
Data.right.paintIcon(this,g,snakeX[0],snakeY[0]);
}elseif(fx.equals("L")){
Data.left.paintIcon(this,g,snakeX[0],snakeY[0]);
}elseif(fx.equals("U")){
Data.up.paintIcon(this,g,snakeX[0],snakeY[0]);
}elseif(fx.equals("D")){
Data.down.paintIcon(this,g,snakeX[0],snakeY[0]);
}
for(inti=1;i0;i--){//除了脑袋都往前移:身体移动
snakeX[i]=snakeX[i-1];//即第i节(后一节)的位置变为(i-1:前一节)节的位置!
snakeY[i]=snakeY[i-1];
}
//通过方向控制,头部移动
if(fx.equals("R")){
snakeX[0]=snakeX[0]+25;
if(snakeX[0]>850)snakeX[0]=25;
}elseif(fx.equals("L")){
snakeX[0]=snakeX[0]-25;
if(snakeX[0]<25)snakeX[0]=850;
}elseif(fx.equals("U")){
snakeY[0]=snakeY[0]-25;
if(snakeY[0]<75)snakeY[0]=650;
}elseif(fx.equals("D")){
snakeY[0]=snakeY[0]+25;
if(snakeY[0]>650)snakeY[0]=75;
}
//吃食物:当蛇的头和食物一样时,算吃到食物!
if(snakeX[0]==foodx&&snakeY[0]==foody){
//1.长度加一
lenth++;
//每吃一个食物,增加积分
score=score+10;
//2.重新生成食物
foodx=25+25*random.nextInt(34);
foody=75+25*random.nextInt(24);
}
//结束判断,头和身体撞到了
for(inti=1;i
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。