haidaozhi的gravatar头像
haidaozhi2017-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动图


最代码官方编辑于2017-8-11 21:42:36

打赏

文件名:Chicktris.zip,文件大小:5961.142K下载
最代码最近下载分享源代码列表最近下载
lynette11月30日
暂无贡献等级
xia11811月7日
暂无贡献等级
LULINSHEN10月24日
暂无贡献等级
zxyxiaomanong10月10日
暂无贡献等级
simpleplan59月25日
暂无贡献等级
jizhiwei9月12日
暂无贡献等级
ASDSas8月16日
暂无贡献等级
barry20088月13日
最代码贡献等级说明
最代码最近浏览分享源代码列表最近浏览
ragdoll6661小时前
暂无贡献等级
50558014312月8日
暂无贡献等级
95628994212月5日
暂无贡献等级
sohu197912月5日
暂无贡献等级
ttc12312月2日
暂无贡献等级
lynette11月30日
暂无贡献等级
Oracle_jiangkai11月29日
暂无贡献等级
lyy19960011月27日
暂无贡献等级
kya18-11月25日
暂无贡献等级
liusansan11月22日
最代码贡献等级说明
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友