连连看游戏的设计与实现

合集下载

基于java的连连看游戏设计与实现的研究报告

基于java的连连看游戏设计与实现的研究报告

基于java的连连看游戏设计与实现的研究报告随着信息化时代的发展和互联网的普及,网络游戏成为现代生活的重要组成部分之一,连连看游戏作为其中的佼佼者一直深受玩家们的喜爱。

本次研究以Java语言为基础,设计并实现了一款基于图形用户界面的连连看游戏,从游戏设计、编程实现以及测试三个方面进行详细介绍。

一、游戏设计该连连看游戏设计的基础是二维数组。

玩家通过鼠标点击选择两个同样的图片,连接它们的线路不能经过其他图标,且路径短优先。

游戏共18个关卡,每个关卡的难度依次递增,并拥有不同主题的图片素材。

二、编程实现该游戏使用Java Swing绘制图形用户界面,整个游戏主要包括五个类:Main、Game、Node、Action、Panel。

1.Main类:主要作用为程序入口。

通过创建Game对象启动游戏。

2.Game类:游戏类。

在该类中主要完成游戏的初始化、监听器、关卡切换、连通性判断等操作。

3.Node类:节点类。

主要用于表示每一个图标,包括坐标以及图标种类等信息。

4.Action类:动作类。

主要用于计算玩家所选的两点是否可以连通。

5.Panel类:面板类。

界面主要交由Panel完成。

在该类中完成了界面布局、游戏信息展示等工作。

三、测试在游戏的测试过程中,主要测试了游戏的各个关卡能否正常切换和连通性判断能否正常运行。

此外,还通过在不同操作系统和不同分辨率下的测试,保证了游戏适用性和兼容性。

四、总结本次研究成功地设计并实现了一款基于Java的连连看游戏。

通过该游戏的设计与实现过程,进一步深入了解了Java编程语言以及Swing界面库的应用与优势。

最终测试结果表明,该游戏在各种操作系统和分辨率下均表现出良好的兼容性和适用性,可供广大玩家使用。

但仍有一些不足之处,需要进一步完善和优化。

在本次基于Java的连连看游戏设计与实现研究中,我们对玩家游戏数据进行了收集与分析。

具体数据如下:1. 游戏总胜利次数:1022. 最高得分:97633. 游戏失败次数:464. 游戏累计时间:20小时15分通过对这些游戏数据的分析,我们可以得出以下结论:1. 游戏整体受欢迎度较高,玩家胜利次数较多。

幼儿园益智游戏-连连看教案 幼儿园益智游戏教育

幼儿园益智游戏-连连看教案 幼儿园益智游戏教育

幼儿园益智游戏-连连看教案一、引言幼儿期是孩子个性和思维发展的重要时期,益智游戏对于幼儿的认知和智力发展起着至关重要的作用。

连连看作为一种益智类游戏,既有利于培养幼儿的专注力和观察力,又能锻炼幼儿的逻辑思维和手眼协调能力。

今天,我们将为大家共享一份幼儿园益智游戏-连连看的教案,希望能够帮助到广大幼儿教育工作者。

二、教案内容1. 游戏名称:连连看2. 适用芳龄:3-6岁3. 教学目标:- 帮助幼儿认识各种不同的图案和图形- 锻炼幼儿的观察力和专注力- 培养幼儿的逻辑思维能力- 提高幼儿的手眼协调能力4. 教学准备:- 连连看游戏卡片或者电子连连看游戏软件- 幼儿园教室或者游戏室5. 教学步骤:第一步:介绍规则- 向幼儿简单介绍连连看的规则,即通过连接两个相同的图案来消除所有图案,直至全部清空为止。

第二步:示范操作- 教师首先进行一次示范,让幼儿清楚游戏的操作方法和要点。

第三步:分组游戏- 将幼儿分成小组,每组4-5人。

让幼儿相互协作,通过连连看游戏进行比赛,可以设置时间限制,比如5分钟内清空的小组获胜。

第四步:总结讨论- 游戏结束后,教师与孩子们一起总结游戏过程中的一些技巧和经验,并让孩子们共享他们在游戏中的收获和感受。

