【经典项目】Java小游戏 —— 贪吃蛇

一、需求分析

当提到贪吃蛇游戏时,通常是指一款经典的电子游戏,玩家通过操作一个蛇在屏幕上移动,目标是吃掉各种食物并尽量避免碰撞到自己的身体或游戏区域的边界。

贪吃蛇游戏最早出现在20世纪70年代末的个人电脑上,后来在各种游戏平台上得到广泛的普及。它简单而上瘾,在过去几十年里一直是游戏界的经典之一。

游戏的规则通常是,当蛇吃到食物时,身体会变长一节,游戏的难度也会逐渐增加。如果蛇碰到自己的身体或游戏区域的边界,那么游戏就会结束。玩家可以使用方向键(上、下、左、右)来控制蛇的移动方向。

现在,贪吃蛇游戏已经有了许多不同的版本和变种,包括各种图形风格和游戏机制。它也可以在不同的平台上玩,包括个人电脑、手机、游戏机等。

如果你对贪吃蛇游戏感兴趣,可以在各大应用商店中搜索,并下载适合你设备的版本进行尝试。愿你在游戏中获得乐趣!

二、实现分析

【业务逻辑】

一、先把蛇画出来定义一下蛇的结构,用一个数组保存一堆矩形,包含蛇头(红)和蛇身(灰)。

二、蛇能动(重点)蛇移动方式:自始至终都只有蛇头在动画一个灰色的方块,位置与蛇头重叠。
将蛇头向设定的前进方向移动一格。
需要一个保存方向的变量(direction),包括:R、L、U、D。
根据方向进行移动,一次移动一个格,根据按键改方向。

三、随机投放食物需要随机食物的位置。
需要判断食物在不在蛇身上。

四、吃食物判断食物是否与蛇头重叠。
数组加一个元素(少删除一个元素就是加一个元素)。
生成新的食物。

【主要代码】

    //监听按键@Overridepublic void keyPressed(KeyEvent e) {int keyCode = e.getKeyCode();//实现空格暂停 继续if (keyCode == KeyEvent.VK_SPACE) {if (isFaild) {initSnake();} else {isStarted = !isStarted;}
//			repaint();}//实现转向else if (keyCode == KeyEvent.VK_UP && !direction.equals("D")) {direction = "U";} else if (keyCode == KeyEvent.VK_DOWN && !direction.equals("U")) {direction = "D";} else if (keyCode == KeyEvent.VK_LEFT && !direction.equals("R")) {direction = "L";} else if (keyCode == KeyEvent.VK_RIGHT && !direction.equals("L")) {direction = "R";}}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub}/** 1.定个闹钟* 2.蛇移动* 3.重画一次蛇*/@Overridepublic void actionPerformed(ActionEvent e) {timer.start();if (isStarted && !isFaild) {//移动身体for (int i = len; i > 0; i--) {snakex[i] = snakex[i - 1];snakey[i] = snakey[i - 1];}//头移动if (direction.equals("R")) {//横坐标+25snakex[0] = snakex[0] + 25;if (snakex[0] > 850) snakex[0] = 25;} else if (direction.equals("L")) {//横坐标-25snakex[0] = snakex[0] - 25;if (snakex[0] < 25) snakex[0] = 850;} else if (direction.equals("U")) {//纵坐标-25snakey[0] = snakey[0] - 25;if (snakey[0] < 75) snakey[0] = 650;} else if (direction.equals("D")) {//纵坐标+25snakey[0] = snakey[0] + 25;if (snakey[0] > 650) snakey[0] = 75;}//吃食物if (snakex[0] == foodx && snakey[0] == foody) {len++;foodx = r.nextInt(34) * 25 + 25;foody = r.nextInt(24) * 25 + 75;}//判断游戏失败for (int i = 1; i < len; i++) {if (snakex[0] == snakex[i] && snakey[0] == snakey[i]) {isFaild = true;}}}repaint();}

