Java小程序连连看源代码
基于java的连连看游戏
基于JAVA的《连连看》游戏一引言《连连看》游戏在网上种类非常多,比如《水果连连看》,《宠物连连看》等等,虽然版本各种各样,但是其基本玩法,或者说基本算法是相同的,就是显示一些图标,让用户依次去点击两个图标,如果这两个图标相同,并且这两个图标通过直线可以相连,或者通过直角相连,或者通过双折线相连就可以消掉,消掉所有图标即为胜利。
如图1所示:图1 正在进行中的连连看游戏通过该游戏的制作,我们可以对Java的基础语法、Java图形界面以与简单的算法设计有一个比较全面的了解。
二设计要求为了避免叙述的繁琐,我们只实现连连看游戏的基本功能,如下:●制作如图1所示的游戏界面,尽量做到美观大方,使用方便●当两个图标相同,且通过直线相连、直角相连、双折线相连时,能够消掉图标●能够让游戏随时暂停,然后继续●当游戏进行到一定程度,无法消除剩余图标时,要能够提供重排功能对图标进行重排,从而让游戏继续进行三实现思路我们先讲一下程序中的几个难点,主要是说清楚具体的实现思路,具体的代码会在文后给出,大家可以参考。
1、界面设计需要实现如图2所示的界面:图 2 连连游戏界面整个界面分为三个区域:菜单区、功能区、游戏区。
首先在窗体上放置三个面板JPanel,分别存放三个区域,如图3所示:图3 界面的设计系统菜单区放置菜单即可,用户游戏区放置一个8*9的按钮数组来构成游戏界面,用户交互区放置开始,暂停等功能按钮以与提示信息。
2、生成游戏区运行程序后,游戏区并不显示按钮数组,当点击开始按钮后,再自动生成。
在生成按钮时要求按钮上的图案是随机的,且每个图案必须是偶数,否则会出现无法消除的按钮。
如何实现呢?我们可以这样考虑:假设有12个图片,把图片名字按照数字序号从0到11命名;假设游戏区共72个按钮,那么产生36个12以内的随机数字(每个随机数字代表一个图片),放入一个ArrayList中,最后使用ArrayList的addAll方法对已经产生的36个随机数字复制一份,这样就获得了72个随机数字,并且是成对的。
连连看源代码
摘要:近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。
Java语言的学习热潮并没有因为时间的推移而消退,相反,由于计算机技术的发展所带来的新应用的出现,Java越来越流行,这种情况是以往程序设计语言在其生存周期内所不多见的。
Java语言之所以这样长盛不衰,一是因为其众多的技术特点与现今的应用十分合拍,可以覆盖大部分的需求;二是因为SUN公司不断推出新的版本,完善Java自身的功能。
有了这两点,Java语言成为程序员首选的程序设计开发工具就在情理之中了.连连看来源于街机游戏《四川麻将》和《中国龙》,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,一个叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。
饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。
之后村子的连连看风靡版,阿达的连连看奥运版,连连看反恐版,还有敏敏连连看,水晶连连看等遍地开花,造就了一个连连看的新世界。
连连看游戏有多种地图样式和道具系统、大大加强了游戏的可玩性,是一款老少皆宜的休闲佳品。
关键字:发展,java,连连看,程序设计;1.课程设计介绍课题设计的目的:1) 进一步加深对Java语言的理解和掌握;将所学的JAVA知识运用于实践中。
2) 课程设计将理论与实践相结合,提供了一个既动手又动脑,独立实践的机会,锻炼我们的分析解决;实际问题的能力,提高学生适应实际,实践编程的能力。
3)熟练掌握JAVA语言中图形用户界面程序的编写;4)大体了解怎样用JAVA来编写小游戏的,增强我们实践能力和创新精神的综合培养。
课程设计的要求:由于Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。
面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承学会java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。
java小游戏源代码
J a v a小游戏第一个Java文件:importpublic class GameA_B {public static void main(String[] args) {Scanner reader=new Scanner(System.in);int area;System.out.println("Game Start…………Please enter the area:(1-9)" + '\n'+"1,2,3 means easy"+'\n'+"4,5,6 means middle"+'\n'+"7,8,9 means hard"+'\n'+"Please choose:");a rea=reader.nextInt();s witch((area-1)/3){c ase 0:System.out.println("You choose easy! ");break;c ase 1:System.out.println("You choose middle! ");break;c ase 2:System.out.println("You choose hard! ");break;}S ystem.out.println("Good Luck!");G ameProcess game1=new GameProcess(area);game1.process();}}第二个Java文件:importimportpublic class GameProcess {int area,i,arrcount,right,midright,t;int base[]=new int[arrcount],userNum[]=new int[area],sysNum[]=newint[area];Random random=new Random();Scanner reader=new Scanner(System.in);GameProcess(int a){area=a;arrcount=10;right=0;midright=0;t=0;base=new int[arrcount];userNum=new int[area];sysNum=new int[area];for(int i=0;i<arrcount;i++){base[i]=i;}}void process(){r and();w hile(right!=area){s canf();c ompare();p rint();c heck();}}void rand(){f or(i=0;i<area;i++){t=random.nextInt(arrcount);sysNum[i]=base[t];System.out.println(base[t]);delarr(t);}}void delarr(int t){f or(int j=t;j<arrcount-1;j++)base[j]=base[j+1];a rrcount--;}void scanf(){S ystem.out.println("The system number has created!"+"\n"+"Please enter "+area+" Numbers");for(int i=0;i<area;i++){userNum[i]=reader.nextShort();}}void check(){if(right==area)S ystem.out.println("You win…………!");}boolean check(int i){r eturn true;}void compare(){i nt i=0,j=0;r ight=midright=0;f or(i=0;i<area;i++){for(j=0;j<area;j++){if(userNum[i]==sysNum[j]){if(i==j)right++;elsemidright++;}}}}void print(){S ystem.out.println(" A "+right+" B "+midright); }}。
连连看java代码课程设计
连连看java代码课程设计一、课程目标知识目标:1. 理解Java基本语法,掌握连连看游戏的核心算法;2. 学会使用Java编写图形用户界面,实现游戏窗口的布局与设计;3. 了解Java事件处理机制,能编写鼠标点击事件监听器。
技能目标:1. 培养学生运用Java语言解决实际问题的能力;2. 提高学生分析问题、设计算法、编写代码、调试程序的综合技能;3. 培养学生的创新思维和团队协作能力,通过分组完成任务,提高沟通与协作效率。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,增强自信心;2. 培养学生面对困难时,保持积极的心态,勇于尝试,不断克服挫折;3. 培养学生的集体荣誉感,通过团队协作,共同完成任务,体验成功的喜悦。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能独立完成连连看游戏的Java代码编写,实现游戏的基本功能;2. 学生能通过小组合作,共同优化游戏界面,提升用户体验;3. 学生在课程学习过程中,能主动探究新知识,勇于挑战更高难度的编程任务;4. 学生在学习过程中,培养良好的编程习惯,注重代码规范和团队协作。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. Java基本语法:- 数据类型、变量、常量- 运算符、表达式、流程控制(分支、循环)- 数组、字符串2. Java图形用户界面设计:- Swing图形用户界面库简介- JFrame、JPanel容器组件- 布局管理器(边界布局、流布局等)3. Java事件处理机制:- 事件监听器、事件源- 鼠标事件、键盘事件- 事件适配器、事件处理线程4. 连连看游戏核心算法:- 游戏规则、数据结构设计- 算法实现(路径查找、消去逻辑等)- 游戏界面与逻辑分离教学大纲安排如下:1. 第一阶段(2课时):Java基本语法复习与巩固2. 第二阶段(2课时):Swing图形用户界面设计3. 第三阶段(2课时):Java事件处理机制4. 第四阶段(4课时):连连看游戏核心算法分析与实现教学内容与教材关联章节:1. 《Java程序设计》第3章:Java基本语法2. 《Java程序设计》第6章:Swing图形用户界面设计3. 《Java程序设计》第7章:Java事件处理机制4. 《Java程序设计》实例分析:连连看游戏案例三、教学方法针对本课程的教学目标和内容,采用以下多样化的教学方法:1. 讲授法:- 对于Java基本语法、Swing图形用户界面设计、Java事件处理机制等基础知识点,采用讲授法进行教学,使学生在短时间内掌握必要的理论知识;- 讲授过程中注重启发式教学,引导学生主动思考问题,提高课堂互动性。
连连看源码
stop();//fscommand("showmenu", "false");the_change_nm = 6;the_pass_nm = 1;the_test_nm = 0;the_good = 0;tmp_start = 0;tmp_end = 0;esc_bz = 0;function dongzuo(clickkey){if (startkey == 0 && all192[clickkey] != 50){startkey = clickkey;} // end ifif (startkey != 0 && startkey != clickkey && all192[clickkey] != all192[startkey] && all192[clickkey] != 50){tellTarget("g" + startkey){gotoAndStop(1);} // End of TellTargetstartkey = clickkey;} // end ifif (startkey != 0 && startkey != clickkey && all192[clickkey] == all192[startkey]){tellTarget("g" + startkey){gotoAndStop(1);} // End of TellTargetendkey = clickkey;tempstart = all192[startkey];tempend = all192[endkey];thestring = startkey;all192[startkey] = 50;all192[endkey] = 50;findlu(startkey, endkey);all192[startkey] = tempstart;all192[endkey] = tempend;startkey = 0;endkey = 0;if (thestring != startkey){thelu = thestring.split(",");tellTarget("cont"){gotoAndPlay(2);} // End of TellTarget} // end if} // end ifif (startkey != 0){tellTarget("g" + startkey){gotoAndStop(2);} // End of TellTarget} // end if} // End of the functionfunction findlu(x, y)//找路径函数,{thestartx = (x - 1) % 16 + 1;thestarty = (x - thestartx) / 16 + 1;theendx = (y - 1) % 16 + 1;theendy = (y - theendx) / 16 + 1;for (ii = thestartx; ii >= 1; ii--){thenext = 88;k = (thestarty - 1) * 16 + ii;x_lt(k, x); //判断起始点击图标左边是否通路k1 = (theendy - 1) * 16 + ii;x_lt(k1, y); //判断终止点击图标的左边是否通路y_lt(k, k1); //判断点击有两个图标之间是否通路if (thenext != 0) //如果均不通,则依次调整两个图标研水平方向的位置//并调整两个图标沿水平方向的位置{tmps = x;for (i = 1; i < math.abs(thestartx - ii) + 1; i++){tmps = tmps - 1; //依次向左找本行中可能的通路位置thestring = thestring + "," + tmps;} // end of forif (thestarty < theendy){for (i = 1; i < theendy - thestarty + 1; i++){tmps = tmps + 16;thestring = thestring + "," + tmps;} // end of for}else{for (i = 1; i < thestarty - theendy + 1; i++){tmps = tmps - 16;thestring = thestring + "," + tmps;} // end of for} // end iffor (i = 1; i < math.abs(theendx - ii) + 1; i++){if (k1 < y){tmps = tmps + 1;}else{tmps = tmps - 1;} // end ifthestring = thestring + "," + tmps;} // end of forreturn(undefined);} // end if} // end of forfor (ii = thestartx + 1; ii <= 16; ii++){thenext = 88;k = (thestarty - 1) * 16 + ii;x_lt(k, x);k1 = (theendy - 1) * 16 + ii;x_lt(k1, y);y_lt(k, k1);if (thenext != 0){tmps = x;for (i = 1; i < math.abs(thestartx - ii) + 1; i++){tmps = tmps + 1;thestring = thestring + "," + tmps;} // end of forif (thestarty < theendy){for (i = 1; i < theendy - thestarty + 1; i++){tmps = tmps + 16;thestring = thestring + "," + tmps;} // end of for}else{for (i = 1; i < thestarty - theendy + 1; i++){tmps = tmps - 16;thestring = thestring + "," + tmps;} // end of for} // end iffor (i = 1; i < math.abs(theendx - ii) + 1; i++){if (k1 < y){tmps = tmps + 1;}else{tmps = tmps - 1;} // end ifthestring = thestring + "," + tmps;} // end of forreturn(undefined);} // end if} // end of forfor (ii = thestarty; ii >= 1; ii--){thenext = 88;k = (ii - 1) * 16 + thestartx;y_lt(k, x);k1 = (ii - 1) * 16 + theendx;y_lt(k1, y);x_lt(k, k1);if (thenext != 0){tmps = x;for (i = 1; i < math.abs(thestarty - ii) + 1; i++){tmps = tmps - 16;thestring = thestring + "," + tmps;} // end of forif (thestartx < theendx){for (i = 1; i < theendx - thestartx + 1; i++){tmps = tmps + 1;thestring = thestring + "," + tmps;} // end of for}else{for (i = 1; i < thestartx - theendx + 1; i++){tmps = tmps - 1;thestring = thestring + "," + tmps;} // end of for} // end iffor (i = 1; i < math.abs(theendy - ii) + 1; i++){if (k1 < y){tmps = tmps + 16;}else{tmps = tmps - 16;} // end ifthestring = thestring + "," + tmps;} // end of forreturn(undefined);} // end if} // end of forfor (ii = thestarty + 1; ii <= 16; ii++){thenext = 88;k = (ii - 1) * 16 + thestartx;y_lt(k, x);k1 = (ii - 1) * 16 + theendx;y_lt(k1, y);x_lt(k, k1);if (thenext != 0){tmps = x;for (i = 1; i < math.abs(thestarty - ii) + 1; i++){tmps = tmps + 16;thestring = thestring + "," + tmps;} // end of forif (thestartx < theendx){for (i = 1; i < theendx - thestartx + 1; i++){tmps = tmps + 1;thestring = thestring + "," + tmps;} // end of for}else{for (i = 1; i < thestartx - theendx + 1; i++){tmps = tmps - 1;thestring = thestring + "," + tmps;} // end of for} // end iffor (i = 1; i < math.abs(theendy - ii) + 1; i++){if (k1 < y){tmps = tmps + 16;}else{tmps = tmps - 16;} // end ifthestring = thestring + "," + tmps;} // end of forreturn(undefined);} // end if} // end of forif (thenext == 0){thestring = 0;} // end if} // End of the functionfunction x_lt(xx, yy){for (kk = 0; kk < math.abs(yy - xx) + 1; kk++){thetest = math.min(xx, yy) + kk;if (all192[thetest] < 50){thenext = 0;} // end if} // end of for} // End of the functionfunction y_lt(xx, yy){for (kk = 0; kk < math.abs(yy - xx) / 16 + 1; kk++){thetest = math.min(xx, yy) + kk * 16;if (all192[thetest] < 50){thenext = 0;} // end if} // end of for} // End of the functionall144 = new Array();all192 = new Array();thelu = new Array();thestring = 0;startkey = 0;endkey = 0;for (i = 1; i < 141; i++){if (i < 31){all144[i] = i;} // end ifif (i > 30 && i < 71){x = random(30) + 1;//随机从0~30产生一个数并加1赋给xall144[i] = x;} // end ifif (i > 70){all144[i] = all144[i - 70];} // end if} // end of forfor (i = 0; i < 100; i++){x = random(140) + 1;y = random(140) + 1;z = all144[x];all144[x] = all144[y];all144[y] = z;} // end of forfor (i = 1; i < 141; i++){tellTarget("a" + i){gotoAndStop(_level0.all144[_level0.i]);} // End of TellTarget} // end of forj = 1;for (i = 1; i < 193; i++){x = (i - 1) % 16 + 1;y = (i - x) / 16 + 1;if (x == 1 || x == 16 || y == 1 || y == 12){all192[i] = 50;continue;} // end ifall192[i] = all144[j];j = j + 1;} // end of for。
JAVA课程设计连连看(含代码)
Java程序课程设计任务书1、主要内容:本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。
2、具体要求(包括技术要求等):a. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。
方块上随机分布一些数字,数字的要求是至少两两相同,位置随机打乱。
b.当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。
c. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。
d. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。
e.运用基于SWING的图形用户界面设计知识等。
3、学习并掌握以下技术:Java等4、熟练使用以下开发工具:Jcreate 等实现系统上述的功能。
三、计划进度12月28日-12月29 日:课程设计选题,查找参考资料12月30日-12月31日:完成需求分析、程序设计1月1日-1月3日:完成程序代码的编写1月4日-1月6日:系统测试与完善1月7日-1月8日:完成课程设计报告,准备答辩四、主要参考文献[1] (美)埃克尔著陈昊鹏,饶若楠等译. Java编程思想[J]. 机械工业出版社,2005[2](美)Gary J.Bronson著张珑刘雅文译. Java编程原理[J]. 清华大学出版社,2004[3](美)Michael Morrison著徐刚,于健,薛雷译. 游戏编程入门[J]. 人民邮电出版社,2005.9[4](美)Wendy Stahler著冯宝坤,曹英译. 游戏编程中的数理应用[J]. 红旗出版社,2005[5](美)克罗夫特(David Wallace Croft)著彭晖译. Java游戏高级编程[J]. 清华大学出版社,2005[6](美)David Brackeen著邱仲潘译. Java游戏编程[J]. 科学出版社,2004[7] 聂庆亮编著. Java应用开发指南[J]. 清华大学出版社,2010[8] 耿祥义,张跃平编著. Java面向对象程序设计[J]. 清华大学出版社,2010[9] 杨绍方编著. Java编程实用技术与案例[J]. 清华大学出版社,2000.11[10] 明日科技编著. Java编程全能词典[J]. 电子工业出版社,2010摘要随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,包括医药,汽车工业,手机行业,游戏,等等地方。
连连看游戏编程实现
连连看游戏编程实现连连看游戏是一种益智类游戏,通过消除相同的图标来获得分数。
在这个游戏中,玩家需要将相同的图标以条直线连接起来,连接路径不超过两个拐弯。
一旦成功连线后,这些图标就会被消除,玩家获得相应得分。
本文将介绍如何使用编程语言来实现连连看游戏。
1. 游戏的基本要求在实现连连看游戏之前,我们需要先明确游戏的基本要求。
一般来说,连连看游戏应该具备以下几个要素:- 游戏棋盘:棋盘用于摆放游戏图标,一般为矩形的格子。
玩家通过点击格子来选择图标。
- 游戏图标:游戏图标是棋盘上的元素,每个图标应该对应一个唯一的标识,并且能够与其他相同的图标连接。
- 连接规则:玩家只能选择相邻且能够连线的图标进行连接,连接路径不能超过两个拐弯。
2. 游戏的实现思路实现连连看游戏的基本思路如下:- 创建游戏棋盘,并在每个格子中随机放置游戏图标。
- 监听玩家的点击事件,记录玩家选择的图标。
- 判断玩家选择的图标是否符合连接规则,如果符合则消除图标,否则取消选择。
- 判断棋盘上是否还有可连接的图标,如果没有则游戏结束。
3. 游戏的代码实现下面是一个简单的连连看游戏的代码实现示例(使用Python语言):```python# 导入需要的模块import pygameimport random# 游戏棋盘大小board_width = 8board_height = 8# 游戏图标种类数icon_types = 4# 创建游戏棋盘board = []for i in range(board_height):row = []for j in range(board_width):# 随机选择一个图标放置在棋盘上icon = random.randint(0, icon_types-1) row.append(icon)board.append(row)# 初始化Pygame库pygame.init()# 创建游戏窗口screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("连连看游戏")# 游戏主循环running = Truewhile running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 绘制游戏界面screen.fill((255, 255, 255))for i in range(board_height):for j in range(board_width):# 绘制棋盘上的图标pygame.draw.rect(screen, (0, 0, 0), (i*50, j*50, 50, 50))icon = board[i][j]# 绘制图标pygame.draw.circle(screen, (255, 0, 0), (i*50+25, j*50+25), 20)# 更新屏幕显示pygame.display.flip()# 游戏结束,退出Pygame库pygame.quit()```4. 总结通过上述示例代码,我们可以初步实现连连看游戏的编程实现。
Java小程序连连看源代码
Java小程序连连看源代码Java 连连看import javax.swing.*;import java.awt.*;import java.awt.event.*;public class lianliankan implements ActionListener{JFrame mainFrame; //主面板Container thisContainer;JPanel centerPanel,southPanel,northPanel; //子面板JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签JButton firstButton,secondButton; //分别记录两次被选中的按钮int grid[][] = new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; //判断是否有按钮被选中int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制public void init(){mainFrame=new JFrame("JKJ连连看");thisContainer = mainFrame.getContentPane();thisContainer.setLayout(new BorderLayout());centerPanel=new JPanel();southPanel=new JPanel();northPanel=new JPanel();thisContainer.add(centerPanel,"Center");thisContainer.add(southPanel,"South");thisContainer.add(northPanel,"North");centerPanel.setLayout(new GridLayout(6,5));for(int cols = 0;cols < 6;cols++){for(int rows = 0;rows < 5;rows++ ){diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+1][rows+1]));diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}exitButton=new JButton("退出");exitButton.addActionListener(this);resetButton=new JButton("重列");resetButton.addActionListener(this);newlyButton=new JButton("再来一局");newlyButton.addActionListener(this);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fraction Lable.getText())));northPanel.add(fractionLable);mainFrame.setBounds(280,100,500,450);mainFrame.setVisible(true);}public void randomBuild() {int randoms,cols,rows;for(int twins=1;twins<=15;twins++) {randoms=(int)(Math.random()*25+1);for(int alike=1;alike<=2;alike++) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms;}}}public void fraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fraction Lable.getText())+100));}public void reload() {int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];for(int i=0;i<=6;i++) {for(int j=0;j<=5;j++) {if(this.grid[i][j]!=0) {save[n]=this.grid[i][j];n++;}}}n=n-1;this.grid=grid;while(n>=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init();for(int i = 0;i < 6;i++){for(int j = 0;j < 5;j++ ){if(grid[i+1][j+1]==0)diamondsButton[i][j].setVisible(false);}}}public void estimateEven(int placeX,int placeY,JButton bz) { if(pressInformation==false) {x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else {x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg && secondButton!=firstButton){ xiao();}}}public void xiao() { //相同的情况下能不能消去。
连连看游戏设计思想及程序详细讲解(附源码)
连连看游戏设计思想及程序详细讲解(附源码)1、连连的设计思想1)、准备好相应的大小相同的小图片若干public static final int CELL_SIZEx = 36;public static final int CELL_SIZEy = 40;public static final int CELL_COLS = 34;public static final int CELL_ROWS = 14;public static final int CELL_ZONGS = (CELL_COLS-2)*(CELL_ROWS-2);例如本程序:小图片宽:CELL_SIZEx = 36 高:CELL_SIZEy = 40摆放小图片舞台:横向:34格CELL_COLS= 34纵向:14格CELL_ROWS= 14真正要摆放图片的格数:CELL_ZONGS = (CELL_COLS-2)*(CELL_ROWS-2)即:四面的边格不放图片2)、设定34*14个图片数组,其中除四边外,全部随机存入图片,要保证每种图片各数相同(至少不要差太多),并且是偶数(奇数最后消不掉了)。
3)、在舞台上放上鼠标监听器,当点击任一图片时,做出判断,是否第一次点击(点击标记为0就是第一次点击),如果是第一次点击,就将相关信息记录到第一次内容中,比如:x1,y1,cell1,并将点击标记记为1,再次点击后,判断,点的是否同一图片,如果是,不做处理,如果不是,就认为点击了第二个图片,将相关住处记录到第二次内容中,如:x2,y2,cell2。
然后得用这个方法public boolean delkey()判断两点是否可以连通,如果可以,就消掉图片,不可以就不做处理。
整个连连看原理就是这样,其中有几个难点:1、随机图片,并且保证每种图片数相同,并且为偶数。
2、点击监听3、判断两点是否连通,这个算法是整个连连看的核心,也是最难的。
java小程序源代码
help.add(newItem4); newItem4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
} //数据重置 private boolean start=true;//是否是第一个输入 private String op="=";//运算符 private double arg=0;//运算结果 private JTextField display; private JTextField ope; }
public CalculatorPanel() {
setLayout(new BorderLayout());
display=new JTextField("0"); display.setEditable(false); add(display,"Center"); ope=new JTextField(" "); ope.setEditable(false); add(ope,"West"); //创建菜单栏(暂时无实际意义) JMenuBar bar=new JMenuBar(); add(bar,"North"); JMenu view=new JMenu("查看(V)"); JMenu edit=new JMenu("编辑(E)"); JMenu help=new JMenu("帮助(H)"); bar.add(view); bar.add(edit); bar.add(help);
Java连连看程序代码
Button p1,p2,br,bt1,bt2; //p1、p2为选定的按钮
Panel panel1,panel2;
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}
};
public static void main(String[] args)
panel1.add(b7); panel1.add(b8); panel1.add(b9);
panel1.add(b10); panel1.add(b11); panel1.add(b12);
panel1.add(b13); panel1.add(b14); panel1.add(b15);
b4=new Button(String.valueOf(d[1][4]));
b5=new Button(String.valueOf(d[1][5]));
b6=new Button(String.valueOf(d[2][1]));
b7=new Button(String.valueOf(d[2][2]));
{0,0,0,0,0,0,0}
};
this.d=d;
suiji(); //调用随机函数,产生随机数;
f.setVisible(false);
连连看小游戏设计毕业设计
摘要游戏“连连看”,只要将相同花色的两张牌用三根以内的直线连在一起就可以消除,规则简单容易上手。
这个程序的界面使用Jframe框架,主程序窗口包含一个主面板,其中包含两个子面板,左边一层子面板是游戏窗口,符合我们玩游戏的习惯,包含连连看游戏的图片元素,用户进行游戏能找到32对图片;右边一层用来实现游戏控制,有开始、刷新、选择难度、显示分数、进度条等功能选项。
结合Java 编程语言的简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程、动态和连连看游戏的休闲、趣味、益智加上美观的界面设计和秀色可餐的水果蔬菜游戏图片元素,使这款连连看游戏成为现代都市人们打发无聊,放松身心的好帮手。
加入了游戏时间控制和过关控制及进度条提示功能使游戏速度节奏快,画面清晰可爱,老少皆宜。
通过ActionEvent 组件进行动作事件的监听和处理。
游戏通过定义数组,根据一定的算法实现规定的路径判断。
关键字: Java连连看;Jframe;数组;路径判断AbstractThe game "lianliankan", as long as the two cards with the same suit straight up to three connected can be eliminated, rules are easy. This program of interface using Jframe framework, main program window contains a a main panel, which contains two a child Panel, left a layer child Panel is game window, meet we playing game of habits, contains fest see game of pictures element, user for game can found 32 on pictures; right a layer used to achieved game control, has began, and refresh, and select difficulty, and displayed score, and progress article, features option. Combines a simple Java programming language, object-oriented, distributed, interpreted, robust, secure system-independent, portable, high-performance, multithreaded, dynamic and lianliankan games, leisure, fun, puzzle together with attractive interface design and appetizing fruit vegetables picture elements, makes this lianliankan games become the modern city spending tedious, relaxed and good help. Joined the playing time control and border control and progress bar prompts make the game faster tempo, clear picture and lovely, both young and old. Action through the ActionEvent component event listening and handling. Games by defining an array according to certain algorithms provide path of judgment.Key words: Java Lianliankan ; Jframe ; array ; approaches目录1.引言 (1)2.游戏规则 (1)2.1概要 (1)2.2操作 (1)2.3胜利条件 (1)2.4失败条件 (1)3.发展概况 (1)3.1连连看游戏的历史 (1)3.2用java语言写连连看游戏的原因 (2)4.方案论证 (2)4.1设计原理 (2)4.2方案选择 (3)4.3主要问题 (3)4.4技术要求 (3)4.5游戏应用环境的构建 (4)5.系统分析 (4)5.1模块分析 (4)5.1.1 界面的设计和图片的随机生成模块 (5)5.1.2 菜单控制模块 (5)5.1.3算法模块 (5)5.2基本思路 (6)5.2.1 游戏地图设计思路 (6)5.2.2 连连看游戏图片 (6)5.2.3 获取图片位置 (6)5.2.4 路径判断思路 (7)6.系统设计 (8)6.1主界面的设计 (8)6.2图片的随机生成 (9)6.3单击控件的事件触发 (9)6.3.1开始游戏按钮 (9)6.3.2重列按钮 (10)6.3.3难度选择按钮 (10)6.4清除两个一样的符合条件的方块 (10)6.5过关设置 (10)7.结果分析 (11)7.1优点 (11)7.2缺点 (11)8.总结 (11)参考文献 (13)致谢 (14)1.引言网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。
连连看小游戏编程实现
连连看小游戏编程实现连连看是一种非常经典的益智游戏,通过连接相同图案的方块来消除它们,最终目标是将所有方块都消除完毕。
本文将介绍如何使用编程语言实现一个简单的连连看小游戏。
1. 游戏规则连连看游戏的规则非常简单,玩家需要找到两个相同图案的方块,且它们之间的连线不能超过两个弯角。
当玩家成功连接一对相同的方块时,这对方块将会消失,同时玩家获得一定的分数。
玩家需要尽可能快地消除所有方块,以获取更高的分数。
2. 游戏界面设计在编程实现连连看游戏时,我们需要设计一个美观且易于操作的游戏界面。
可以使用图形库来实现游戏界面的绘制,比如Python的Tkinter库或者C++的SFML库。
游戏界面需要包括以下几个组件:a. 方块区域:用于显示游戏的方块布局,可以使用矩阵形式表示,每个元素表示一个方块。
b. 分数显示区域:用于显示玩家当前的得分情况。
c. 时间显示区域:显示剩余的游戏时间。
d. 游戏操作按钮:如开始游戏按钮、重新开始按钮等。
3. 方块生成在游戏开始时,需要生成一定数量的方块,并将它们随机地分布在方块区域内。
可以使用随机数生成算法来实现方块的随机生成,同时需要保证每种方块的数量相等。
4. 连接算法玩家通过点击两个相邻且相同的方块来进行消除。
为了判断两个方块是否可以相连,我们需要实现一个连线算法。
一种简单的实现方法是使用深度优先搜索算法(DFS)来寻找两个方块之间的路径。
通过遍历方块区域,查找与当前选中方块相同的邻居方块,然后递归搜索相邻方块的邻居,直到找到目标方块或者无法继续搜索为止。
5. 方块消除当玩家成功连接一对相同的方块时,需要将它们从方块区域中移除,并更新玩家的得分。
可以使用图形库提供的绘制函数来实现方块的消除效果,比如渐渐消失或者爆炸效果等。
6. 游戏结束当所有方块都被消除或者游戏时间结束时,游戏结束。
此时可以显示玩家的最终得分,并提供重新开始或退出游戏的选项。
通过以上步骤,我们可以使用编程语言实现一个简单的连连看小游戏。
用JAVA设计手机连连看游戏
且 ,此款游戏与以往的连连看游戏不同 ,可以让用户自主设计
连连 看 游 戏 的 背 景 图 片 ,还 有 欢 快 的 背 景 音乐 舒 缓 神 经 ,增 添
了更多乐趣。因此,此款游戏有一定有广大的市场。
2基 本概 念 ’
, / 下 一 关 为上 一关 减 去5 秒 的时 间
t o t a l Ti me 一 = 5:
能 的 部分 代码 如 下 :
p u b l i c v o i d o n C l i c k ( Vi e w v )( n e w Al e r t Di a l o g . B u i l d e r ( S e t D i a l o g . t h i s )
.
以支持手机运行 。
2 l 世 纪 ,人们 所 承 受 的 来 自各 方 面 的压 力越 来 越 大 ,人 们
需要一个释放 自我的途径 。连连看小游戏 ,规则简单 ,生动有
趣 ,对 于 需 要 释 放 压 力 ,打 发 时 间 的 人 来 说 ,是不 二 之 选 。并
p r i v a t e R e f r e s h Ha n d l e r r e f r e s h H a n d l e r =n e w R e f r e s h Ha n d l e r 0 ;
s t a r t P l a y 0 ; )
2 Mi c r o E d i t i o n ,主 要 针 对 嵌入 式 系 统 ,包 括 手 机 、P DA 等 。针
( 3 )游戏 更 换 图片 代码 。
对 手 机应 用程 序 的开发 ,s u n 还 提供 了 免费 的J 2 ME Wi r e l e s s
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
newlyButton=new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0){
k=0;
break;
}
else { k=1; }
}
if (k==1){
linePassOne();
}
}
if (y==j ) {
if (k==1) {
rowPassOne();
}
}
if (x<i) {
for (j=x+1;j<=i;j++ ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
if (grid[x][i]!=0) {
k=0;
break;
}
else{ k=1; } //K=1说明通过了第一次验证
}
if (k==1) {
linePassOne();
}
}
if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边
remove();
}
}
}
}
}
}
}
public void linePassOne(){
if (y0>j){ //第一按钮同行空按钮在左边
for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮
if (grid[x0][i]!=0) {
if(fristMsg==secondMsg && secondButton!=firstButton){
xiao();
}
}
}
public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释
if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻
if(this.grid[i][j]!=0) {
save[n]=this.grid[i][j];
n++;
}
}
}
n=n-1;
this.grid=grid;
while(n>=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
if(grid[i][n]==0 && n==y-1) {
remove();
}
}
}
if (y0>y) {
for (n=y0;n>=y+1 ;n--) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y+1) {
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton=new JButton("退出");
exitButton.addActionListener(this);
resetButton=new JButton("重列");
mainFrame.setVisible(true);
}
public void randomBuild() {
int randoms,cols,rows;
for(int twins=1;twins<=15;twins++) {
randoms=(int)(Math.random()*25+1);
}
}
if (x==i) {
rowPassOne();
}
}
if (k==2){
if (y0==y) {
remove();
}
if (y0<y) {
for (n=y0;n<=y-1 ;n++ ) {
if (grid[i][n]!=0) {
k=0;
break;
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
centerPanel.setLayout(new GridLayout(6,5));
for(int cols = 0;cols < 6;cols++){
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
public void init(){
mainFrame=new JFrame("JKJ连连看");
thisContainer = mainFrame.getContentPane();
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280,100,500,450);
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //分别记录两次被选中的按钮
int grid[][] = new int[8][7];//储存游戏按钮位置
static boolean pressInformation=false; //判断是否有按钮被选中
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=randoms;
}
}
}
public void fraction(){
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));
for(int alike=1;alike<=2;alike++) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
}
}
}
public void estimateEven(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
remove();
}
else{
for (j=0;j<7;j++ ) {
if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空
if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
}
public void reload() {
int save[] = new int[30];
int n=0,cols,rows;
int grid[][]= new int[8][7];
for(int i=0;i<=6;i++) {
for(int j=0;j<=5;j++) {
linePassOne();
}