6. 教学效果评价:- 观察幼儿在游戏中的表现,包括专注力、观察力、逻辑思维和手眼协调能力等方面的表现- 收集并分析幼儿在游戏中的反馈和意见,对教学效果进行评价和改进三、教学总结连连看教案的实施,可以有效地促进幼儿的认知发展和智力发展,同时也能够培养幼儿的合作意识和团队精神。

通过这样的益智游戏,可以让幼儿在快乐中学习,激发他们的学习兴趣和动手能力,从而为他们未来的学习打下坚实的基础。

在引导幼儿进行益智游戏时,教师们也需要注重引导和管理,确保游戏的进行符合教育教学的目的,避免幼儿过度沉迷游戏而影响学习和生活。

幼儿园益智游戏-连连看教案的实施对于幼儿的全面发展具有积极的促进作用,同时也要注重教师的引导和管理。

基于Android的连连看游戏的设计与实现毕业论文

基于Android的连连看游戏的设计与实现毕业论文
游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民在选择空间狭小的同时,也必须明确的一点就是游戏本身所具有的强大的吸引力。它在让玩家打发时间的同时,可以让人实现在显示生活中不能实现的理想,得到在现实中不能得到的东西。而且游戏产业促动高科技技术不断升级,作为经济增长的一大支撑点,已经成为经济腾飞的“第四产业”。
Android在Linux核心的基础上,提供了各种合用的函数库,和一个完整的应用程式框架。并采用较符合商用限制的Apache版权。在Linux核心的基础上提供Google自制的应用程式运行环境(称作Dalvik,与Sun的J2ME不同),并提供基于Eclipse整合开发环境(IDE)的免费、跨平台(Windows、Mac OS X、Linux)开发工具(SDK),便于应用程式开发者学习、使用。免费、熟悉的跨平台开发工具,让具备一些物件导向观念,或视窗程式开发经验的开发者,能在一定时间内上手。1000万美元的大奖赛则提供了足够的诱因,让第一支Android手机正式面市前,就拥有了各式各样的应用程式可供使用。从不同角度来说,Android代表着一个崭新的开放原始码作业系统平台、一个友善的免费应用程式开发环境、一个与世界各地的程式开发者,站在相同起跑点上的公平竞争机会。而连连看作为一款经典的益智小游戏,一直以来都被众多的游戏爱好者喜欢,这个游戏,男女老少皆宜。游戏的吸引力主要在于,它在让玩家打发时间的同时,可以让人实现在显示生活中不能实现的理想,得到在现实中不能得到的东西。
参考文献………………………………………………………………..….…………………………..…39
第1章
2007年11月由Google牵头有30多家移动技术和无线应用领域领先企业组成的开放手机联盟(openHandset Alliance)发布了其智能手机平台——Android。Android是一个真正意义上的开放性移动设备综合平台,它包括操作系统、用户界面、中间件和应用程序,拥有移动电话工作所需的全部软件,同时其开放性保证该平台不存在任何阻碍移动产业创新的专有权障碍。

幼儿园大班教案《连连看》3篇

幼儿园大班教案《连连看》3篇

幼儿园大班教案《连连看》3篇幼儿园大班教案《连连看》1活动目标:1.有参与操作活动的兴趣,体验在探索中创作的快乐;2.大胆尝试几种常见的连接方法,发现物体间的连接有的需要辅助物,有的不需要辅助物;3.能积极参与各种连接的游戏,分享连接的经验。

活动准备:经验准备:了解自己身边物体的连接。

物质准备:彩带、纸条、拼插玩具、穿线玩具、彩色笔、吸管等生活中常见物品;回形针、夹子、双面胶、胶水、绳子等辅助材料;音乐《火车开了》;图片。

活动过程:一、搭火车连接引入活动——身体连连看1.在开火车的音乐下入场孩子们,我们一起来开火车吧!(伴随音乐,幼儿双手搭在小朋友肩上连成一列长长的火车。

)提问:我们是怎样搭成长长的一列火车的?小结:一个一个地相互连在一起就是连接,我们身边有许多都可以相互连接。