三、效果展示

【界面展示】

【游戏过程】 

四、完整代码

经典项目Java小游戏-贪吃蛇资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Paimon + StarRocks 极速批流一体湖仓分析

摘要&#xff1a;本文整理自阿里云智能高级开发工程师王日宇&#xff0c;在 Flink Forward Asia 2023 流式湖仓&#xff08;二&#xff09;专场的分享。本篇内容主要分为以下四部分&#xff1a; StarRocksPaimon 湖仓分析的发展历程使用 StarRocksPaimon 进行湖仓分析主要场景和…

ONLYOFFICE是一站式协作免费开源办公神器

一、前言 众所周知&#xff0c;我们工作都离不开办公软件&#xff0c;一个好的办公软件可以大幅度提高工作效率&#xff0c;就目前市场而言&#xff0c;常见的办公软件有微软的 Microsoft Office 以及国产的 WPS Office&#xff0c;微软的 Microsoft Office是付费的&#xff0…

CANoe实际项目中文件夹的规划

本人&#xff0c;之前设计了一个CANoe工程&#xff0c;由于工程设计之初没有设计好文档的归纳分类&#xff0c;导致文件查找起来非常费劲。 为了避免以后出现文件混乱&#xff0c;不可查找的问题&#xff0c;故特此归纳说明。 建立工程时&#xff1a; 第1步就应该设计好文档…

基于51单片机的加油站计费系统

基于51单片机的加油站计费系统[proteus仿真] 计费检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个108基于51单片机的加油站计费系统 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe5;&#…

“软件老兵”的新征程:从代码到方案,40岁转身更显智慧锋芒

在快速迭代的软件行业&#xff0c;许多经验丰富的软件工程师&#xff0c;随着年岁的增长&#xff0c;发现自己在纯技术领域的竞争力似乎逐渐不敌那些刚刚踏入职场的00后工程师。 面对这一挑战&#xff0c;一些“软件老兵”选择转换跑道&#xff0c;将目光投向了方案工程师这一新…

Linux同时安装多个版本的JDKlinux多版本JDK切换配置- [Centos 安装JDK]

Linux同时安装多个版本的JDK&linux多版本JDK切换配置- [Centos 安装JDK] 一、查询系统是否已经安装jdk rpm -qa|grep java 或 rpm -qa|grep jdk 或 rpm -qa|grep gcj 二、卸载已安装的jdk Centos7存在已安装的JDK1.7时&#xff0c;可以使用以下方式删除1.7的openJDK rp…

python数据类型-元组

1 元组(tuple)的定义 元组是集合类型&#xff0c;和列表类似&#xff0c;元组中的元组类型可以不同&#xff0c;元素间用逗号隔开&#xff0c;和列表的不同之处在于&#xff1a; 1 元组的元组不可改变&#xff0c;也被称为只读列表 2 且元组用括号()表示&#xff0c;列表用方括…

月入过万比打工强,在家就能做steam搬砖项目真的假的

每天都有粉丝私下跟我聊天&#xff0c;讨论Steam搬砖项目到底是不是真的&#xff0c;到底能不能做。你想让我详细说说。那么今天就和大家详细聊聊这个月入过万元的项目。 简单来说&#xff0c;Steam搬砖项目就是在国外蒸汽上采购游戏道具&#xff0c;在国内网易buff平台上销售…

MySQL 可重复读隔离级别,完全解决幻读了吗?

文章目录 前言一、什么是幻读&#xff1f;二、快照读是如何避免幻读的&#xff1f;三、当前读是如何避免幻读的&#xff1f;四、幻读被完全解决了吗&#xff1f;场景1场景2 总结 前言 MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」&#xff0c;但是它很大程度上避免幻读…

第 10 章:在C++中使用协程进行系统编程

