- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[游戏程序设计2-“连连看”设计
游戏程序设计 第一单元 “连连看”程序设计 1.1 预备知识 1、窗体程序 2、按钮事件 3、产生随机数 1、 窗体程序 关键语句: setSize(300,200); setVisible(true ); setDefaultCloseOperation(EXIT_ON_CLOSE); 容器布局: setLayout(布局模式); 默认边界布局 BorderLayout 浮动布局 FlowLayout 2、 按钮事件 ActionListener接口: (1)注册监听器 按钮.addActionListener(this); (2)触发事件 actionPerformed(ActionEvent e) { …….. } 3、 产生随机数 随机函数: Math.random() 产生0-1之间的随机数 若要产生100以内的随机整数: (int)(Math.random()*100) 1.2 “连连看”游戏算法分析 1.2.1 “连连看”算法分析 为简便起见,我们用数字代替一般“连连看”游戏画面的图形,如图所示。 1.2.2 “连连看”的游戏规则 1、“连连看”游戏的基本规则 (1)选择一对内容相同的图案进行连线,但此连线不能穿跨其他图案; (2)连线的转折点不能多于两个,如符合规定则消除此对图案。 2、“连连看”游戏的几种可以消去情况 (1)要消去的两个图案相邻,如图15.2(a)所示。 (2)要消去的两个图案在同一直线上,如图15.2(b)所示。 (3)要消去的两个图案不在同一直线上,如图15.2(c)、(d)所示。 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所示。 1.3 “连连看”游戏界面设计 “连连看”游戏界面设计算法分析 1、“连连看”游戏界面算法设计思路 在设计“连连看”游戏时,我们把所有图形(30个)按如图15.5(a)所示的方法排列,即把图形安排到8行×7列的表格中,四周有一排空格。把图形块做成按钮,这样,游戏操作者点击图形块时,就能触发事件。再定义一组二维数组与按钮的位置相对应,只要数组元素的值相同就代表图形相同。这样,要判断二块图形是否相同,只要比较二维数组元素的值是否相同。如图15.5(b)所示。 “连连看”游戏界面设计还要考虑3个问题: (1)图形块上的数字必须是必须是成对出现的; (2)图形块上的数字是随机的; (3)图形块的相同数字的位置是随机的。 2、建立一个8×7的二维数组存放6×5个随机数 int d[ ][ ] = { {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} }; 3、建立一个产生随机数字的方法,且每个随机数都是成对出现的。 public void suiji() //产生15对随机数字 { int m, 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)