2.幼儿玩身体连接游戏教师:连连看,连连看。

幼儿:连什么?教师指令:手指手指连连看;小脚小脚连连看;手背手背连连看。

二、尝试相同物体的连接——同类连连看1.幼儿自主选择材料尝试用多种方法连接小朋友们看,桌子上的玩具宝贝也想来玩好玩的连连看游戏,你们能帮它们把相同的物品连一连吗?想一想它们可以怎样连接起来?2.交流分享,个别幼儿展示作品并介绍。

重点探讨几种连接方法,如:接插、串、夹、系等提问:你把什么东西连接起来了?用什么方法连的?3.对不同的连接现象进行分类我们在操作中发现了一个有趣的现象,有的物体能连接,有的物体不能连接;能连接的物体中有的物体连接需要辅助物,有的物体连接不需要辅助物。

现在我们来分一分,将不需要辅助物连接的物品放在一起,需要辅助物的放在一起。

提问:请小朋友仔细观察,哪些需要辅助物才能连接,哪些不需要辅助物就能连接,为什么?三、尝试不用辅助物的连接——创意连连看1.运用纸条操作连接刚才,小朋友都是用辅助物把纸条连接起来的,那纸条不用辅助物能连接吗?这一次,请你们来做一个更有趣的游戏叫“创意连连看”,你们要动动小脑筋,自己试试用什么方法把纸条连接起来,看看谁的方法最有创意。

【精品完整版】毕业设计(论文)报告连连看游戏的设计与实现

【精品完整版】毕业设计(论文)报告连连看游戏的设计与实现

毕业设计(论文)报告系别计算机科学技术专业计算机应用班级姓名学号设计(论文)题目连连看游戏的设计与实现指导教师起迄日期连连看游戏的设计与实现摘要本文用VisualC++来设计与实现简单的连连看游戏的基本功能,玩家可以在游戏区域中通过键盘控制来选取相同的两个物件,采用特定的消除规则对它们进行消除的操作,当游戏区域中的所有方块对都被消除后玩家即可胜利。

本次课程设计对该游戏的算法以及游戏图案的绘制进行详细的介绍。

运用连线相消的方法完成了连连看游戏。

关键词:VisualC++6.0;连连看;游戏;3D绘图1 引言1.1连连看游戏介绍游戏“连连看”顾名思义就是找出相关联的东西,它来源于街机游戏《四川麻将》和《中国龙》,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,一个叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。

饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。

之后村子的连连看风靡版,阿达的连连看奥运版,连连看反恐版,还有敏敏连连看,水晶连连看等遍地开花,造就了一个连连看的新世界。

连连看游戏有多种地图样式和道具系统、大大加强了游戏的可玩性,是一款老少皆宜的休闲佳品。

1.2课程设计的目的网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。

另外也想通过本次课程设计将三年来所学的专业知识和其他方面的知识融入到实际应用中。

1.3主要问题开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同且图片之间路径的判断。

1.4课题实现技术的简要说明Visual C++是一个功能强大的可视化软件开发工具,Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。

幼儿园大班教案《连连看》含反思

幼儿园大班教案《连连看》含反思

幼儿园大班教案《连连看》含反思一、教学背景本教学设计适用于幼儿园大班,针对幼儿园大班儿童的认知能力和动手能力,通过连连看游戏来进行启蒙教育。

教学目的是培养幼儿园大班儿童的观察能力和动手能力,加强幼儿园大班儿童的团队意识和合作能力,提高幼儿园大班儿童的自信心和快乐学习的态度。

二、教学目标知识目标1.能够通过观察能力和动手能力,完成基本的连连看游戏。

2.能够根据游戏规则,正确选择相连的图案进行消除。

3.能够理解和表达游戏规则,与小组成员合作,共同完成游戏。

能力目标1.能够观察和辨认图案,提高视觉辨识能力。

2.能够通过游戏,培养动手能力和反应能力。

3.能够与团队成员配合,增强团队意识和合作能力。

