游戏程序设计连连看设计_第1页
游戏程序设计连连看设计_第2页
游戏程序设计连连看设计_第3页
游戏程序设计连连看设计_第4页
游戏程序设计连连看设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

游戏程序设计连连看设计第1页,课件共24页,创作于2023年2月1.1预备知识1、窗体程序2、按钮事件3、产生随机数第2页,课件共24页,创作于2023年2月1、窗体程序关键语句:

setSize(300,200);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);容器布局:

setLayout(布局模式);

默认边界布局BorderLayout

浮动布局FlowLayout

第3页,课件共24页,创作于2023年2月2、按钮事件ActionListener接口:(1)注册监听器按钮.addActionListener(this);(2)触发事件

actionPerformed(ActionEvente){……..}第4页,课件共24页,创作于2023年2月3、产生随机数随机函数:

Math.random()产生0-1之间的随机数

若要产生100以内的随机整数:

(int)(Math.random()*100)第5页,课件共24页,创作于2023年2月1.2“连连看”游戏算法分析第6页,课件共24页,创作于2023年2月1.2.1“连连看”算法分析为简便起见,我们用数字代替一般“连连看”游戏画面的图形,如图所示。第7页,课件共24页,创作于2023年2月1.2.2“连连看”的游戏规则1、“连连看”游戏的基本规则(1)选择一对内容相同的图案进行连线,但此连线不能穿跨其他图案;(2)连线的转折点不能多于两个,如符合规定则消除此对图案。第8页,课件共24页,创作于2023年2月2、“连连看”游戏的几种可以消去情况(1)要消去的两个图案相邻,如图15.2(a)所示。(2)要消去的两个图案在同一直线上,如图15.2(b)所示。(3)要消去的两个图案不在同一直线上,如图15.2(c)、(d)所示。第9页,课件共24页,创作于2023年2月3、“连连看”游戏连接算法思路1、什么是连接折点?如图15.3所示2、连接折点算法基本概念如图15.3所示

3、连接折点算法分析(1)判断选取的两个点(P1,P2)的内容是否一样。(2)判断P1、P2的位置关系。(3)如果P1、P2相邻,如图15.4(a)所示,直接消去该两点,即把这两点的内容消去(把该两点内容设为不可见)。(4)如果P1、P2 在同一直线上,但不相邻,如图15.4(b)所示。先判断两个点P1,P2之间是否能直接建立连接(连线之间无折点),如果可以的话消去该两点,如果不可以的话就在其它三个方向上的空点按照折点法基本概念开始取折点Z1,Z2,然后判断P1—Z1,Z1—Z2,Z2—P2是否能连通,如果都可以连通就消去P1,P2两点。要消去的两个点不在同一直线上也不相邻。(5)在P1,P2四个方向上的空点按照连接折点的基本概念开始取折点Z1,Z2,然后判断P1—Z1,Z1—Z2,Z2—P2是否能连通,如果都可以连通就消去P1,P2两点。如图15.3所示。第10页,课件共24页,创作于2023年2月图15.3连接折点图15.4直线连接第11页,课件共24页,创作于2023年2月1.3“连连看”游戏界面设计“连连看”游戏界面设计算法分析1、“连连看”游戏界面算法设计思路在设计“连连看”游戏时,我们把所有图形(30个)按如图15.5(a)所示的方法排列,即把图形安排到8行×7列的表格中,四周有一排空格。把图形块做成按钮,这样,游戏操作者点击图形块时,就能触发事件。再定义一组二维数组与按钮的位置相对应,只要数组元素的值相同就代表图形相同。这样,要判断二块图形是否相同,只要比较二维数组元素的值是否相同。如图15.5(b)所示。第12页,课件共24页,创作于2023年2月“连连看”游戏界面设计还要考虑3个问题:(1)图形块上的数字必须是必须是成对出现的;(2)图形块上的数字是随机的;(3)图形块的相同数字的位置是随机的。第13页,课件共24页,创作于2023年2月2、建立一个8×7的二维数组存放6×5个随机数

intd[][]

=

{

{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}};第14页,课件共24页,创作于2023年2月3、建立一个产生随机数字的方法,且每个随机数都是成对出现的。publicvoidsuiji()//产生15对随机数字{intm,n,x,i=1,j=1;for(m=1;m<=15;m++){x=(int)(Math.random()*25+1);

for(n=1;n<=2;n++){while(d[i][j]!=0)

{

i=(int)(Math.random()*6+1);

j=(int)(Math.random()*5+1);

}

this.d[i][j]=x;

}}}2个不同坐标存放相同的数x位置坐标产生随机数(15个)第15页,课件共24页,创作于2023年2月“连连看”界面设计示例【例1-3】设计一个随机分布数字的“连连看”游戏界面程序。如图所示。第16页,课件共24页,创作于2023年2月1.4“连连看”游戏消除相同数字的算法设计消除两个相同图案的图形块

要消除两个相同图案的图形块,需要解决3个问题:(1)记录2次鼠标所点击的图案(数字),并进行比较;(2)记录2次鼠标所点击图形块的位置,要将其消除;(3)鼠标2次所点击的图形块不能是同一位置的图形。第17页,课件共24页,创作于2023年2月1、区分鼠标点击的次数由于游戏规定必须用鼠标点击2个相同的图案才能消除图形块,因此,使用2个字符串变量来标记鼠标点击的次数Strings1="first",s2=“";当(s1.trim()).equals("first")时,说明是鼠标第1次点击图形块,否则,是第2次点击图形块。第18页,课件共24页,创作于2023年2月2、记录鼠标点击2个不同图形块的位置由于游戏规定必须2个不同位置的相同图案的图形块才能被消除,因此,需要记录2次用鼠标点击的图形块的位置。设鼠标点击的图形块为btn0,其位置为(i,j),图形块上的图案(数字)为d[i][j]。第19页,课件共24页,创作于2023年2月3、消除相同图案(相同数字)的图形块当2个不同图形块的图案相同时,则将其设为setVisible(false)。

if(n1==n2&&btn2!=btn1) { btn2.setVisible(false);btn1.setVisible(false);}【例1-4】消除两个相同图案的图形块第20页,课件共24页,创作于2023年2月1.5消除相邻两点图案相同的图形块前面例1-4消除的是任意位置上的两个相同图案的图形块,这不符合“连连看”的游戏规则。下面讨论消除相邻两点图案相同的图形块,即如图15.7所示的情况。第21页,课件共24页,创作于2023年2月两个图形块相邻的条件设两个图形块的行列坐标为P1(x1,y1)和P2(x2,y2),则其相邻的条件为:

x1==x2且y1==y2+1,或x1==x2且y1==y2–1,或x1==x2+1且y1==y2,或x1==x2-1且y1==y2。即:(x1==x2&&(y1==y2+1||y1==y2-1))||((x1==x2+1||x1==x2-1)&&(y1==y2))第22页,课件共24页,创作于2023年2月1.6“连连看”游戏图形块重新排列的算法设计在玩“连连看”游戏时,当遇到无符合规则的图形块可消除的情况,这时,需要重新排列图形块。(1)重新排列图形块时,原有图形块的图案不能改变。即要保存原有各

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论