最后一章专门介绍了一项对系统编程非常有用的功能&#xff0c;但这在C标准中相对较新。协程对象迅速找到了应用&#xff0c;成为了一等公民的状态机对象。它们的强大之处在于隐藏了协程帧后面的逻辑。请注意&#xff0c;这是一个高级主题&#xff0c;且C的协程接口既不简单也不…

交叉注意力融合2024创新方案汇总,附配套模块和代码

多模态学习和注意力机制是当前深度学习研究的热点领域之一&#xff0c;而交叉注意力融合作为这两个领域的结合点&#xff0c;具有很大的发展空间和创新机会。 作为多模态融合的一个重要组成部分&#xff0c;交叉注意力融合通过注意力机制在不同模块之间建立联系&#xff0c;促…

校招春招,在线测评一般测试哪些内容?

在校园招聘这一块&#xff0c;很多应届毕业生会相当在乎&#xff0c;对于他们来说&#xff0c;如果在学校期间就找到工作是比较轻松的事情&#xff0c;不用担心毕业之后找工作困难重重&#xff0c;可以稳稳当当毕业。但想要迅速通过招聘也不容易&#xff0c;在校招春招上面&…

2023年OceanBase开发者大会:核心内容与学习收获(附大会核心PPT下载)

本次大会邀请了众多业界领袖、技术大咖和开发者&#xff0c;共同探讨数据库领域的技术发展趋势和未来机会&#xff0c;与开发者共同探讨单机分布式、云原生、HTAP 等数据库前沿趋势&#xff0c;分享全新的产品 roadmap&#xff0c;交流场景探索和最佳实践。 一、大会核心内容 …

在服务器上下载google云端硬盘文件

遇到问题 下载谷歌硬盘&#xff08;drive.google.com开头&#xff09;的用wget不行&#xff0c;用wget说无法解析地址。 解决方法 1. 安装gdown pip install gdown2. 保存硬盘地址到我的谷歌网盘里&#xff0c;用如下右键复制的方式。 3.修改权限 右键共享处&#xff0c;…

Message Queue --- RabbitMQ

MessageQueue Intro 什么是MQ为什么使用MQ常见的MQ 什么是MQ MQ全称是Message Queue&#xff0c;消息的队列&#xff0c;因为是队列&#xff0c;所以遵循FIFO 先进先出的原则&#xff0c;它是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff0c;M…

Camera | 15.闪光灯SGM3141概述

芯片说明 SGM3141是一种电流调节降压/升压电荷泵LED驱动器&#xff0c;能够驱动700M输出电流。它非常适合为相机闪光灯应用的高亮度LED供电。SGM3141具有1/2操作模式&#xff0c;用于控制闪光和火炬模式的输出电流。 电源电压在2.7V到5.5V之间工作&#xff0c;非常适合由1芯锂…

第三百零一回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容&#xff0c;本章回中将介绍如何实现密码输入框.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍…

超级详细——手撕贪吃蛇小游戏!

目录 前言 1. Win32 API介绍 1.1 Win32 API 1.2 控制台程序 1.3 控制台屏幕上的坐标COORD 1.4 GetStdHandle 1.5 GetConsoleCursorInfo 1.6 CONSOLE_CURSOR_INFO 1.7 SetConsoleCursorInfo 1.8 SetConsoleCursorPosition 1.8 GetAsyncKeyState 2.贪吃蛇游戏设计 2.…

物联网浏览器(IoTBrowser)-Modbus协议集成和测试

Modbus协议在应用中一般用来与PLC或者其他硬件设备通讯&#xff0c;Modbus集成到IoTBrowser使用串口插件模式开发&#xff0c;不同的是采用命令函数&#xff0c;具体可以参考前面几篇文章。目前示例实现了Modbus-Rtu和Modbus-Tcp两种&#xff0c;通过js可以与Modbus进行通讯控制…

【EI会议征稿中|ACM出版】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​

#先投稿&#xff0c;先送审#ACM出版#第三届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 2024年3月8日-10日 | 中国济南 会议官网&…