游戏界面基本布局

贪吃蛇是基于JFrame的一款小游戏。它主要有两部分组成,一个是显示区域,一个是按钮区域。这两个区域都用JPanel来实现。

首先需要创建一个基于JFrame的类,例如创建一个MyFrame,让其继承于JFrame。

然后创建一个显示区域的类MyPanel,一个按钮区域的类Button,当然了这两个类都基于JPanel。

第三步:在MyFrame类中实例化两个JPanel类。并在MyFrame构造方法中设置窗体的logo、窗体的标题、窗体初始位置、窗体的大小、窗体的背景颜色、窗体的关闭方式等。

第四步:继续清空MyFrame的布局管理器、设置窗体为固定大小不可更改、添加两个区域并显示、设置键盘监听焦点(控制贪吃蛇的移动)等。

游戏显示区域

MyPanle实现思路:

在构造方法中注册键盘监听事件、设置容器的坐标及大小、设置容器的背景颜色。如果想要添加背景图片,可以重写paintComponent方法。

创建一个食物类Food,创建一个贪吃蛇类Snake,并在MyPanel里实例化这两个类。

在MyPanel里创建一个贪吃蛇的线程,并在构造方法里启动该线程。

重写paint方法,绘制容器。并设置相应的颜色、画线、调用贪吃蛇的移动方法和绘画方法、调用食物的绘画方法。

配置文件类:

定义布局所需要的行和列,定义上下左右四个方向

定义死亡检测标识、定义游戏状态检测标识。

贪吃蛇线程类:

重写线程启动的方法

在启动方法里时刻检测贪吃蛇是否死亡,如果死亡则弹出“游戏结束”的对话框。

食物类:

定义食物的坐标。

定义食物的绘画方法

当食物被吃掉后,我们需要随机生成一个位置来展示食物,因此需要一个生成随机位置的方法repair()

定义获取食物坐标的方法。在构造方法里随机生成食物的坐标

结点类:

蛇有蛇头和蛇身、蛇尾,我们用节点来实现。

创建一个结点类,属性包括所在行、所在列、上个结点、下个节点、前进方向。

在有参构造方法中初始化贪吃蛇的位置信息,指定贪吃和前进的方向。

定义绘画方法,蛇头颜色为黄色、其余为蓝色。

贪吃蛇类

创建一个贪吃蛇类,属性包括头、身、尾、食物。

定义有参构造方法,参数为食物。并初始化贪吃蛇的初始坐标、以及设置结点之间的关系。

定义绘画方法,遍历贪吃蛇的每个节点,然后把每个节点绘画出来。

定义获取贪吃蛇坐标的方法,用于获取贪吃蛇的坐标。

定义贪吃蛇的移动方法。贪吃蛇怎么移动?添加蛇头――去蛇尾――吃食物――死亡检测

定义添加蛇头的方法,设置一个Node临时变量。根据前进方向判断,如何添加蛇头。

定义去除蛇尾的方法,把蛇尾的前一个结点的后指针设置为空,把蛇尾的前一个结点设置为蛇尾即可。

定义吃食物的方法,三步走。首先判断贪吃蛇坐标和食物坐标是否重合,如果重合就添加蛇头然后重新布局食物。

定义死亡检测方法,两步走。第一步判断是否越界,第二步判断头是否和尾重合。

定义键盘控制方法。当用户按下WASD键,贪吃蛇才可改变方向移动且不能逆向移动。(比如开始向上移动,我不能直接按S键让它向下移动)。

按钮区域

创建属性:myPanel、暂停、继续、重新开始、退出。

创建带参数的构造方法,参数为myPanel.

在构造方法中设置初始位置及大小、创建四个按钮并添加。

在构造方法里注册按钮监听。

重写actionPerformed方法。检测按下按钮。

如果按下继续游戏,那么需要重写设置键盘监听焦点

如果是重新开始游戏,那么需要停止当前线程,然后重新生成蛇和食物,并把控制条件还原到初始状态。最后创建新的线程对象并启动,最后再设置键盘监听焦点。

代码获取

https://github.com/XinPingLover/MyCode.git

以上就是Java 实现贪吃蛇游戏的详细内容,更多关于Java 贪吃蛇的资料请关注云海天教程其它相关文章!

