1. 环境配置

项目开发所使用IDE为IntelliJ IDEA,所使用图形化框架为JavaFx,项目实测在Java8环境下可以运行。

2. 概述

葫芦娃与妖怪的战斗终于迎来了最终章,今天他们要在战场上决出最后的胜负。葫芦娃一方阵容为葫芦七兄弟和老当益壮的老爷爷,而妖怪一方包括阴险狡诈的蛇精、力大无穷的蝎子精以及七只小喽啰。它们将在战场上战个痛快!!!

3. 效果图

葫芦娃大胜!!!

妖怪大胜!!!

4. 设计简介

4.1 UI设计

在项目的开发中我尽量使界面整体显示得简洁而又大方,战场使用了一个比标准格式稍大一些的国际象棋棋盘,这使得整场战斗更像是双方在心理和斗志上的一场博弈。双方一开始摆出得意拿手的阵法,然后运用智慧和勇气去击败对手!在战场的右边是整个项目的一个海报式宣传(我的初衷是希望这个海报能给人以即将观看一场盛大电影的感觉,然而最终更像是我在为某款国产手游“大作”打广告),意在告诉大家,好戏要开演了。

4.2 人物图案

我们可以看到,每一位葫芦娃战士的形象都是卡通Q版头像,而妖怪阵容里的每一位则都是穷凶极恶的动画原版形象,这也充分契合了双方的形象设定,可爱呆萌的葫芦娃和阴森可怕的妖怪们哪一方才能取得最后的胜利呢?

当每一位战士在战场上鏖战致死后,他的图像也会发生相应的变化,变成一个骷髅头(至于为什么是海贼王里的旗帜图案,别问,问就是要成为海贼王的男人!)每一个骷髅头都标志着有一位英勇的战士在这里牺牲了。

4.3 战斗设计

每一个战士都是近战肉搏大师!它们在附近没有任何敌人时会向敌人们发起无畏的冲锋;当它们与敌人面对面时,当然是狭路相逢勇者胜!然而它们也不完全是莽夫,因为无论多么强大的战士也会有疲倦的时候。每一次轮到这位战士进行活动的时候,他都有一定的可能性休息或者回避最近的敌人,这个概率会随着这位战士每一次战斗获胜而逐渐增加,而当他进行了适量的休息后又会充满斗志的继续向敌人冲锋!

特殊的设定 — “拯救世界的老爷爷”:尽管老爷爷老当益壮,坚持要加入战场,但是岁月无情,老爷爷的战斗能力还是不如年轻力壮的葫芦娃和妖怪,然而随着葫芦娃一个一个阵亡,老爷爷会因为葫芦娃牺牲前传达的斗志不断变强,如果战场上葫芦娃一方只有孤独而愤怒的老爷爷时,他将变得异常强大,很有可能以一己之力扫荡残余妖怪。

P.S. 效果图一中我们可以看到,仅剩一名葫芦娃时,老爷爷已经变得相当强劲。

当每一位战士牺牲后,他会在牺牲的位置留下一个标志死亡的骷髅头,然而这个骷髅头并不是一个具有实体的路障,任何一方的战士都可以继续在这个位置继续战斗,然而每一个骷髅头都寄托着牺牲的的战士的执念,当一名友方战士在这块区域战斗时,可以避免该战士的体力消耗(鞠躬尽瘁,死而后已)

5. 运行说明

项目打包生成jar文件可以在命令行下通过执行”java -jar XXX.jar”命令执行。

程序运行后按下键盘的”SPACE”键位,可以开始一场新的战斗,会提示选择一个位置存储本次战斗的数据,我们可以将战斗数据储存在一个文本文档中;如果在程序运行后按下键盘上的”L”键位,就会执行复盘功能,我们可以通过一个对话框选择之前存储的一场战斗数据载入战斗过程。

6. 代码设计

6.1 继承

所有战士继承自Creature类,这是在之前作业不断迭代的基础上完成的。在本项目中,我极大的丰富了每一个战士自身的各种属性,使它们变得尽可能英勇而足智多谋,而不是像阅兵走方阵一般整齐进发。

6.2 封装

各个类各司其职,合理有序的接口构建了项目所有功能。

6.3 泛型

极大的增加了程序的灵活性,使变量更容易统一的进行调用,如对不同种类的妖怪进行布阵操作。

6.4 异常处理try{

if(isGo){

Thread.sleep(rand.nextInt(500)+300);

}else{

field.stopOneRun(indexRun);

}

}catch(InterruptedExceptione){

e.printStackTrace();

}

6.5 文件IOpublicvoidsetFile(Filefile){

this.file=file;

try{

fileWriter=newFileWriter(file);

}catch(Exceptione){

e.printStackTrace();

}

}

try{

scanner=newScanner(file);

}catch(Exceptione){

e.printStackTrace();

}

6.6 多线程机制//使用锁防止多线程的资源共享问题

publicsynchronizedbooleanMove(Creaturec1,Creaturec2,Randomrand){...}

publicsynchronizedvoidFight(Creaturec1,Creaturec2,Randomrand){...}

7. 单元测试

本项目已经通过对位置改变,战场重绘等关键函数的单元测试。