情感目标1.激发幼儿园大班儿童学习兴趣和乐趣,增强快乐学习的态度。

2.培养幼儿园大班儿童的自信心和自我表达能力,促进情感和谐发展。

3.培养幼儿园大班儿童的团队意识和合作精神,促进集体互助和感情交流。

三、教学过程1. 导入(5分钟)在课堂上,老师会先介绍游戏玩法和规则,然后通过PPT或者实物操作等方式进行示范。

2. 试玩(5分钟)让幼儿园大班儿童先试玩一段时间,让他们通过游戏体验,提高他们的兴趣。

3. 团队游戏(30分钟)将幼儿园大班儿童分成几组,每组2-4人不等。

按照玩家规则让他们就选手轮流进行连连看游戏,游戏结束后,组内积分最高的团队为胜利。

4. 总结反思(10分钟)回收并计算每组的积分,老师在此时可以对游戏进行总结反思和未来更优的改进方法。

四、教学资源1.实物道具:具体样式可根据幼儿年龄和教学需要适当调整,比如可以用图样卡牌等。

2.PPT展示课程内容和规则。

3.实际操作设备:根据实际需要,可以采用电脑、平板或手游客户端等。

五、教学评估评估总结主要包括两个方面的内容:1.儿童对连连看游戏的情况:主要包括理解游戏规则和玩法、完成游戏物品的查找、完成游戏任务(如过关等)等方面。

2.教学效果评估:包括对幼儿园大班儿童评估和教师自我评估两部分,主要体现在教学效果(是否达到预期目标)、教学组织、教师评估等。

连连看游戏分析设计与实现

连连看游戏分析设计与实现

连连看游戏分析设计与实现1.连连看(picture matching)游戏简介连连看游戏界面上均匀分布2N个尺寸相同的图片,每张图片在游戏中都会出现偶数次,游戏玩家需要依次找到两张相同的图片,而且这两张图片之间只用横线、竖线相连(连线上不能有其他图片),并且连线的条数不超过3条,那么游戏会消除这两个图片。

连连看是一款广受欢迎的小游戏,它具有玩法简单、耗时少等特征,尤其适合广大白领女性在办公室里休闲、放松。

2.分析连连看连连看是一个小的、简单的游戏程序,所以不需要大量的分析。

首先,我们列出用例。

用例不多。

有:用户开始游戏,用户进行配对图片。

图1.连连看用例图下一步就是为每个用例和相关场景写一个文本描述。

连连看相当简单,只有一个参与者,就是游戏玩家。

在使用这个程序的过程中也不会碰到出错的情况,所以场景也很短。

开始游戏的场景:玩家打开应用程序,点击“开始”按钮,会生成三种不同的图片排列方式(矩阵、竖向、横向排列)。

配对图片的场景:玩家对图片进行配对,配好后会消除这对图片。

当在规定的时间内配对完所有图片时,弹出胜利对话框,否则弹出失败对话框。

尽管只有2个简单用例,但它们确实揭示了我们所需完成的任务的重要方面。

大的应用程序会有更多的用例,有些更为复杂,有些一样简单。

用例导致了场景。

场景通常要比这个例子中的复杂,反映了在某项特征或功能上,用户和开发者之间的更为细节化的合约。

每个场景所需的细节程序取决于许多方面,但将场景写下来有助于确保每个人理解系统应该完成什么任务。

我们在连连看的用例和场景的呈现上不是太正规。

有时,这种非正规的方式和几张纸或白板就足够了。

更为正规的面向对象方法学在确定用例及相应场景方面有更正规的做法,也提供了特定的软件来创建和跟踪用例和场景。

3.(分析阶段)发现对象、属性和操作通过阅读问题描述以及实际情况,我们得到以下名词清单:图片,游戏视图,图片的排列方式,服务组件。

包图通过对问题的声明的名词进行分析,我们得到游戏的包图:图2,连连看包图其中util包负责与图片加载有关的处理,view包负责呈现界面,Object包是整个游戏的配置参数,impl是图片的排列方式,board包含了整个游戏的面板类。

幼儿园大班教案《连连看》含反思

