免费资源网,https://freexyz.cn/

先给大家分享源码,喜欢的朋友点此处下载。

游戏界面

GUI界面

java实现贪吃蛇游戏需要创建一个桌面窗口出来,此时就需要使用java中的swing控件

创建一个新窗口

JFrame frame = new JFrame("贪吃蛇游戏");

//设置大小

frame.setBounds(10, 10, 900, 720);

向窗口中添加控件

可以直接用add方法往窗口中添加控件

这里我创建GamePanel类继承自Panel,最后使用add方法添加GamePanel

加载图片

图片加载之后可以添加到窗口上

public static URL bodyUrl = GetImage.class.getResource("/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* random.nextInt(34);

foodY = 75 + 25* random.nextInt(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;

}

}

免费资源网,https://freexyz.cn/

java贪吃蛇游戏代码下载_java实现贪吃蛇游戏代码(附完整源码)相关推荐

  1. JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)

    JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码) dpTopDownJumpGame.js完整源代码 dpTopDownJumpGame.test.js完整源代码 dpTop ...

  2. 【代码案例】博客页面设计(附完整源码)

    博客页面设计 博客列表页 实现导航栏 实现版心 实现个人信息 实现博客列表 实现博客正文页 引入导航栏.版心.个人信息 实现博客正文 实现博客登录页 引入导航栏 实现版心和登录框 实现博客编辑页 引入 ...

  3. Java:实现将方阵中的元素顺时针旋转90度算法(附完整源码)

    Java:实现将方阵中的元素顺时针旋转90度算法 package com.williamfiset.algorithms.linearalgebra;public class RotateSquare ...

  4. Java:实现确定四个3D点是否位于同一平面上算法(附完整源码)

    Java:实现确定四个3D点是否位于同一平面上算法 package com.williamfiset.algorithms.geometry;import static java.lang.Math. ...

  5. JAVA:实现是否为Kaprekar Numbers卡布列克数算法(附完整源码)

    JAVA:实现是否为Kaprekar Numbers卡布列克数算法 package com.thealgorithms.maths; import java.math.BigInteger; impo ...

  6. 今天给大家分享一个HTML5的钢琴代码,可以弹奏的哦!(附完整源码)

    它是一个可以弹奏的钢琴,所以它需要音频文件,在这里发不了,这里只有代码,音频文件的分享在文章末尾哦. <!doctype html> <html lang="en" ...

  7. HTML小游戏15 —— 网页版3D反恐英雄(附完整源码)

  8. H5小游戏1—— 是男人就下一百层(附完整源码)

  9. 编程语言用 Java 开发一个打飞机小游戏(附完整源码)

    编程语言用 Java 开发一个打飞机小游戏(附完整源码) 上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过 ...

  10. 视频教程-物联网之java实现(springboot + netty + 心跳,附完整源码)-Java

    物联网之java实现(springboot + netty + 心跳,附完整源码) 10年的软件行业从业经验,熟悉java开发.java 架构.微服务.自动化高级运维.压力测试等. 林忠明 ¥200. ...

最新文章

  1. javascript js异步加载
  2. 算法------------数组----------------两个数组的交集 II
  3. UE4 custom depth 自定义深度
  4. 品牌才是硬道理——一线、二线主板品牌集中营品牌才是硬道理——一线、二线主板品牌集中营...
  5. dxf转pdf linux,4个最好的PDF转DXF格式的在线转换器
  6. HTML文件撰写的注意事项有哪些,CSS及HTML 常见误区和注意事项(一)
  7. Java基础知识强化26:Object类之hashCode()方法、getClass()方法
  8. 小程序----面试题总结
  9. word文本样式代码样式_使用文本样式表达创建真相来源
  10. 世界是沙粒还是宇宙_看到一个沙粒世界:再一次你好世界
  11. 【Leetcode | 13】56. 合并区间
  12. C# 学习之路--百度网盘爬虫设计与实现(一)
  13. 八皇后问题程序及注解
  14. httpclient请求配置dns绑定host
  15. 40余个超好用的在线影视站点
  16. 龙格库塔格式的计算精度推导
  17. html背景图片刚刚好铺满,ppt的背景图片怎么设置才能铺满整张又不失真呢? | ppt整套背景图...
  18. 香奈儿机器人t恤_最hot超模:开场Chanel的机器人 真面目居然是小精灵?
  19. seo常用工具,seo常用工具搜行者SEO
  20. (OpenCV+Python)--目标跟踪,背景分割器:KNN、MOG2和GMG

热门文章

  1. 卷积神经网络CNN5
  2. 第一章 数字设计方法
  3. 大数据在建筑行业落地开花
  4. 微信小程序从零开始(零)-Hello World
  5. 2012年腾讯招聘实习生笔试题
  6. java对接 布防 海康威视_Java海康威视网络摄像头的云台控制,截图API封装
  7. 关注这几点,远程办公不犯迷糊
  8. Python pip更换国内镜像
  9. mac 实用软件 截图 文本 压缩 日历
  10. 环境规划与管理知识点总结归纳