-->

java贪吃蛇程序代码(java贪吃蛇代码详解)

以下是一个简单的JavaSnake代码,包含基本的游戏逻辑和控制。

```javaimportjava.awt.Color;导入java.awt.Dimension;导入java.awt.Font;导入java.awt.FontMetrics;导入java.awt.Graphics;导入java.awt.Image;导入java.awt.工具包;导入java.awt.event.ActionEvent;导入java.awt.event.ActionListener;导入java.awt.event.KeyAdapter;导入java.awt.event.KeyEvent;导入javax.swing.ImageIcon;导入javax.swing。JPanel;导入javax.swing.Timer;

公共类GameBoard扩展JPanel实现ActionListener{

私人最终intboardWidth=300;//游戏面板宽度privateFinalintboardHeight=300;//游戏面板高度privateFinalintdotSize=10;//蛇体元素大小privateFinalintTotalDots=900;//游戏区域总大小privateFinalintrandomPosition=29;//鸡蛋出现的位置范围privateFinalintdelay=140;//游戏延迟

私有最终intx[]=newint[totalDots];//存储蛇身体的X坐标privateFinalinty[]=newint[totalDots];//存储蛇身体的Y坐标

私有整型点;//蛇身体的长度privateintEggX;//蛋的X坐标privateintEggY;//鸡蛋的Y坐标

私有布尔左方向=false;//是否向左移动privatebooleanrightDirection=true;//是否向右移动privatebooleanupDirection=false;//是否向上移动privatebooleandownDirection=false;//是否下移privatebooleaninGame=true;//游戏状态

私人定时器计时器;//游戏计时器

私人形象体;//body元素privateImageEgg;//Egg元素privateImagehead;//头元素

公共GameBoard(){initGameBoard();}

私有无效initGameBoard(){

addKeyListener(newTAdapter());setBackground(颜色.黑色);setFocusable(true);

setPreferredSize(newDimension(boardWidth,boardHeight));加载图像();初始化游戏();}

私有无效loadImages(){

ImageIconbodyImage=newImageIcon('body.png');正文=bodyImage.getImage();

ImageIconEggImage=newImageIcon('egg.png');鸡蛋=EggImage.getImage();

ImageIconheadImage=newImageIcon('head.png');头=headImage.getImage();}

私有无效initGame(){

点=3;

for(inti=0;i点;i++){x[i]=50-i*10;y[i]=50;}

定位鸡蛋();

计时器=新计时器(延迟,这);计时器.start();}

@OverridepublicvoidPaintComponent(Graphicsg){super.paintComponent(g);

doDrawing(g);}

私人无效doDrawing(图形g){

如果(游戏中){

g.drawImage(egg,eggX,eggY,这个);

for(inti=0;i点;i++){if(i==0){g.drawImage(head,x[i],y[i],this);}}else{g.drawImage(body,x[i],y[i],this);}}

Toolkit.getDefaultToolkit().sync();

}别的{

游戏结束(g);}}

私人无效游戏结束(图形g){

字符串消息='游戏结束';字体font=newFont('Helvetica',Font.BOLD,14);FontMetrics指标=getFontMetrics(font);

g.setColor(Color.white);g.setFont(字体);g.drawString(message,(boardWidth-metrics.stringWidth(message))/2,boardHeight/2);}

私有无效checkEgg(){

if((x[0]==EggX)(y[0]==EggY)){

点++;定位鸡蛋();}}

私有无效移动(){

for(inti=点;i0;i--){x[i]=x[i-1];y[i]=y[i-1];}

if(leftDirection){x[0]-=点大小;}

if(rightDirection){x[0]+=dotSize;}

if(upDirection){y[0]-=dotSize;}

if(downDirection){y[0]+=dotSize;}}

私有无效checkCollision(){

for(inti=点;i0;i--){

if((i4)(x[0]==x[i])(y[0]==y[i])){inGame=false;}}

if(y[0]=boardHeight){inGame=false;}

if(y[0]0){inGame=false;}}

if(x[0]=boardWidth){inGame=false;}}

if(x[0]0){inGame=false;}}

if(!inGame){计时器.stop();}}

私人无效locateEgg(){

intr=(int)(Math.random()*randomPosition);EggX=((r*点大小));

r=(int)(Math.random()*randomPosition);EggY=((r*点大小));}

@OverridepublicvoidactionPerformed(ActionEvente){

如果(游戏中){

检查鸡蛋();检查碰撞();移动();}

重绘();}

私有类TAdapter扩展KeyAdapter{

@OverridepublicvoidkeyPressed(KeyEvente){

intkey=e.getKeyCode();

if((key==KeyEvent.VK_LEFT)(!rightDirection)){leftDirection=true;向上方向=假;向下方向=假;}

if((key==KeyEvent.VK_RIGHT)(!leftDirection)){rightDirection=true;向上方向=假;向下方向=假;}

if((key==KeyEvent.VK_UP)(!downDirection)){upDirection=true;右方向=假;左方向=假;}

if((key==KeyEvent.VK_DOWN)(!upDirection)){downDirection=true;右方向=假;左方向=假;}}}}```

这是基本贪吃蛇游戏的代码。代码采用了Java面向对象的编程思想,包含了一个游戏面板类GameBoard,实现了绘制游戏界面、处理游戏逻辑等功能。

游戏面板类GameBoard继承JPanel并重写PaintComponent方法来绘制游戏界面。在游戏面板中,使用定时器定期执行游戏逻辑并重绘游戏界面。游戏的主要逻辑包括处理按键事件、移动蛇、检测碰撞等。游戏中使用了三张图片作为游戏元素,分别是蛇身、蛇头和蛇蛋。

在“main”方法中,您可以创建一个“JFrame”容器,向其中添加游戏面板实例,并设置窗口的大小和关闭行为。

上面的代码是一个简单的贪吃蛇游戏实现,可以根据自己的需求进行修改和扩展。

上一篇: 源代码管理系统(源代码管理平台)

下一篇: 网站有哪几种域名方式(网站有哪几种域名类型)

关于搜一搜站长工具

如未标明出处,所有模板均为搜一搜站长工具原创,如需转载,请附上原文地址,感谢您的支持和关注。

关于代售类模板,为网友上传发布,如果有侵犯你的权益,请联系我们,第一时间删除。客服邮箱:3801085100#qq.com(#换成@)

本文地址:http://www.soyiso.net/Tutorial/10537.html

展开更多