幼儿园大班教案《连连看》含反思

幼儿园大班教案《连连看》含反思《连连看》幼儿园大班教案一、教学目标:1. 让孩子们通过游戏感知图形的基本形状和颜色。

2. 加强孩子们的察看力、注意力和思维本领,培育孩子们的耐性和集中注意力的本领。

3. 提高孩子们的团队合作意识和沟通本领。

二、教学准备:1. 游戏材料:20张连连看的图片卡片。

2. 课堂环境:宽敞光亮的教室、数码白板3. 教具:计时器、标志物、音乐播放器三、教学过程:1. 教学介绍老师向同学介绍了今日的活动内容:“我们今日要一起玩一个游戏叫‘连连看,这是一个需要大家思考和合作的游戏。

我们会分成小组进行游戏,每个小组有两个人,你们需要通过察看和思考,找出相同的图片并除去它们。

你们准备好了吗?”2. 游戏规定老师向同学说明游戏规定:“这个游戏有20张卡片,每张卡片上都有一些图形。

你们需要用最短的时间,通过察看和思考,找出相同的图片并除去它们。

当你们找到相同的图片后,请用标志物放在上面,然后告知老师。

每个小组中,首先把全部图案除去的那一组,就是胜利组。

希望你们能够在游戏中好好思考,好好合作。

”3. 游戏流程步骤一:将全部的图片卡片混在一起,洒在地上或桌子上。

步骤二:每个小组选出一名队员担负测量时间和记录时间的摇表员。

另一名队员则负责找相同的图片。

步骤三:老师打开计时器,开始游戏。

每个小组有90秒钟的时间找寻相同的图片。

步骤四:当小组找到相同的图片后,请用标志物标记上,然后告知老师。

假如图片是相同的,老师会予以正确的答案,并由协调员除去。

步骤五:在90秒钟内,全部小组需要找到全部的相同图片并除去它们。

首先除去完全部图片的小组胜出。

步骤六:游戏结束后,老师和同学一起进行游戏反思。

四、游戏反思1. 游戏过程中,你们有碰到一些困难吗?你们是如何解决的?2. 你们和队友之间是怎么样协调搭配的?3. 你们在找寻相同图片的过程中学到了什么?五、教学小结:通过《连连看》的游戏活动,孩子们不仅学习了用眼睛察看问题,品尝了不同的游戏乐趣,还磨练了运动、沟通和团队协作本领,增长了学问储备,提高了动手本领。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

苏州高博软件技术职业学院学生毕业设计(论文)报告系别计算机科学技术专业计算机应用班级1310计应YZ姓名支峰学号013321018设计(论文)题目连连看游戏的设计与实现指导教师贺雪梅起迄日期2015年10月16日-2016年4月25日连连看游戏的设计与实现摘要本文用VisualC++来设计与实现简单的连连看游戏的基本功能,玩家可以在游戏区域中通过键盘控制来选取相同的两个物件,采用特定的消除规则对它们进行消除的操作,当游戏区域中的所有方块对都被消除后玩家即可胜利。

本次课程设计对该游戏的算法以及游戏图案的绘制进行详细的介绍。

运用连线相消的方法完成了连连看游戏。

关键词:VisualC++6.0;连连看;游戏;3D绘图1 引言1.1连连看游戏介绍游戏“连连看”顾名思义就是找出相关联的东西,它来源于街机游戏《四川麻将》和《中国龙》,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,一个叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。

饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。

之后村子的连连看风靡版,阿达的连连看奥运版,连连看反恐版,还有敏敏连连看,水晶连连看等遍地开花,造就了一个连连看的新世界。

连连看游戏有多种地图样式和道具系统、大大加强了游戏的可玩性,是一款老少皆宜的休闲佳品。

1.2课程设计的目的网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。

另外也想通过本次课程设计将三年来所学的专业知识和其他方面的知识融入到实际应用中。

1.3主要问题开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同且图片之间路径的判断。

1.4课题实现技术的简要说明Visual C++是一个功能强大的可视化软件开发工具,Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。

Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。

这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