java 葫芦娃.rmvb,课内资源 - 基于JAVA的葫芦娃 — 最终之战相关推荐

  1. java 图形处理_课内资源 - 基于Java实现的几何图形处理系统

    1 综述 针对<计算机图形学>课程开发的几何图形处理系统实现的功能包括:在UI界面中通过鼠标点击拖拽等方式可视化地输入二维图形的功能:编辑最近输入的二维图形的功能:裁剪直线的功能,支持的图 ...

  2. java洗衣店管理课程设计报告_课内资源 - 基于Java的洗衣店管理系统

    摘 要 随着科技的快速发展,人们的需求也是越来越多,为了方便对信息的管理我们小组就设计了一个洗衣店订单的管理系统. 洗衣店管理系统是典型的的信息管理系统,创建了六个类,分别是:Test类:Person ...

  3. java swing 组织机构_课内资源 - 基于Java Swing的小型社团成员管理系统

    一.需求分析 1.1 个人信息 学号.姓名.性别.年级.系别.专业.出生日期.联系方式.个性签名.地址.照片. 1.2 基本功能要求管理员信息管理 登录.注销功能 修改密码功能 部落成员信息管理 添加 ...

  4. java基本语法借阅_课内资源 - 基于Java和MySql实现的光盘借阅管理系统

    一.需求设计以下几个类:光盘类:用户类:借阅记录类,包括下列模块: 新建.修改.删除光盘信息 新建.修改.删除用户信息 光盘借阅/归还信息记录 查询光盘名称,用户的借阅历史 要求:基于JFrame窗体 ...

  5. 基于java酒店管理系统_课内资源 - 基于JAVA实现的互联网酒店管理系统

    1 逻辑视角 互联网酒店管理系统中,选择了分层体系结构的风格,将系统分为3层(展示层.业务逻辑层.数据层)能够很好的示意整个高层抽象.展示层包括GUI页面的实现,业务逻辑层包含业务逻辑处理的实现,数据 ...

  6. 局域网聊天程序 java MySQL_课内资源 - 基于JAVA的局域网聊天软件的设计与实现(仿制QQ)...

    一.系统分析 1.1 问题描述客户端 实现简易版的局域网聊天器 实现富文本内容聊天 智能聊天机器人 群发消息 传送文件等功能 服务器端 实现群发通知 管理聊天线程 1.2 系统功能分析客户端功能 登陆 ...

  7. 停车场管理系统 java_课内资源 - 基于JAVA的停车场管理系统

    第一章 概述 1.1 项目背景 车辆越来越多的今天,停车场只靠人工管理显然难度已经是提高很多,所以应该开发出便于管理记录的停车场管理系统来帮助对停车场进行管理. 1.2 软件定义 一款帮助停车场管理员 ...

  8. jsp mysql问卷调查_课内资源 - 基于JSP的在线调查问卷系统

    一.系统架构图 用户登入功能,由login.jsp页面和LoginServlet.java组成,页面用于填写用户名和密码:Servlet用于验证是否可以登入,如果能够登入,则将用户登入时间记录到数据库 ...

  9. java实现一元多项式减法,课内资源 - 基于C语言实现的一元多项式的计算

    一.概述 通过C语言使用链式存储结构实现一元多项式加法.减法和乘法的运算.按指数降序排列. 二.需求分析 建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式 ...

  10. java编程彩球滑梯作弊_课内资源 - 基于C++的学生成绩管理系统

    1 系统分析 1.1 学生成绩管理系统介绍 班主任管家软件以学生信息.课程信息为基础,以品行表现成绩(辅导员.班主任.班级评议成绩)和业务课程成绩为评价依据,每学期评定一次奖学金,奖学金作为学生评定各 ...

最新文章

  1. T-PAMI 2021 | 换个损失函数就能实现数据扩增?
  2. JSP标签和JSTL标签注意点
  3. 几年前的代码发现一个BUG: 整数相除结果不能默认转换为浮点数
  4. Java动态代理代码案例:使用jdk自带的Proxy只能对有接口的类进行动态代理
  5. c语言编译器不支持64位,什么编译器支持64位整数?
  6. python如何访问对象的属性_Python:从存储在字典中的对象访问对象属性
  7. 华为又遭重击:谷歌暂停提供 Android 支持,新出售手机不能使用 Google 服务
  8. 活塞发动机和喷气式发动机-绝妙的动力转换
  9. Linux学习6 脚本登录主机 数组 排序 系统负载查询命令 定期备份
  10. 高防服务器,可以防多大的ddos攻击
  11. shell脚本实战之坦克大战小游戏
  12. 王之泰201771010131《面向对象程序设计(java)》第八周学习总结
  13. 什么是敏感信息检测,敏感信息检测,安全视图 | 云效
  14. 80后,我们难忘的电视剧
  15. YGG:2021年年终回顾
  16. Ultra Librarian 的安装和使用
  17. jstree使用教程
  18. C语言程序改错和标答不同,C语言程序设计试题及答案3
  19. 网络正常,显示无Internet,Microsoft Store需要联网、无法加载页面
  20. 【AGC】SDK未经用户同意获取AndroidID问题

热门文章

  1. 什么时候线程会进入Waitting状态?
  2. element上传图片的时候额外参数
  3. Wi-Fi6移动热点功能配置
  4. Linux下如何聊天-irc,MSN,ICQ,QQ你会用了吗?
  5. #今日论文推荐#罗格斯大学王灏:保持孩子般的好奇心
  6. 在KVM虚拟机中安装Android-x86模拟器
  7. Python批量采集百度相关搜索词教程
  8. azw3怎么在iphone上打开?
  9. 扫码点餐系统开通后如何设置桌码和上传菜品?
  10. excel2007 COUNTIFS