JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一)

2023-11-10

JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一)

JAVA课程设计(小游戏贪吃蛇)完整源码附素材(二)

JAVA课程设计(小游戏贪吃蛇)完整源码附素材(三)


前言

此文章仅代表个人平时的学习知识分享,希望能帮助到大家,如果对大家有用给个点赞+加关注谢谢!(如果有问题请在评论区指出,我会给予回复)。

一、任务描述

1.1  课程设计目的

本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践。主要目的包括但不限于:

(1)综合使用各种图形用户界面设计组件,实现常见的功能,熟悉这些组件的使用方法,如选择框,下拉列表框。

(2)掌握一个的界面布局管理技术。

(3)掌握通过互联网查找资料的能力。

1.2  课程设计内容和要求

根据以前小时候经常喜爱的小游戏贪吃蛇的游戏模式、游戏内容和游戏特色设计了本次的课程设计内容贪吃蛇游戏,因为本身也是一个比较简单的游戏,内容并不是非常的复杂,因此这次课程设计我们实现了贪吃蛇游戏的一些基本游戏内容:

1、设置了三种游戏难度(简单、困难和地狱)依据小蛇移动速度快慢实现。

2、设置了两种模式(穿墙模式和撞墙模式)依据是否设置边界条件实现。

3、设置游戏的吃到食物的个数计数和分数计数。

4、设置了游戏失败的判断(在撞墙模式下撞墙和蛇头碰到蛇的身体)。

5、设置了图片的读入使整个游戏界面更加美观、同时设置了背景音乐。

本程序设计就是依照这些内容构建了一款简单而充满童年回忆的小游戏贪吃蛇。

二、系统分析与设计

2.1 系统总体结构

本系统共包括3个Java源文件。

类之间的关系如图1所示。

图1  类之间的关系

2.2 模块功能设计

Java源文件及其功能如表1所示。

表1  文件清单

序号

文件名

主要功能

备注

1

Music.java

背景音乐

2

Snakefrm.java

创建贪吃蛇游戏的“主窗口”

包含main方法

3

SnakePanel.java

游戏类构建和实现游戏的各种功能


三、源代码

3.1 主类Snakefrm

package snake;

import javax.swing.*;
import java.awt.*;
public class Snakefrm extends JFrame {
//继承顶层框架JFrame类
public Snakefrm(){
//在主窗口添加游戏主体,实例化SnakePanel对象,自动调用构造方法
    add(new SnakePanel());
    //给主窗口添加标题
    setTitle("贪吃蛇");
    //设置床体大小
    setSize(900,710);
    //关闭按钮
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //获取屏幕分辨率 宽
    int screen_width = Toolkit.getDefaultToolkit().getScreenSize().width;
    //获取屏幕分辨率 高
    int screen_height = Toolkit.getDefaultToolkit().getScreenSize().height;
    //使屏幕居中
    setLocation((screen_width-900),(screen_height-710));
    //使窗体大小不能改变
    setResizable(false);
    //使窗体可见
    setVisible(true);
    }


public static void main(String[] args) {
//实例化Snakefrm对象,自动调用Snakefrm构造方法
     new Snakefrm();

     //背景音乐启动
     Music audioPlayWave = new Music("bgm.wav");
     // 开音乐 
     audioPlayWave.start();
 
    }
}

总结

第一部分主要设计主类,大家可以根据注释理解代码。