Visual C++一直被认为是目前最好的软件开发工具之一,其在界面开发、执行速度、代码的移植性方面都有很强的优势。

所以,实现本系统,VC++是一个相对较好的选择。

2 系统需求分析整个游戏程序包括了进入记录,图片消去和过关结果三个阶段,在处理鼠标响应事件中伴随着3D绘图。

程序通过调试运行,实现了设计目标,能够满足连连看游戏玩家的需要。

2.1 可行性分析(1)技术可行性分析技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。

连连看系统的工作主要是在开发者和玩家之间架起一座桥梁,能相互沟通信息和处理信息。

这一特点非常适合计算机特点,通过网络Internet技术,发挥计算机的信息传输速度快、准确度高的优势。

计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。

(2)社会可行性分析社会可行性有时也称为操作可行性,主要论证新系统在玩家在游戏过程中的感受与反馈信息。

在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新使得游戏更加的易掌握。

2.2 功能需求分析关于连连看的功能描述如下:运行游戏并进行初始化工作,将整个游戏区域分成纵向和横向扩展的若干个小方块,并且这些小方块是由多种动物图案成对地分布于游戏区域的不同位置。

玩家可以通过选取相同的两个物件来对它们进行消除的操作,直到将游戏区域中的所有方块对都被消除后为胜利。

2.3 性能需求分析(1)硬件环境●处理器:Inter CR300或是更高。

●内存:128MB(建议196MB)。

●硬盘空间:20MB。

(2)软件环境●操作系统:Windows 98 或是Windows 2000/Windows NT Server 4.0。

3 系统设计3.1系统功能设计连连看系统的设计流程图如图3.1所示。

图3.1 连连看游戏的设计流程图3.2系统功能模块总设计这个游戏的主要类是游戏模式类,类名为CLinkToLinkDlg 。

这个类主要对包括图案方块的销毁判断,游戏胜利判断以及整个游戏用户交换功能的实现。

它游戏框架的搭建菜单的制作连线相消算法的设计绘图界面的设计连连看系统的图如图3.2所示。

CLinkToLinkDlgm_mem3DBkDC :CDCm_mem3DBkBmp :Cbitmapm_memAnimalDC :CDCm_memAnimalBmp :Cbitmapm_MemDC :CDCm_memBitmap : Cbitmapm_map : intm_nRow : intm_nCol : intm_nX1 : intm_nY1 : intGameDraw(CDC * pDC) : voidStartNewGame() : voidIsLink(int x1,int y1,int x2,int y2) : BOOLIsWin(void) : BOOLX1_Link_X2(int x,int y1,int y2) : BOOLY1_Link_Y2(int x1,int x2,int y) : BOOLOneCornerLink(int x1,int y1,int x2,int y2) : BOOLTwoCornerLink(int x1,int y1,int x2,int y2) : BOOLYthrough(int x,int y,BOOL bAdd) : BOOLXthrough(int x,int y,BOOL bAdd) : BOOLLineX(int x,int y1,int y2) : BOOLLineY(int x1,int x2,int y) : BOOL图3.2 游戏模式类图4 系统详细设计与实现4.1游戏地图设计对于整个游戏区域,可以把它看作一个是由若干个小方块构成的地图,而且每一个小方块放置着不同的动物图案,可将其称之为图案小方块。

这些图案小方块零散地分布在地图的不同位置区域,并且每一个图案小方块都有与其对应的完全一样的另外一个小方块,如图4.1所示。

图4.1 游戏地图设计图如图4.1所示,整个游戏游戏区域被抽象成一个有坐标位置属性的平面,平面上零散地分布着若干个小方块,并且这些小方块的物种起码是成对出现的。

经过前面的描述和分析后,可以把游戏区域地图用一个数组m_map来表示。

m_map 是把地图设计成一个动态分配的int整形一维数组,对地图中的行列数的表达,用一个转换法则即可。

