您的位置: 主页 > 人工智能学家 > 16亿港币大绑架:基于Java的飞行棋的设计与实现

16亿港币大绑架:基于Java的飞行棋的设计与实现

时间: 2019-01-11阅读:

摘要

随着科技的不断发展,越来越多的人们将玩游戏作为主要的休闲方式。飞行棋作为一款经典的小游戏,一直都很受大家的喜欢。该文章用JAVA来编写一个简单的飞行棋游戏。

【关键词】飞行棋 JAVA 界面设计 游戏地图

随着科技的不断发展,人们越来越喜欢电脑游戏或者手机游戏。作为经典游戏之一的飞行棋一直深受人们的喜欢。

相传飞行棋是中国人的发明的,是中国玩具公司生產的,据说是为了纪念二战时飞虎队的卓越功勋,是pachisi游戏的变种。飞行棋棋盘上这种转圈式的路程设计来自于空战中的“拉弗伯雷圆圈”。参加编队的飞机不但保持在一个水平面上飞行,而且可绕圆圈盘旋爬高。这样就可以利用防御队形进行盘旋以取得高度优势,伺机进行攻击。

飞行棋游戏开发是为了方便玩家在电脑上和其他玩家联网下棋,这样更加方便快捷。让更多的人参与进来。

1飞行棋规则

棋盘上有红黄蓝绿四个颜色,表示可以有四个人进行游戏。每个玩家有4架飞机,哪个玩家的4架飞机全部飞进目的地,谁就臝得了这场游戏。

在游戏地图上一共有四个状态:1、正常状态;2、碰见地雷,后退6格;3、暂停,原地停止一回合;4、营运轮盘,有6种幸运设置:前进、后退、交换位置、转移、暂停一次、奖励一次、设置地雷、轰炸(将对方飞机炸退6格)。

4个玩家按照事先约定好的顺序扔骰子,刚开始时,玩家可以连扔三次骰子,只有扔到6点,才能启动一架飞机。之后玩家按顺序扔骰子,扔到几点就顺时针走几步。在游戏过程中,只要飞机的最后落脚点落在了其他玩家的飞机上,就可以把该玩家的飞机请回停机场。在游戏进行过程中,扔得骰子点数为6的玩家可以继续扔骰子,直至骰子点数不是6或者游戏结束。飞行棋在地图上行走时,如果落在了是和自己颜色相同的格子里,可以跳到前一个和自己颜色相同的格子里。

在游戏过程中会出现“迭子”现象,所谓“迭子”现象就是一方玩家的两架及以上的飞机飞在了同一个格内,这时几架飞机会重叠式的落在一起。这时的对方玩家的飞机不能从此飞过,如果对方玩家的飞机正好落在了此格中,则对方飞机和“迭子”飞机一起请回停机场。如果所仍的骰子点数大于到达“迭子”处所需的步数,则多余步数从“迭子”处往回走剩下的格数。如果其他玩家所仍得点数为6并且他的飞机与“迭子”处的步数小于6时,此时其他玩家的飞机会停留在“迭子”处的上方,按照游戏规则,该玩家可以继续扔骰子,然后按照扔得的点数继续往前前进。如果棋子在准备通过虚线时有其他棋子停留在虚线和通往终点线路的交叉点时:A、如果对方是一个棋子,则将该棋子逐回基地,本方棋子继续行进到对岸;B、如果对方是两个棋子重叠则该棋子不能穿越虚线、必须绕行。

2飞行棋设计思路

2.1棋盘设计

参照纸质版地图来进行电子版地图设计。游戏界面设计尽量和纸质版相似,这样玩家不会觉得陌生。停机场:对应颜色的大方格就是停机场,每个玩家有4架飞机。终点:棋盘正中间的位置。每个玩家的4架飞机都飞入相应颜色的终点就赢得了游戏。骰子:正方体,六个面分别对应一个点、两个点、三个点、四个点、五个点、六个点。扔骰子面朝上的点数就是玩家走的步数。

2.2游戏设计