文件链接:https://pan.xunlei.com/s/VN5FvNn_b3B9i_W878U2nddgA1
提取码:4yaj

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一) 的相关文章

  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • HDMI PL驱动开发记录

    在Zynq UltraScale example的基础上 舍弃掉在PS端做驱动的方案 在PS端搭建工程 并利用串口进行配置 对于多路HDMI的不同输入输出控制起来较为方便 且利用PL来做驱动 结构更加清晰 在做HDMI驱动的时候要了解两个重
  • 回归模型的变量筛选与预测

    我眼中的回归变量筛选 变量筛选是回归建模过程关键的一步 由于变量间的相关性 必然会导致不同的筛选方法得到不同的模型 在所有变量筛选方法中 向前法 向后法以及逐步回归法的使用频率较高 因为这类方法操作简单 运算速度快 非常实用 这种方法选出的
  • java获取url锚点_定位与锚点

    文档流 普通流 上至下 左至右 浮动流 元素添加了float 定位流 添加了定位属性 定位 position static 默认值 absolute 绝对定位 脱离文档流 不占位 默认参考浏览器零点 relative 相对定位 占据文档流
  • c# 得到list符合某条件的索引值,排序

    请教 在List集合中怎么得到元素的索引值 参考 http www myexception cn c sharp 385022 html 这个可以用来读取窗口的多个textbox控件中内容 1 解决方案 2 你可以使用FindIndex方法
  • Centos8 部署 Mysql8.0及主从复制

    1 拉取镜像 root VM 24 9 centos docker pull mysql 如需拉取置指定版本镜像加上 版本号即可 root VM 24 9 centos docker pull mysql 7 6 1 创建本地文件用于挂载
  • C++ 异常处理

    C 异常 Exception 是指在程序运行时产生的特殊情况 例如 尝试除以零的操作 异常提供了一种转移程序控制权的方式 异常处理涉及到三个关键字 try catch throw throw 当问题出现时 程序会抛出一个异常 这是通过使用
  • VUE 定时请求接口数据

    1 设置定时器 mounted this timer setInterval function 执行内容 60000 2 清除定时器 beforeDestroy clearInterval this timer
  • Android平台深度学习--NNAPI

    转自 http blog sina com cn s blog 602f87700102y62v html 1 Android 8 1 API 27 NNAPI 人工智能神经网络API 如 TensorFlow 神经网络 API 能够向设备
  • Java的动态代理Proxy

    动态代理类是实现在运行时指定的接口列表的类 这样通过类实例上的一个接口的方法调用将被编码并通过统一接口分派到另一个对象 先问一个问题 数据库操作需要以下流程 获取数据库连接 gt 执行sql gt 提交事务 gt 异常回滚事务 gt 释放连
  • Java 异常之 RuntimeException和Exception的区别

    在java的异常类体系中 Error和RuntimeException是非检查型异常 其他的都是检查型异常 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不可以在不声明的情况下抛出非RuntimeE
  • C语言指针的赋值和初始化的看法

    https blog csdn net liuchunjie11 article details 80333224 在查看上述博客时 修改代码 include
  • Spring——事务注解@Transactional【建议收藏】

    在某些业务场景下 如果一个请求中 需要同时写入多张表的数据或者执行多条sql 为了保证操作的原子性 要么同时成功 要么同时失败 避免数据不一致的情况 我们一般都会用到事务 Spring框架下 我们经常会使用 Transactional注解来
  • 级数求和的八个公式_逐渐硬核的函数展开——洛朗级数、Mittag-Leffler和Weierstrass定理...

    从幂级数到洛朗级数 在传统微积分的范畴内 幂级数 是一个非常有效的函数近似工具 它不仅能够帮助我们为函数找出合适的多项式近似 还能够有效地解决极限里一类未定式问题 然而幂级数也有它的局限性 它只能在全纯函数的解析点处展开 而且很多时候都无法
  • sklearn库中的标准数据集及基本功能

    sklearn库 sklearn是scikit learn的简称 是一个基于Python的第三方模块 sklearn库集成了一些常用的机器学习方法 在进行机器学习任务是 并不需要实现算法 只需要简单的调用sklearn库中提供的模块就能完成
  • 双端链表的增加,删除,修改,遍历操作的实现

    package com yg linkedList author GeQiLin date 2020 2 21 13 46 public class DoubleLinkedListDemo public static void main
  • PCB电路板原理图中VCC、VDD、VEE、VSS、VBAT各表示什么意思?

    PCB电路板原理图中VCC VDD VEE VSS VBAT各表示什么意思 一 名词解析 1 VCC C circuit 表示电路的意思 即接入电路的电压 2 VDD D device 表示器件的意思 即器件内部的工作电压 3 VSS S
  • linux 多块磁盘挂一个文件夹,Linux单目录挂载多块磁盘

    Linux将多块磁盘挂载到一个目录 特此记录 方便以后使用 服务器需要保存大量图片 内含4块2T的磁盘 需要将磁盘挂载到影像目录 单块磁盘挂载比较简单 创建分区 格式化分区 挂载 同一目录无法重复挂载 后挂载的会覆盖之前挂载的磁盘 但是现在
  • python强化学习--gym安装与使用

    最近开始学习强化学习 第一步肯定是要学会安装和使用pym 原本以为很简单 事实上确实很简单 但是遇到一个小问题 就是安装gym之后 在应用的过程中 游戏界面没有显示出来 了解后才知道是gym版本不对 一种可用的版本匹配是 python 3
  • 前端面试题汇总

    总结一下前端面试官会经常问到的一些面试题 目录 总结一下前端面试官会经常问到的一些面试题 一阶段 HTML5 CSS3 隐藏页面中某个元素的办法 区别 请说明 px em rem vw vh rpx 等单位的特性 什么是 BFC 盒子模型总
  • JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一)

    JAVA课程设计 小游戏贪吃蛇 完整源码附素材 一 JAVA课程设计 小游戏贪吃蛇 完整源码附素材 二 JAVA课程设计 小游戏贪吃蛇 完整源码附素材 三 文章目录 前言 一 任务描述 1 1 课程设计目的 1 2 课程设计内容和要求 二