可以在LinkToLinkDlg类对象定义中添加地图核心数据的成员变量,具体如下://地图位置相关属性组int* m_map; //动态地图数据头指针(一维数组)int m_nRow; //地图的行数(虚拟)int m_nCol; //地图的列数(虚拟)上面的成员变量中定义了一个整形指针标量m_map,用于记录动态分配出来的一维数组地图空间的首地址。

对于地图区域中的某个小方块的类型,可以用一个整形的ID来进行识别。

这里为标识地图的行列位置分别添加m_nRow和m_nCol变量。

现在,地图的数据结构已经设计好。

下面对游戏进行初始化。

由于方块需要成对地出现,因此在做地图的初始化时,不仅仅是对动物种类做简单的随机取数,然后将该随机选取出来的物件放到地图区域中去就了事,而是需要成对地对物种进行成对选取,就是说地图中的小方块必须是偶数个。

前面提到过,把地图数组设置成动态分配方式,目的是让其数据空间可以根据行列数的需求动态地获取,而对于实际不同大小比例的地图可以预先定义几组关于行列数的宏来实现。

当需要创建时,根据宏值的不同分配不同大小的地图空间即可。

接下来在LinkToLinkDlg类的构造函数对地图数据进行相关的初始化:#define ROWCOUNT 8 //行数#define COLCOUNT 12 //列数CLinkToLinkDlg::CLinkToLinkDlg(CWnd* pParent /*=NULL*/): CDialog(CLinkToLinkDlg::IDD, pParent){ ……//初始化行列数m_nRow=ROWCOUNT;m_nCol=COLCOUNT;//根据行列数动态分配内核数据数组空间m_map=new int[m_nRow*m_nCol];}CLinkToLinkDlg::~CLinkToLinkDlg(){//释放动态数组空间delete[] m_map;}在LinkToLinkDlg类对象的实现中,定义了一些关于地图行列数的宏,如ROWCOUNT和COLCOUNT,并且在LinkToLinkDlg类对象的构造函数中,进行了行列的真实确认赋值,并根据当前行列数的大小对地图数据空间进行动态创建。

因为地图数据是用new在堆栈动态创建的,所以在销毁该对象时要将这些内存空间释放,如代码所示在LinkToLinkDlg类对象的析构函数中调用delete将m_map指向的所有空间都释放掉。

4.2初始化工作接下来,再分配好的空间中放上适当的图案方块物件,对数据进行初始化。

即需要对地图空间内的数据进行成对性的随机布局,因此可以将该功能的实现封装在StartNewGame( )函数里面,其代码如下:void CLinkToLinkDlg::StartNewGame(){//初始化地图,将地图中所有方块区域位置置为空方块状态for(int iNum=0;iNum<(m_nCol*m_nRow);iNum++){m_map[iNum] = BLANK_STATE;}//部下随机种子srand(time(NULL));//生成随机地图//将所有匹配成对的动物物种放进一个临时的地图中CDWordArray tmpMap;for(int i=0;i<(m_nCol*m_nRow)/6;i++)for(int j=0;j<6;j++)tmpMap.Add(i);//每次从上面的临时地图中取走(获取后并在临时地图删除)//一个动物放到地图的空方块上for(i=0;i<m_nRow*m_nCol;i++){//随机挑选一个位置int nIndex=(int(rand()*0.1+rand()*0.01+rand()))%tmpMap.GetSize();//获取该选定物件放到地图的空方块m_map[i]=tmpMap.GetAt(nIndex);//在临时地图除去该动物tmpMap.RemoveAt(nIndex);}//更新显示Invalidate(TRUE);}在游戏进行初始化的过程中,应该先对整个地图中的各个区域做必要的初始化操作,将它们的状态设置为BLANK_START空白方块状态(无动物图案方块),关于BLANK_START空白方块状态的定义,跟其他动物方块的物种定义表达类似,也是用整数ID来对它进行标识,不过不同的是,由于他代表该方块区域无图案,所以这里用-1的宏值来表示,具体定义如下:#define BLANK_STATE -1 //空方块(没有任何动物) 可以看到,对图案方块的布局,先用srand()函数对时间函数布下随机种子,然后调用rand()函数对具体的图案方块的种类进行随机的获取。

相关文档
最新文档