Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能(中)

简介: 文章目录1 开发环境及游戏展示1.1 游戏主界面1.2 移动界面1.3 奖励界面1.4 F加速功能界面1.5 死亡界面2 需求分析3 系统设计3.1 系统总体功能设计3.2 系统总体流程设计4 功能设计4.1 贪吃蛇移动及加速功能设计4.2 贪吃蛇吃食物加速及死亡判定功能的设计4.2.1 贪吃蛇吃食物加速功能的设计4.2.2 贪吃蛇死亡判定功能的设计4.3 贪吃蛇主动加速功能的设计4.4 贪吃蛇奖励机制功能的设计5 项目结构与项目实现5.1 项目结构及类间关系5.2 项目完整源码5.2.1 Images类

4 功能设计

4.1 贪吃蛇移动及加速功能设计

贪吃蛇的移动功能主要依赖于选择语句和键盘监听器来实现,用W、S、A、D或↑、↓、←、→控制蛇的运动方向为上、下、左、右进行游戏。当按下F键时,蛇加速运动。




4.2 贪吃蛇吃食物加速及死亡判定功能的设计

在贪吃蛇吃食物以及死亡判定的过程中,使用到了以下参数:


Timer类的一个参数:int 类型的time,程序中调用timer.setDelay(time)方法更改定时器的参数(time越小,蛇运动越快);

记录蛇死亡与否的参数:boolean 类型的isDied(true则蛇死,false则蛇活),默认为false;

蛇的长度:int 类型的length(初始为3);

积分参数:int 类型的score(初始为0),程序中通过循环控制每吃一次食物加10分;

蛇头的坐标:int类型的snakeX[0]与snakeY[0],分别储存蛇头的横纵坐标;

蛇身的坐标:int[] 类型的snakeX[i]和snakeY[i],分别储存每一节蛇身的横纵坐标(i≠0);

食物的坐标:int 类型的foodX,foodY,分别储存食物的横纵坐标,foodX与foodY均为使用Random类中的nextInt()方法产生的随机数,故食物的坐标是随机的。

以下使用上述参数时便不再赘述。

4.2.1 贪吃蛇吃食物加速功能的设计

当蛇头的坐标snakeX[0]与snakeY[0]分别与食物的坐标foodX,foodY相等时,得分score增加10,蛇身长度length加1,Timer参数time减10,从而完成蛇吃到食物后的加分,蛇身加长及加速功能。该功能的流程设计图如下:




4.2.2 贪吃蛇死亡判定功能的设计

当贪吃蛇吃到自己的时候蛇死亡,即蛇头坐标snakeX[0]与snakeY[0]分别与蛇身坐标snakeX[i]和snakeY[i]相等时,即蛇死亡。此时isDied=!isDied。



4.3 贪吃蛇主动加速功能的设计

贪吃蛇的主动加速功能即在游戏过程中按住F键,蛇的移动速度加快,若按住后松开,则蛇的速度恢复默认值。这主要通过GUI中的键盘监听器来实现,实现了键盘监听器的两个方法,keyPressed()与keyReleased()分别监听按下F键的操作和松开F键的操作。其次用到了参数time,程序中改变time的值通过调用timer.setDelay(time)方法(timer为Timer类的一个对象)从而改变定时器的频率,达到蛇速度加快的效果。



4.4 贪吃蛇奖励机制功能的设计

贪吃蛇奖励机制功能主要使用了选择结构以及通过paintComponent(Graphics g)方法中的画笔工具来实现。当游戏达到一定的得分时,程序会调用画笔工具中的g.drawString(“XXX”,snakeX[0],snakeY[0])方法,在蛇头位置绘制出提示文字。




5 项目结构与项目实现

5.1 项目结构及类间关系


相关文章
|
2天前
|
存储 数据可视化 安全
Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术
智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。无处不在的网络学习、融合创新的网络科研、透明高效的校务治理、丰富多彩的校园文化、方便周到的校园生活。简而言之,“要做一个安全、稳定、环保、节能的校园。
19 6
|
3天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
3天前
|
JavaScript Java 测试技术
基于Java的物流配送人员车辆调度管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的物流配送人员车辆调度管理系统的设计与实现(源码+lw+部署文档+讲解等)
9 0
|
3天前
|
JavaScript Java 测试技术
基于Java的网上书城的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上书城的设计与实现(源码+lw+部署文档+讲解等)
18 0
|
3天前
|
JavaScript Java 测试技术
基于Java的网络游戏交易系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络游戏交易系统的设计与实现(源码+lw+部署文档+讲解等)
16 0
|
3天前
|
JavaScript Java 测试技术
基于Java的家政公司服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的家政公司服务平台的设计与实现(源码+lw+部署文档+讲解等)
20 1
|
3天前
|
JavaScript Java 测试技术
基于Java的怀旧唱片售卖系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的怀旧唱片售卖系统的设计与实现(源码+lw+部署文档+讲解等)
25 5
|
9天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
10天前
|
安全 Java 开发者
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第9天】本文将深入探讨Java并发编程的核心概念,包括线程安全和性能优化。我们将详细解析Java中的同步机制,包括synchronized关键字、Lock接口以及并发集合等,并探讨它们如何影响程序的性能。此外,我们还将讨论Java内存模型,以及它如何影响并发程序的行为。最后,我们将提供一些实用的并发编程技巧和最佳实践,帮助开发者编写出既线程安全又高效的Java程序。
22 3
|
9天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。