此游戏所使用的软件开发工具是Eclipse,所用编程语言是JAVA。主要用的是JAVA的基础图形用户界面Swing。通过Swing可以设计游戏界面,导入绘制好的图片,或者加入文字信息或者声音信息等等,并且可以结合JDBC和I/O操作进行相关的数据保存。

该游戏设计采用模块化设计方式。由实现功能来进行模块划分,把系统的主要功能划分成几个关键模块,分别加以实现。由顶层模块调用它的各个子模块来实现整个功能,而每个下层模块再调用它的子模块,以此类推。

该飞行棋程序要实现四大功能:飞机起飞,迭子情况,幸运轮盘,重新开始,游戏结束。

游戏玩家主要通过鼠标来操作,所以设置了16个对象,骰子和16架飞机,由这17个对象引发相关的操作。

该游戏主要由玩家操作鼠标完成,所以要调用MouseEvent类。MouseEvent类是公共类。这个类里封装了有关鼠标操作的相关事件,包括单击鼠标事件、拖动鼠标事件等等。首先要对17个对象添加事件监视器this.addMouseListener(this),一旦受监视的对象有相关的操作,就会引发相关的事件响应,发送MouseEvent类的实例给鼠标监视器事件用来帮助处理鼠标事件首先判断是否该玩家飞机己停止前进以及游戏是否是结束或开始状态。如果轮到玩家的飞机要落下,则首先要的到飞机落下的坐标(即鼠标单击的坐标),然后将此坐标转换成窗口坐标并调用相应的方法让飞机停在该格子当中。

JAVA编写的程序可以在网络环境下运行,主要是因为JAVA提供了两种功能强大的网络支持机制来满足不同的要求,访问网络资源的类URL和用于通讯的类Socket。URL用来访问Internet网上资源的应用,Socket用来对客户端/服务器模式的应用以及实现某些特殊的协议的应用。

客户基于服务器之间使用的大部分通讯组件都是基于Socket接口来实现的。Socket是两个程序之间进行双向数据传输的网络通讯端点,有一个地址和一个端口号来标识。每个服务程序在提供服务时都要在一个端口进行,而想使用该服务的客户机也必须连接该端口。Socket因为是基于传输层,所以它是比较原始的通讯协议机制。通过Socket的数据表现形式为字节流信息,因此通讯双方要想完成某项具体的应用则必须按双方约定的方式进行数据的格式化和解释,它具有更强的灵活性和更广泛的使用领域。

3飞行棋游戏的实现和测试

在游戏开始前必须要清理掉没有用的数据,并检查一下有没有错误的数据也一并清除,这样做的目的是为了后面的正常运行,以免引起不必要的错误。

该飞行棋游戏软件测试主要测试随意点击飞机和棋盘程序的健壮性。在游戏未开始前,随意点击飞机和棋盘都不会引起程序的崩溃或者飞机位置的更改。然后在游戏过程当中,当扔骰子之后,只能对当前玩家的飞机进行相关的操作,别的玩家的飞机不能操作。

4总结

通过完成飞行棋游戏的编写,使我更加深入的了解了系统架构和设计模式的重要性。编程之前首先要最大化的,最深入的了解客户需求,然后根据客户的需求来完成程序功能的划分。程序的模块化可以更好地去添加或删除功能。客户的功能需求通过系统的架构更加合理的组织在一起,使程序员编写代码更加有条理性,更加逻辑性。

程序编写的不足是没有进行下一步棋的时间限制,当时是因为考虑到可以边下棋边聊天,重点放在了聊天的设置编程上,而忽略了下每一步棋的时间控制。还有一个不足就是没有讲悔棋放在程序中,虽然在需求分析中提到了悔棋这个操作,但是因其开销很大,过程比较复杂,所以没有考虑进去。

参考文献

[1][美]罗林斯.[美]莫里斯著,付煜等译.游戏架构与设计[M].红旗出版社,2005.

[2]朱福喜.Java语言基础教程[M].北京:清华大学出版社,2008(04).

上一篇:汉中二球吧:高职院校网络管理系统构建方法
下一篇:没有了

相关阅读