java贪吃蛇保存,Java 实现贪吃蛇游戏的示例相关推荐

  1. java 打地鼠 源代码_Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...

  2. Java学习(8):贪吃蛇游戏

    根据视频编写的贪吃蛇游戏 主方法 public class Start {public static void main(String[] args) {new Yard().launch();} } ...

  3. 贪吃蛇项目Java实现

    目录 贪吃蛇项目Java开发 一.项目概述 二.项目初步设计 1.项目总体框架 2.模块划分图 3.程序流程图 4.类的划分 5.初步设计 三.实验准备 1.学习随机数类random 2.学习Java ...

  4. 【Java闭关修炼】SpringBoot项目-贪吃蛇对战小游戏-配置git环境和项目创建

    [Java闭关修炼]SpringBoot项目-贪吃蛇对战小游戏-配置git环境和项目创建 项目的逐步细分 配置git环境 创建项目后端 前后端不分离写法-url访问路径解析资源 安装vue vue文件 ...

  5. java超级简单贪吃蛇_java实现简易贪吃蛇游戏

    本文实例为大家分享了java实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 1.封装贪吃蛇身体,抽象出贪吃蛇结点类Node,结点用ArrayList存储 import java.awt.*; pu ...

  6. 【Java闭关修炼】SpringBoot项目-贪吃蛇对战小游戏-配置Mysql与注册登录模块2

    [Java闭关修炼]SpringBoot项目-贪吃蛇对战小游戏-配置Mysql与注册登录模块2 传统的登录验证模式 JWT登录验证方式 下载安装依赖 创建JWTUTIL JwtAuthenticati ...

  7. java awt贪吃蛇源码_JavaSE贪吃蛇源码

    [实例简介]该程序使用JavaSE技术完成,IDE工具为Eclipse,可运行,运行类为Yard 下载后请阅读先阅读readme文件 [实例截图] [核心代码] import java.awt.Col ...

  8. java贪吃蛇学期,Java实现贪吃蛇

    原文:https://www.cnblogs.com/weiXinp/p/14477510.html 游戏界面基本布局 贪吃蛇是基于JFrame的一款小游戏.它主要有两部分组成,一个是显示区域,一个是 ...

  9. 贪吃蛇项目面试C语言,【游戏数组面试题】面试问题:C语言贪吃蛇(… - 看准网...

    // 贪吃蛇.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include #include #include "iostream& ...

  10. c语言程序设计贪吃蛇需求分析,c语言贪吃蛇课程设计报告.docx

    C?语言课程设计报告 C语言课程设计报告 贪 吃 蛇 专业 学生姓名 班级 学号 完成日期 C?语言课程设计报告 一.游戏规则需求 1.?在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够 ...

最新文章

  1. 写了个牛逼的日志切面,甩锅更方便了!
  2. Java 多线程爬虫及分布式爬虫架构探索
  3. mongdb安装使用
  4. pc端vnc连接android 端
  5. mysql-日志浅析_mysql日志使用浅析
  6. oracle数据库中对varchar类型求max的解决方法
  7. CodeForces - 160D Edges in MST(思维+tarjan/树链剖分+线段树)
  8. Spring Data JPA 从入门到精通~实际工作的应用场景
  9. 【视频技术】ffmpeg截取图片(Mac)
  10. 字符设备驱动笔记——中断方式按键驱动之linux中断处理结构(五)
  11. [导入]你的网站被订阅了吗(浅谈RSS2.0)续
  12. Java集合的所有知识点详解,偏通俗易懂,集合笔记
  13. Python+SSM懂车帝汽车数据分析平台 爬虫代码实例分析
  14. codeblocks安装包和主题及中文语言包百度云下载
  15. 服务器主机是什么系统版本,服务器主机是什么系统
  16. html 的scor属性,html – 什么是css scroll-behavior属性?
  17. text edit model FELIX的理解与python实现
  18. 神经网络低比特量化——LSQ
  19. 企业招聘网络推广运营人员的岗位工作职责该如何写?
  20. Vue element 自定义表单验证(验证联系方式、邮箱、邮政编码)

热门文章

  1. Contrastive Multiview Coding
  2. bose qc25更换耳机单元
  3. [XMAN2018排位赛]ppap
  4. Kafka高频面试题:夺命10连问
  5. 推荐ietester工具 [ 光影人像 东海陈光剑 的博客 ]
  6. 【XA.DAY.4】网络安全体系与模型
  7. 稻城智慧旅游太极计算机,智慧旅游,让梦中的“香格里拉”离我们更近
  8. 用ffmpeg把yuv格式转化为mpeg格式
  9. 最新彻底禁止win10自动更新
  10. 怎么看263邮箱的服务器信息,263邮箱真的不能用,刚刚上了一当,劝大家务必注意...