Java-小游戏-炸弹人-课程设计-搜索算法

 项目链接Java小游戏-炸弹人-课程设计-论文-AI-其他文档类资源-CSDN下载Java小游戏-炸弹人-课程设计-论文-AI-其他文档类资源-CSDN下载项目描述:https://blog.csdn.net/qq_34060370/article/det更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_34060370/72100977

一、简介

  1.  发文目的:怀念当初在学校写代码的时光
  2.  项目时间:2019年6月大一上学期JAVA课程设计
  3.  项目亮点:BFS算法实现电脑AI 完成像小时候玩的炸弹人游戏
  4.  主要功能
  • 游戏相关:换关卡、操作玩家、AI电脑、背景音乐、数值提升
  • 游戏管理:重开、暂停/开始、退出、切换模式、音乐开关
  • 关卡管理:关卡显示、关卡界面设计
  • 知识点:BFS算法实现AI、数据结构、JavaSwing界面、paint绘图、线程

    5. 视频链接:Java炸弹人小游戏_哔哩哔哩_bilibili

二、项目文档

Java核心应用

2018-2019第二学期期末项目考试

班级:    安卓1802       

学号:    183052745      

姓名:    刘建杰        

指导老师:   曹慧       

时间:  2019625

得分:                   

目录

1.1项目设计目的... 2

1.2项目设计意义... 2

二、相关技术及工具... 2

2.1 Java. 2

2.2 BFS算法... 3

2.3 Eclipse. 3

三、系统设计及功能... 3

3.1功能需求... 3

3.2系统总体设计... 5

3.3模块设计... 5

3.4程序流程图... 6

四、系统实现及关键代码分析... 7

4.1程序运行... 7

4.2程序模块细分... 14

4.3主要功能关键代码分析... 15

五、收获与体会... 17

5.1 项目总结... 17

5.2 收获与体会... 17

一、项目目的及意义

1.1项目设计目的

1. 巩固这一学期学的java基础,为下一学期的学习做准备

2. 展现自我的想法和能力的平台,提高对这门课程更深的理解

3. 锻炼创造能力、搜集资料能力、开发能力,提升思维能力

1.2项目设计意义

我开发的这个项目是炸弹人,对我个人来说想再追忆儿时诺基亚上玩的炸弹人游戏,基于基础功能代码开发JAVA 版本,完善和创新新玩法,美化界面,引入AI。虽然是小游戏,但目标是做成完整的游戏,有游戏的许多要素,开发也是以工程为目的的开发模式,系统模块分明,功能完善。

二、相关技术及工具

2.1 Java

       Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

       我实现这个项目,使用了Java挺多内容,用多线程来实现游戏的自动寻路、用面向对象思想使项目结构分明。

2.2     BFS算法

       BFS算法全称是宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。

       我将BFS算法带入游戏中,使用在电脑玩家自动行动寻找最近的箱子,原理就是根据电脑玩家位置不断搜索地图中存在箱子的坐标,然后保存在List中再读取路线从而达到寻路AI功能。

2.3     Eclipse

       Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

       采用Eclipse作为编辑器工具是因为界面友好,结构分明,比myeclipse轻,对我来说使用起来比IDEA简单。

三、系统设计及功能

3.1功能需求

  • 操作模式
  1. 用户键盘按下释放来控制游戏人物移动和放置炸弹
  2. 用户键盘与鼠标并用

  • 大体功能

1. 玩家可以操作人物,放置炸弹

2. 放置的炸弹会爆炸,把箱子夷为平地,有几率生成道具

3. 玩家可以选择与玩家对战,还是与电脑对战

4. 玩家可以暂停,播放音乐,重开游戏

  • 游戏规则

对战中先炸死对方的玩家胜利

  • 玩家操作人物
  1. 可以根据用户操作移动
  2. 只能走草地,墙和箱子无法通过
  3. 可以放置炸弹
  4. 人物可以拾取道具,以加强自身属性

  • 关卡
  1. 关卡从写好的二维数组读取
  2. 可以切换地图

  • 电脑玩家AI
  1. 电脑自动行走,寻找最近箱子并放置炸弹
  2. 放置完炸弹立马躲避炸弹火焰范围
  3. 如此循环1,2

  • 结果

弹框判出哪方胜利

3.2系统总体设计

3.3模块设计

3.4程序流程图

1.游戏流程:

2.电脑AI流程

四、系统实现及关键代码分析

4.1程序运行

1.我们运行BombMainInterface.java类,进入游戏主界面

主界面分左右两块,左边是游戏的实时状态,右边是功能菜单

2.点击右边功能菜单的帮助按钮,弹出帮助菜单

3.可以选择不同的游戏模式,有三种,玩家对玩家,玩家对电脑,电脑对电脑

4.可以选择不同的游戏音乐播放

5.游戏运行状态

6.游戏结束界面

4.2程序模块细分

1.游戏面板的模块包

2.游戏玩家的模块包

3.游戏地图的模块包

4.游戏声音的模块包

5.游戏资源的模块包

类关系

4.3主要功能关键代码分析

1.玩家操纵玩家功能

主要类在BombConcreteImplementionPlane.java中

这是主要代码,通过监听,获取玩家输入的健值,匹配到相应的流程,更改方向属性,然后再绘图中根据相应方向更改玩家的图片显示和位置。

2.电脑AI功能

主要在BombComputerPlayer.java类中

这个类是一个线程类,一直运行,根据状态而执行不同操作,涉及到有限状态机概念,根据不同的状态来更改不同的自动模式,0状态下制定找到箱子炸的BFS路线或者行走在BFS路线中,1状态下制定寻找下一个箱子炸的BFS但是不能在火焰范围内或者行走在BFS路线中。

五、收获与体会

5.1 项目总结 

1. 完成度80%,大体完善

2. 有许多改进和增加功能方向,比如玩家设置游戏界面大小,美工。AI完成度不够,没有攻击玩家和躲避攻击功能。

3. 充分利用多线程完成AI效果

4. 利用面向对象思想 使类划分细明,更容易实现效果

5.2 收获与体会   

  1. 开发程序必须要有设计,设计游戏存在的对象,提取出属性和行为,再关联各个类之间的关系,才能写出高效和可扩展的代码
  2. 知识面太窄,需要多学习,才能扩展思维,实现更好的游戏或程序
  3. 算法以及数据结构很重要
  4. 提高写代码的效率,不能写代码10分钟,找bug1小时,太耗时间,应该先有思路再写,可在本子上先验算下
  5. 特别注意数组是引用类型的问题
  6. 提高找bug的精确性,先要理清思路,逐步跟踪,特别是可以利用eclipse中的调试功能 一步一步下去。

附件1:源程序

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘建杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值