- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
疯狂java实例-第7章 单机连连看
第7章 单机连连看
7.1 连连看游戏简介
连连看游戏,是指在一个区域内,分布着许多不同的图片,通过点击两张相同的图片并符合一定的规则消除它们的一个游戏。我们最常见的是在QQ游戏大厅里的QQ连连看,网络上也有许多各式各样的单机版连连看游戏。在游戏的过程中,可以考虑下如何使用自己掌握的程序去实现游戏的效果,并尝试去开发属于自己的连连看,这是一件十分惬意的事情。在本章中,我们将详细的教大家如何使用Java去开发一款属于自己的单机连连看。
7.2 连连看游戏原理
实现连连看游戏并不复杂,如果先了解了程序实现这个游戏的原理,那么写出程序也就是一件简单的事情了。首先,我们可以将玩游戏区域在Java程序中看作是一个二维数组对象,游戏区中可以看作是一个容器对象,二维数组中一维的值可以看作是游戏区域中x坐标的值,二维数组中二维的值可以看作是游戏区域中y坐标的值,容器根据这个二维数组去构造游戏区域。如下代码创建一个二维数组:
Object[][] array = new Object[一维的最大值][二维的最大值];
其次,当点击游戏区域的某个点时,我们可以找到该点在二维数组中对应的某个值。如果之前点击的坐标点和本次点击的坐标点,它们拥有同一张图片并且符合一定的消除规则,那么,把二维数组中对应的值设置成另外的值,再重新绘制游戏区域,就可以达到消除的效果。
最后,我们可以为游戏加入分数计算和时间计算等其他功能。下面让我们开始编写我们的连连看游戏。
7.3 创建游戏界面与游戏区域
了解了连连看游戏的实现原理后,我们可以开始编写游戏界面,并准备游戏界面的相关类,在本章中,进行游戏的区域是GamePanel,该类继承于JPanel。
7.3.1 创建游戏界面
游戏界面如图7.1所示。游戏区域中使用的是JPanel。
图7.1 游戏界面
7.3.2 游戏区域实现原理
在本章的开头提到,我们可以将游戏区看作是一个坐标。游戏区的最左上角的那一点可以看作是坐标的(0,0)点,游戏区的最上面的边就是x轴,游戏区最左面的边就是y轴。这样,我们就可以将游戏区域中的图片看作是一个二维数组,数组的一维值是x坐标的值,数组的二维值是y坐标的值,那么,当游戏中在游戏区域中选择了某一点的时候,我们就可以定位到该数组中的唯一的值,再去判断这个值并执行操作。
7.3.3 创建图片方块对象
我们首先创建一个二维数组用于表示一个游戏区域的图片,我们所需要的图片方块可以看作是一个具体的对象,因此,我们新建一个Piece类,表示为一个图片方块,这个Piece对象需要保存一些什么样的信息呢?这是我们所需要考虑的,当然,不一定一开始就把所有的属性都加入,我们可以想到的时候再往里面填充所需要的属性。一个Piece对象即一个图片方块,那么它当然会包括一个图片对象,图片占有一定的位置,那么我们需要记录它的开始的点的x坐标和y坐标,还有结束点的x坐标和y坐标,什么是Piece对象的开始坐标和结束坐标如图7.2所示。
图7.2 Piece对象的开始点与结束点
明白了什么是开始点坐标与结束点坐标之后,我们为Piece对象加入这些属性,代码如下。
代码清单:code\linkgame\src\org\crazyit\linkgame\commons\Piece.java
public class Piece {
private BufferedImage image; //保存这个方块对象的所对应的图片
private int beginX; //开始点的x坐标
private int beginY; //开始点的y坐标
private int endX; //结束点的x坐标
private int endY; //结束点的y坐标
//以下省略getter方法
}
我们为每个属性只提供getter方法,并不提供setter方法,我们可以通过构造器来构造这个对象,这个对象一旦构造完成后,它的每个属性都不允许改变,这是因为在创建游戏区域时这个方块在游戏区域中的位置已经固定,它的开始坐标与结束坐标都不再改变,更不会去改变它的图片,直到这个方块被消除。这里需要注意的是,我们这里的构造器参数并不需要提供结束点的x坐标和y坐标,这是因为结束点的x坐标和y坐标取决于开始点的坐标与图片的大小。
我们定义了一个方块对象,那么在定义一个二维数的时候,我们可以这样:
Piece[][] pieces = new Piece[length][length];
另外,我们还要添加两个属性,用于记录这个Piece对象在数组中的位置是什么,便于我们得到该对象时,很轻易的定位到它在数组的位置:
private int indexX; //该对象在数组中一维的位置
private int indexY; //
您可能关注的文档
最近下载
- 银行业专业人员资格考试银行业法律法规与综合能力分类模拟108含答案.pdf VIP
- 课件中国的行政区划全国优质课一等奖课件.ppt
- 上市股份有限责任公司章程(标准版).docx
- 兴业证券-电子行业跟踪报告:比亚迪开启全民智驾时代车载摄像头迎机遇.pdf VIP
- 2024年家庭房产分配协议书范本6篇.docx VIP
- 汽车机械制图(第二版)模拟试题及答案2套.docx VIP
- DB33T 817-2010 基础地理信息要素分类与图形表达代码.docx VIP
- 煤制合成气单位产品能源消耗限额.pdf VIP
- 第1讲:平面向量的线性运算及坐标表示.docx VIP
- 第一次中华民国教育年鉴 教科书发刊概况.pdf VIP
文档评论(0)