基于JAVA平台的魔塔游戏设

来源 :智能计算机与应用 | 被引量 : 0次 | 上传用户:chao1028
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  计文章编号: 2095-2163(2018)03-0235-06中图分类号: 文献标志码: A
  摘要: 关键词: (College of Information Engineering, Wenzhou Business College, Wenzhou Zhejiang 325035, China)
  Abstract: With the rise of the gaming market, various programming languages are widely used,JAVA language is the most widely used and the highest using proportion. This article takes the extremely classic magic tower game as an example, with the help of the JAVA language’s object-oriented characteristic using the programming techniques: package and inherited.
  Key words:
  作者簡介: 许益凡(1997-),男,本科生,主要研究方向:JAVA的桌面应用、前端塔建; 薛益鸽(1990-),男,硕士,助教,主要研究方向:计算智能。
  通讯作者: 收稿日期: 引言
  游戏作为大众生活必不可少的一项娱乐方式,近年来发展势头良好。开发游戏的语言有很多种,JAVA是当前最流行最热门的一种编程语言, 因其是一种可以撰写跨平台应用程序的面向对象的程序设计语言\[3\],并具有卓越的通用性、高效性和平台移植性\[2\],同时,JAVA语言在游戏开发方面,又因为其语言严谨、可读性强、高度的便利性等优势,在游戏开发中具有非常重要的地位\[3\]。
  魔塔游戏是一款策略类的RPG(角色扮演)游戏。游戏虽不大却充满难度,往往一步小小的失误就会让游戏失败,前功尽弃\[4\]。本文基于JAVA平台对魔塔游戏进行设计和开发。整个游戏在Microsoft Windows 7 64位操作系统下,利用 IntelliJ IDEA 2017.2.4 x64开发工具进行开发。游戏的菜单栏、操作栏和商品购买使用鼠标进行操作;勇士移动使用方向键上、下、左、右操作;打开/关闭怪物手册用快捷键A; 往上跳跃楼层用快捷键Z;往下跳跃楼层用快捷键X。
  1需求分析及流程
  1.1功能需求
  通过对魔塔游戏的多次试玩和深入分析,可以发现,该款游戏虽然像容易通关的地牢游戏,但每一小小的决定都影响着能否救出公主顺利通关。如图1所示,此游戏有着繁多的属性和独有的伤害计算公式,伤害所扣除的血量并不是简单地直接攻击减去防御,而是需要经过伤害次数的参与计算。伤害次数是敌人的血量除去自身攻击与敌方防御之差。最终损失的血量又是需要次数乘以敌人的攻击与自身防御之差,若损失的血量超过拥有的血量则无法攻击此怪物,此时,若不提升自身能力则会卡在这个怪物面前,导致游戏失败。
  本文设计的游戏主要涉及下列功能模块:战斗以及血量的计算模块、查看怪物手册模块、商店交易模块、游戏的存档与读取模块、重新开始游戏模块、退出游戏模块、与NPC对话模块、楼层跳转和金手指系统模块。功能结构如图2所示。
  1.2游戏整体流程
  游戏流程如下所述:游戏开始,勇士出现在魔塔的一层,没有配备装备,只被赋予了初始的属性和3把不同颜色的钥匙。勇士行动中遇到的事件如下:
  (1)获取物品。可提升勇士的攻击防御等属性,增加勇士的综合实力,同时,有机会获取到特殊物品,特殊物品具有的特殊功能对游戏进展有很大帮助。
  (2)遭遇怪物。怪物种类繁多,属性也不近相同,如“小怪物”、“士兵队长”、“蝙蝠怪”、“骷髅怪”、“法师”、“卫兵”等等。越高级的怪物属性越高,所需勇士的实力也就越高。其中,魔王是整个游戏中最强大也是最困难的一个怪物类NPC,魔王强具有强大的属性和华丽的外观,镇守着去往救助公主的通道,只有打败魔王才可以救出公主完成游戏。
  (3)遇到商店。玩家可根据自身的购买能力提升自身的属性或等级,更好地进行游戏。
  (4)NPC。在本文设计的游戏中,去除了一些购买钥匙的NPC,将其整合在商店和金手指中。同时,保留了公主这个重要角色并添加了新的剧情:击杀魔王后需解除公主手上的锁链才能将她救走,则游戏成功,否则游戏失败。流程如图3所示。
  2程序实现
  本款游戏具有以下3种特性:可靠性,即程序执行时不会出现故障;可维护性,即在不破坏玩家数据的前提下进行维护修复程序BUG;扩展性,即在原有基础上有更多的创新,使用户不产生使用疲劳,开发新的功能模块\[5\]。下面,详细介绍游戏中各功能的实现。
  2.1游戏界面的实现
  游戏界面是游戏开发的点睛之笔。本文开发的游戏界面在原版的基础上增加了金手指菜单。游戏界面由以下3个板块构成:游戏主界面,显示游戏的内容,大部分游戏的操作全在这里操作并显示;游戏控制面板,显示勇者的属性及携带的钥匙数量,并提供了保存、读取、退出、重玩游戏的按钮;游戏菜单栏,集合了所有可进行的操作,并添加了可玩性极高的金手指,给初玩者一个良好的体验。图4示出了游戏界面。
  游戏主页面中地图复杂多样、各个楼层的地图都不相同,怪物NPC也是层出不穷,因此本文将图片以数字形式储存在一个二维数组里,需要时读取该数组并“画”在界面上,不同数字代表不同图片,即代表不同的角色、不同的游戏环境。同时,也为勇士行动操作提供更好的判断。第0层地图的储存图的代码如下:   map1 = new int\[\]\[\]{
  {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
  {-1, 1, 3, 3, 3, 3, 1000, 3, 3, 3, 3, 1, -1},
  .................. }
  魔塔有很多层,每一層创建一个数组,同时,创建了一个专门用来储存初始地图的类MapPackage,以方便调用读取显示。以下是部分代码(第0、1层):
  public classSaveMap {
  public Map map;
  public int\[\]\[\] map1;
  public SaveMap() {
  map1 = new int\[\]\[\]{
  {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
  {-1, 1, 3, 3, 3, 3, 1000, 3, 3, 3, 3, 1, -1},
  ....................... };
  为了在界面上画出地图,本文首先把所有图片和怪物分类存入数组,然后根据所在楼层找到相应的二维数组,使用2个嵌套的for循环对其进行遍历,将数字与实例化的图片对象进行匹配,一个一个“画”在界面上。部分代码如下:
  importjavax.swing.*;
  public class Map {
  public MapPackge mapPackge;
  public Map() {
  mapPackge = new MapPackge();
  map = new int\[13\]\[13\];
  wall = Toolkit.getDefaultToolkit().getImage("image/05.jpg");
  ////NPC
  NPC01a = Toolkit.getDefaultToolkit().getImage("image/NPC01a.png");
  Princess = Toolkit.getDefaultToolkit().getImage("image/Princess.png");
  ////怪物ID、属性、图片
  monsters\[0\] = new Monster(49, "黄金BOSS", 1000, 500, 250, 22, 19, Toolkit.getDefaultToolkit().getImage("image/Yellow.png"));
  .............
  for (int i = 0; i < 13; i ) {
  for (int j = 0; j < 13; j ) {
  map\[i\]\[j\] = mapPackge.map1\[i\]\[j\];
  } }}
  public void DrawMap(Graphics g, JPanel i) {
  for (int z = 1; z < 12; z ) {
  for (int j = 1; j < 12; j ) {
  if (map\[z\]\[j\] == 1) {
  g.drawImage(wall, (j - 1) * 32, (z - 1) * 32, 32, 32, (ImageObserver) i);
  }
  ...........
  if (map\[z\]\[j\] >= 1000
其他文献
Part One 听力部分 (20分)    Ⅰ.听录音,选出你所听到的单词或词组。读一遍。(每小题1分,共5分)  ()1. A. Afternoon B. MorningC. Evening  ()2. A. First B. Family C. Full  ()3. A. That B. That’s C. This  ()4. A. Tom B. Tim C. Tony  ()5. A.
【重点单词点将台】  1. visit v. 参观;访问  visit后可接人或地点名词,接人时意为“拜访某人”,接地点时意为“参观某地”。例如:  He will soon visit Hong Kong. 他不久将去香港。  We visited our friends in town. 我们去看望了城里的朋友。  2. stay v. 停留;逗留  stay是不及物动词,接地点名词时,名词前
问 kind of与a kind of只有一词之差,它们有什么区别?  答 kind of意为“有几分、有点儿”,在非正式英语中(尤其是在美式英语中)常常用作副词,用来缓和说话的语气,多用于修饰形容词。例如:  I’m kind of tired. 我有点儿累了。  a kind of意为“某种、一种”,在非正式用语中表示不确切的事情。  问 go to bed与sleep都有“睡觉”的意思,它们
展览时间:2014.03.29 至06.30  展览地点:上海龙美术馆  当代艺术即“今”之艺术,但“今”之艺术如何与“古”之艺术、与历史构成对话,构成延伸与超越的关系,这成为西岸馆开馆大展及作品空间陈列安排的切入点。西岸馆开馆大展的出发点则是“开今”而“借古”,意是站在当下,在不断创造、开拓、实验的同时,把历史作为参照、对话、挑战和超越的对象。展览试图透过其中的對比性结构关系进行一种“史”的表述
2014年1月13日至3月5日,“透器·透气——2014杭州国际当代玻璃艺术展”在杭州南山路中国美术学院美术馆举行。来自于澳大利亚、美国、德国、法国、英国、中国等国内外近30位著名艺术家,用他们的经典之作为我们打开玻璃艺术的想象之门。  本次展览的发起人许江指出,“玻璃”一词,古称“流离”、“颇黎”。中国文字,从象形表意中生发形意。气态从气,流体从水,固形或木或土或金,俱有归属。玻璃从玉,正可见中
文章编号: 2095-2163(2018)03-0220-05中图分类号: 文献标志码: A  摘要: 关键词: (State Grid Penglai Power Supply Company, Shandong Penglai 265600, China)  Abstract: Ethernet powered PoE technology provides a way to directly
西文所见安托万·布德尔(Emile-Antoine Bourdelle,1861—1929)研究出版物主要集中于法语、德语、意大利语、英语世界,其中以法语最盛。在海德堡大学图书馆中,研究布德尔的著作藏量就相当宏富,大约有70余种之多,这囊括了专门研究布德尔的专著,也包含了部分涉及布德尔的研究成果。作为活跃于20世纪早期法国美术界的重要雕塑家,布德尔的艺术人生极其立体,加之其本人善于记录自己工作与生
研究背景  南极地区的风力资源极为丰富,但是风能却因环境恶劣而无法被利用。原因有二:一是固体颗粒物对扇叶的破坏,二是温度太低,冰末慢慢堆积冻结,扇叶越来越笨重,大大降低扇叶的旋转效率。本项目旨在设计一种在风能丰富但环境恶劣的情况下,有效利用风能发电并减少风力发电机损伤的装置。  研究过程  如何在恶劣环境下减少风力发电装置损伤的方法讨论  如何减少风力发电装置的损伤,我们有1个初步的设计方向:是否
课题由来  我在乡下姥姥家曾看到一大片有花的草长得非常好看,而且周围的草都有被虫咬过的痕迹,但是这种草没有被虫咬,更奇怪的是当地的牛都不吃这种青绿的草。这是一种什么草呢?为啥虫不咬牛不吃呢?回家问姥姥,姥姥告诉我,那是紫花鱼灯草,有毒。后来,我带了一些紫花鱼灯草到学校询问老师,紫花鱼灯草虫不咬、牛不吃,是不是可以用它來杀死或驱赶蔬菜害虫呢?老师鼓励我通过科学实验证明。在吴老师的鼓励下,我们的研究开
前言  2015年,是我国文物艺术品拍卖市场恢复发展的第23个年头,也是中国拍卖行业协会成立20周年暨中拍协艺委会成立15周年。  尽管20余年来经历了诸多困难和挑战,但在商务、文化、文物、标准等有关部门的悉心指导下,在业内同仁的共同努力下,我国文物艺术品拍卖的发展仍取得了历史性成绩:  一是在市场规模上取得国际地位。依托于多年来我国经济保持较高增长的背景,文物艺术品拍卖发展迅速,尤其是2009年