haidaozhi的gravatar头像
haidaozhi 2017-08-08 21:56:52

java Swing开发俄罗斯方块游戏源码

代码量:1800行,简单易懂

                  java Swing开发俄罗斯方块游戏源码                 

基本规则:  

 1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为20,列高为25,以每个小正方形为单位。做为装饰的俄罗斯方块

  2、一组由4个小型正方形组成的规则图形。中文通称为方块。共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。   

  3、通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。   

  4、如果未被消除的方块堆放的高度超过场地所规定的最大高度(并不一定是25或者玩家所能见到的高度),则游戏结束。

 

操作方法:

 1. 按游戏界面的"开始"按钮来开始游戏。

  2. 键盘操作:系统缺省设置使用右边的窗口,用光标操作,"←"左移一格;"→"右移一格;"↑"旋转方块;↓ 下落方块。

  3. 计分牌显示的内容:“分数”为本局的分数,计分标准为下落一个块10分,一次消一行100分、2行400分、3行900分、4行1600分。“等级”为双方的游戏设置等级,当分数达到一定的值,等级就会提升、速度加快。

 

代码分析:

  1.model部分:里面包含了本项目的一些model,这里有三个类,Board,Cell,MyModel。首先,Board是游戏的活动区域,是一个由n*m的方块区域。然后Cell只有两个属性,x,y。他们可以指定该方块在Board的位置,它是该游戏最基本的单元。四个Cell组成一个MyModel,MyModel共有7种,分别以S、Z、L、J、I、O、T。俄罗斯方块与其他游戏有点不同,整个游戏的难点部分在model这块。一开始,我也想了很对方法去实现model的实现,方法都是非常繁琐的,最后发现,把7*4个方块model都列出来倒是最简单的。

  2.界面部分是用swing完成的,整个游戏有一个Jframe构成。欢迎界面也被嵌在这个Jframe中,当点击欢迎界面或者按任意键就使欢迎界面消失,进行游戏。在游戏界面中,有一个方块活动主区域,下一方块显示区域,记分牌,控制区域构成。

  3.控制器当然是整个项目的核心部分,在里面开始,暂停等一些简单的的方法就不做详细解释了。去操作一下timer线程就可以实现了。

  在这里移动的方法以下为例,先让model下移一格,判定当前位置是否能够移动,如果不能移动,就让model上移一格,在界面上显示当前model。判断是否能移动的方式是:根据model上四个坐标到board上面去判定,如果坐标的超出底线,或超出左右线,或者当前坐标在board上面有cell存在都表示不能移动。

  判断是否能消行的方法是遍历model四个点中的不重复的x值,利用这个x值到model中从左到右去判断那行,是否都有cell存在。如果都存在cell,那么表示能够消行。

  消行的方法为,将上面能消行的行值用一个list记录下来,遍历这个list,取出里面的行值,将该行上面的所有行下移一格,已达到消行效果。

  4.在该游戏中,加入了背景音和音效,组要用Applet接口实现。

 

java Swing开发俄罗斯方块游戏源码

gif动图


打赏

文件名:Chicktris.zip,文件大小:5961.142K 下载
最代码最近下载分享源代码列表最近下载
ClydeSon  LV5 2023年12月27日
微信网友_6699076084797440  LV7 2023年10月30日
tx1121  LV14 2023年4月9日
liangge2115  LV27 2022年12月24日
smyinger  LV1 2022年7月12日
wddd1121  LV3 2022年4月8日
闫小玥  LV8 2021年12月22日
396261  LV1 2021年12月7日
luoshun  LV3 2021年11月23日
hahhah  LV1 2021年2月22日
最代码最近浏览分享源代码列表最近浏览
ClydeSon  LV5 2023年12月27日
1112WHQ  LV7 2023年11月3日
微信网友_6699076084797440  LV7 2023年10月30日
wangjialiang1  LV17 2023年8月20日
17683946472  LV9 2023年6月8日
小安同学  LV7 2023年5月11日
tx1121  LV14 2023年4月9日
wind12 2023年3月26日
暂无贡献等级
MrReady  LV14 2023年2月5日
理工铝孩  LV1 2022年12月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友