java实现贪吃蛇游戏代码(附完整源码)先给⼤家分享源码,喜欢的朋友。
游戏界⾯
GUI界⾯
贪吃蛇的编程代码java实现贪吃蛇游戏需要创建⼀个桌⾯窗⼝出来,此时就需要使⽤java中的swing控件创建⼀个新窗⼝
JFrame frame = new JFrame("贪吃蛇游戏");
//设置⼤⼩
frame.setBounds(10, 10, 900, 720);
向窗⼝中添加控件
可以直接⽤add⽅法往窗⼝中添加控件
这⾥我创建GamePanel类继承⾃Panel,最后使⽤add⽅法添加GamePanel
加载图⽚
图⽚加载之后可以添加到窗⼝上
public static URL bodyUrl = Resource("/picture/body.png");
public static ImageIcon body = new ImageIcon(bodyUrl);
逻辑实现
//每次刷新页⾯需要进⾏的操作
@Override
public void actionPerformed(ActionEvent e) {
//当游戏处于开始状态且游戏没有失败时
if(gameStart && !isFail) {
//蛇头所在的位置就是下⼀次蛇⾝体的位置
bodyX[++bodyIndexRight] = headX;
bodyY[bodyIndexRight] = headY;
//bodyIndexLeft++;
/
/长度到达数组的尾部
if(bodyIndexRight==480) {
for(int i=bodyIndexLeft, j=0; i<=bodyIndexRight; i++,j++) {
bodyX[j]=bodyX[i];
bodyY[j]=bodyY[i];
}
bodyIndexLeft=0;
bodyIndexRight=length-1;
}
//更新头部位置
if(fdirection==1) {
/
/头部⽅向为上,将蛇头向上移动⼀个单位
headY-=25;
}
else if(fdirection==2) {
//头部⽅向为下,将蛇头向下移动⼀个单位
headY+=25;
}
else if(fdirection==3) {
//头部⽅向为左,将蛇头向左移动⼀个单位
headX-=25;
}
else if(fdirection==4) {
//头部⽅向为右,将蛇头向右移动⼀个单位
headX+=25;
}
//当X坐标与Y坐标到达极限的时候,从另⼀端出来
if(headX<25)
headX = 850;
if(headX>850)
headX = 25;
if(headY<75)
headY = 650;
if(headY>650)
headY = 75;
//当头部坐标和⾷物坐标重合时
if(headX==foodX && headY==foodY){
length++;
score+=10;
//重新⽣成⾷物,判断⾷物坐标和蛇⾝坐标是否重合,效率较慢
while(true) {
foodX = 25 + 25* Int(34);
foodY = 75 + 25* Int(24);
//判断⾷物是否和头部⾝体重合
boolean isRepeat = false;
//和头部重合
if(foodX == headX && foodY == headY)
isRepeat = true;
//和⾝体重合
for(int i=bodyIndexLeft; i<=bodyIndexRight; i++) {
if(foodX == bodyX[i] && foodY == bodyY[i]){
isRepeat = true;
}
}
//当不重复的时候,⾷物⽣成成功,跳出循环
if(isRepeat==false)
break;
}
}
else bodyIndexLeft++;
//判断头部是否和⾝体重合
for(int i=bodyIndexLeft; i<=bodyIndexRight;i++) {
if(headX==bodyX[i] && headY==bodyY[i]){
//游戏失败
isFail = true;
break;
}
}
repaint();
}
timer.start();
}
键盘监听
实现KeyListener接⼝,重写KeyPressed⽅法,在其中写当键盘按下时所对应的操作。//键盘监听事件
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode(); //获取按下的键盘
if (keyCode==KeyEvent.VK_SPACE){ //如果是空格
if (isFail){ //如果游戏失败,从头再来!
isFail = false;
init(); //重新初始化
}else { //否则,如果游戏中,暂停游戏,如果暂停游戏,开始游戏
gameStart = !gameStart;
}
repaint();
}
if (keyCode==KeyEvent.VK_LEFT){
//左
/
/不能掉头,当当前头的⽅向和要转的⽅向不相反时才能调转⽅向
if(fdirection!=4) {
fdirection = 3;
}
}else if (keyCode==KeyEvent.VK_RIGHT){
//左
if(fdirection!=3)
fdirection = 4;
}else if (keyCode==KeyEvent.VK_UP){
//上
if(fdirection!=2)
fdirection = 1;
}else if (keyCode==KeyEvent.VK_DOWN){
//下
if(fdirection!=1)
fdirection = 2;
}
}
到此这篇关于java实现贪吃蛇游戏代码的⽂章就介绍到这了,更多相关java实现贪吃蛇游戏内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论