版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 第一章 绪论Java语言的设计可以追溯到1991年,SUN MicorSystem 公司为了开发消费电子产品市场,成立了由Jame Gosling、Bill Joe等人组成的Green开发小组。他们发现现有的语言如C/C+等在安全性和对芯片与操作系统的依赖性方面并不适合家用消费电子产品,于是他们开发了一个名为 Oak的软件,但当时并没有引起人们的注意 。后来Oak演变为更实用的系统star5even(7),但这些技术上成功的产品并未获得商业上的成功。 直到1994年下半年,Internet 就的迅猛发展,环球信息网www的快速增长,使得 SUN 公司把 Oak 的技术应用于网络,
2、并正式命名为Java。1995年 ,SUN公司正式发布了Java语言,Java在网络上的独特优势使得它逐渐成为Internet上受欢迎的开发与编程语言,一些著名的计算机公司纷纷购买了 Java 语言的使用权。1996年SUN公司成立了Javasoft分公司来维护和发展Java语言。在所有搭载了Java的终端中,手机是最为普与的一类设备。J2ME是SUN公司专门用于手机软件开发的平台,随着MIDP2.0的发布,特别是新增加的GameAPI使得游戏开发者能更专注于游戏功能的增强,研发手机游戏具有一定的现实意义。反而是 J2SE ,似乎只是被人们用来做一做程序界面的,就连 APPLET 也很少有人使
3、用了(毕竟有了 FLASH )。用 JAVA 来开发桌面平台的游戏,似乎很少有人这么做。前段日子我迷上的 游戏中的“连连看”,游戏之余,突发奇想,也想自己用做一个试试,经过一些天的奋战,终于完成了一个小型的java连连看游戏。该课程设计是基于J2SE环境编程开发的一个用数字来玩的连连看游戏 。在程序开始引用了awt , swing 等包来实现用布局管理器来开发游戏界面.期间用数组来实现数字相消的核心算法。在程序一开始引用了 awt 、swing 等包,运用里面是组件创建Frame,然后添加面板,再运用BorderLayout 把面板分为东、西、南、北、中 五个板块,然后在中间板块中运用Gird
4、Layout分成6行5列的Button 。之后在6行5列的Button上面添加15对数字 。 然后定义方法xiao ,分两个数字相邻、同行、不同行,运用数组的原理设计算法。戏中的地图看作是一个二维数组,其中的所有数字(以下称“点”)可以看作是数组中的一个具体的元素。那么,游戏中一样的数字可以看作是数组中不同位置两个值一样的元素。至于直线,让我们给组数中的每一个元素赋一个特殊的值如 0 ,以表示地图上空白的位置。并且同时规定:当连续的具有该特殊值的点的横向索引或纵向索引一样时,可以认为这是一条直线。当数组中两点的值一样并且两点间只需要不超过 3 根直线能连接起来的时候,就让这两点的值变为 0 ,
5、如果数组中全是 0 值的点,就认为游戏已经结束。第二章 问题定义2.1功能需求:该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要至少两两一样,位置随机打乱。游戏规则是将一样数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则视为无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束。1. 消去功能:a.实现的一样数字在相邻位置的相消 b.实现不相邻位置一样数字的相消 2. 退出:点击左下方 “退出游戏”按钮,结束游戏。 3. 重列: 游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按下重列按扭重
6、新排列方可继续游戏。 4.再来一局:重新一局新游戏。2.2 性能需求:1具有良好的可靠性和安全性。2对于系统要求比较低。3使用围比较广。第三章 总体设计与详细设计xiao(判断成功的相消)remove(消去两个按钮)lianliankan 类mainFrame 面板randomBuild(在30个按钮上随机分配数)estimateEven(判断两个按钮上的数字是否相等)fraction(包含reload方法)linePassOne rowPassOne (判断两个按钮是否可相消)actionPerformed(按下退出 重列 再来一局执行的语句)运用BorderLayout GridLayou
7、t作用与buttonButton 的响应方法的连接调用方法的连接调用3.1.总体设计: 创建button( 数字 退出 重列 再来一局 ) Label(分数)3.2 详细设计:类lianliankan:JFramemainFrame;intcols=0cols6introws=0rows5diamondsButtoncolsrows=newutton(String.valueOf(gridcols+1rows+1);rows+cols+exitButton=newutton(退出);inttwins=1twins=15twins+按下退出、重列、再来一局:e.getSource()=newly
8、Buttone.getSource()=exitButtonintgrid=newint87;e.getSource()=resetButtonintcols=0cols6cols+FOR 判断两个按钮上的数字是否相等 pressInformation=falsex=placeX;x0=x;fristMsg=secondMsg&secondButton!=firstButtonxiao();面板:intcols=0cols6cols+exitButton=newutton(退出);introws=0rowsjy0=ji-i=y0+1i=ji+gridx0i!=0IF k=2;在30个按钮上随机
9、添加数字:intrandoms,cols,rows;inttwins=1twins=15twins+randoms=(int)(Math.random()*25+1);intalike=1alike=2alike+cols=(int)(Math.random()*6+1);将游戏地图转化为数组来描述:intsave=newint30;inti=0i=6i+n=n-1;intj=0j=0IF 判断两个按钮是否可消去:x0ix0=ij-j=x0+1j=ij+gridjy0!=0IF k=2;消去:(x0=x&(y0=y+1|y0=y-1)|(x0=x+1|x0=x-1)&(y0=y)remove(
10、);j=0j7j+i=0i8i+IF IF 第四章 编码实现给每个button 上面添加数字: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(gridcolsrows!=0) cols=(int)(Math.random(
11、)*6+1);rows=(int)(Math.random()*5+1);this.gridcolsrows=randoms;将游戏地图转换为数组来描述:public void reload() int save = new int30;int n=0,cols,rows;int grid= new int87;for(int i=0;i=6;i+) for(int j=0;j=0) cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(gridcolsrows!=0) cols=(int)(Math.random(
12、)*6+1);rows=(int)(Math.random()*5+1);this.gridcolsrows=saven;n-;mainFrame.setVisible(false);pressInformation=false; init();for(int i = 0;i 6;i+)for(int j = 0;j 5;j+ )if(gridi+1j+1=0)diamondsButtonij.setVisible(false);消去按钮:public void xiao() if(x0=x&(y0=y+1|y0=y-1)|(x0=x+1|x0=x-1)&(y0=y) remove();els
13、efor (j=0;jj) for (i=y-1;i=j;i- ) if (gridxi!=0) k=0;break;else k=1; if (k=1) linePassOne();if (yj) for (i=y+1;i=j ;i+ ) if (gridxi!=0)k=0;break;else k=1; if (k=1)linePassOne();if (y=j ) linePassOne();if (k=2) if (x0=x) remove();if (x0x) for (n=x0;nx) for (n=x0;n=x+1 ;n- ) if (gridnj!=0) k=0;break;i
14、f(gridnj=0 & n=x+1) remove();for (i=0;ii) for (j=x-1;j=i ;j- ) if (gridjy!=0) k=0;break;else k=1; if (k=1) rowPassOne();if (xi) for (j=x+1;j=i;j+ ) if (gridjy!=0) k=0;break;else k=1; if (k=1) rowPassOne();if (x=i) rowPassOne();if (k=2)if (y0=y) remove();if (y0y) for (n=y0;ny) for (n=y0;n=y+1 ;n-) if
15、 (gridin!=0) k=0;break;if(gridin=0 & n=y+1) remove();public void linePassOne()if (y0j) for (i=y0-1;i=j ;i- ) if (gridx0i!=0) k=0;break;else k=2; if (y0j) for (i=y0+1;ii) for (j=x0-1;j=i ;j- ) if (gridjy0!=0) k=0;break;else k=2; if (x0i) for (j=x0+1;j=i ;j+ ) if (gridjy0!=0) k=0;break;else k=2; 消去按钮:
16、public void remove()firstButton.setVisible(false);secondButton.setVisible(false);fraction();pressInformation=false;k=0;gridx0y0=0;gridxy=0;第五章 调试与测试第六章 总结与心得 通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能
17、力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,尤其对函数调用的正确使用不够熟悉,通过这次课程设计之后,一定把以前所学过的知识重新温故。而且在课程设计过程中,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,发现其实里面还是充满乐趣的,一旦真的专研下去什么事情都可以放下,来认真研究。这次课程设计还让我懂得
18、了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维,很多设计的思想、理念在网上都是公布出来了的,不需要自己从头到尾思考,可以直接沿用,这就需要提高我们的动手能力,在网上从无尽的资料中找到我们所需要的。附 录附录一源代码:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class lianliankan implements ActionListenerJFrame mainFrame; Container thisContainer;JPanel centerPanel,southPanel,n
19、orthPanel; utton diamondsButton = new utton65;utton exitButton,resetButton,newlyButton; JLabel fractionLable=new JLabel(0); utton firstButton,secondButton; int grid = new int87;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 ini
20、t()mainFrame=new JFrame(付莉的连连看);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)
21、;centerPanel.setLayout(new GridLayout(6,5);for(int cols = 0;cols 6;cols+)for(int rows = 0;rows 5;rows+ )diamondsButtoncolsrows=new utton(String.valueOf(gridcols+1rows+1);diamondsButtoncolsrows.addActionListener(this);centerPanel.add(diamondsButtoncolsrows);exitButton=new utton(退出);exitButton.addActi
22、onListener(this);resetButton=new utton(重列);resetButton.addActionListener(this);newlyButton=new utton(再来一局);newlyButton.addActionListener(this);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getTex
23、t();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()*
24、5+1);while(gridcolsrows!=0) cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);this.gridcolsrows=randoms;public void fraction()fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()+100);public void reload() int save = new int30;int n=0,cols,rows;int grid= new int87;f
25、or(int i=0;i=6;i+) for(int j=0;j=0) cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(gridcolsrows!=0) cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);this.gridcolsrows=saven;n-;mainFrame.setVisible(false);pressInformation=false; init();for(int i = 0;i 6;i+)for(int j = 0;
26、j 5;j+ )if(gridi+1j+1=0)diamondsButtonij.setVisible(false);public void estimateEven(int placeX,int placeY,utton bz) if(pressInformation=false) x=placeX;y=placeY;secondMsg=gridxy;secondButton=bz;pressInformation=true;else x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondM
27、sg=gridxy;secondButton=bz;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) remove();elsefor (j=0;jj) for (i=y-1;i=j;i- ) if (gridxi!=0) k=0;break;else k=1; if (k=1) linePassOne();if (yj) for (i=y+1;i=j ;i+ ) if (gridxi!=0)k
28、=0;break;else k=1; if (k=1)linePassOne();if (y=j ) linePassOne();if (k=2) if (x0=x) remove();if (x0x) for (n=x0;nx) for (n=x0;n=x+1 ;n- ) if (gridnj!=0) k=0;break;if(gridnj=0 & n=x+1) remove();for (i=0;ii) for (j=x-1;j=i ;j- ) if (gridjy!=0) k=0;break;else k=1; if (k=1) rowPassOne();if (xi) for (j=x+1;j=i;j+ ) if (gridjy!=0) k=0;break;else k=1; if (k=1) rowPassOne();if (x=i) rowPassOne();if (k=2)if (y0=y) remove();if (y0y) for (n=y0;ny) for (n=y0;n=y+1 ;n-) if (gridin!=0) k=0;break;if(gridin=0 & n=y+1) remov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中铁工程局项目经理的招聘条件及发展前景介绍
- 中国移动网络优化工程师面试全记录
- 航空公司空勤综合文员面试技巧
- 祖国有我演讲稿小学作文
- 2025年AI艺术生成技术的跨学科研究与应用
- 2026年部编版八年级道德与法治上册期末必考重难点专练(选择题100题)
- 解读校园文化演讲稿
- 校园生活演讲稿双人
- 团结拼搏运动会演讲稿
- 我的信仰演讲稿英语初中
- 医院课件:《规范医疗服务收费行为培训》
- GB/T 32017-2019水性墨水圆珠笔和笔芯
- GB/T 13744-1992磁性和非磁性基体上镍电镀层厚度的测量
- GB 2733-2015食品安全国家标准鲜、冻动物性水产品
- GA/T 1323-2016基于荧光聚合物传感技术的痕量炸药探测仪通用技术要求
- 三甲医院设备科招聘考试试题最新测试题含答案
- 处理医嘱流程课件
- 罗氏试剂盒说明书 HCG beta 12177234001V13
- 建筑装饰工程计量与计价试题一及答案
- 防水瓦楞纸板工艺
- 生产制造企业流程大全
评论
0/150
提交评论