连连看Java小游戏毕业设计论文

更新时间:2023-09-03 12:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

安徽电子信息职业技术学院

--软件学院

连连看Java小游戏毕业论文(设计)

学生姓名:吴义平

学 号:070202104

系 别:软件技术

专 业:软件技术

指导教师: 孔鹏

评 审 日 期: 2009年11月4日

软件071班

目 录

1

导言........................................................................................................................ 1 1.1 目的........................................................................................................... 1 1.2 范围........................................................................................................... 1 1.3 缩写说明 java ...................................................................................... 1 1.4 术语定义................................................................................................... 1 1.5 引用标准................................................................................................... 1 1.6 参考资料................................................................................................... 1 1.7 版本更新信息........................................................................................... 2 2 系统定义................................................................................................................ 2

2.1 项目来源及背景....................................................................................... 2 2.2 项目要达到的目标................................................................................... 2 3 应用环境................................................................................................................ 2

3.1 游戏硬件环境........................................................................................... 3 3.2 游戏运行软件环境................................................................................... 3 4 代码设计:............................................................................................................ 3 5 }性能需求............................................................................................................ 12

5.1 界面需求................................................................................................. 12 5.2 响应时间需求......................................................................................... 13 5.3 开放性需求............................................................................................. 13 5.4 可扩展性需求......................................................................................... 13 6 产品提交.............................................................................................................. 13 7 实现约束.............................................................................................................. 13 8 总结...................................................................................................................... 13

完成这次设计任务总共用了一个星期时间,前两个日用来收集资料、学习要用到的各项开发技术、进行游戏的系统分析,第三日用来设计系统,第四天来测试及修改。论文的撰写一直贯穿其中。.................. 错误!未定义书签。 9 参考文献.............................................................................................................. 14 10 致 谢.............................................................................................................. 14

1 导言

1.1 目的

该文档是关于用户对于连连看Java小游戏的功能和性能的要求,重点描述了连连看Java小游戏的设计需求,将作为小游戏的说明。

1.2 范围

该文档是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决整个游戏的“做什么”的问题。在这里,对于开发技术并没有涉及,而主要是通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的渠道。

1.3 缩写说明

java

Java Server Page(Java服务器页面)的缩写,一个脚本化的语言。

UML

Java Server Page(Java服务器页面)的缩写,一个脚本化的语言。

1.4 术语定义

1.5 引用标准

[1] 《企业文档格式标准》 V1.1 软件工程教案教程 [2] 《需求规格报告格式标准》 V1.1

软件工程教案教程

1.6 参考资料

[1] 《Java基础教程》 V1.1 软件工程教案教程 [2] 《需求规格报告格式标准》 V1.1

软件工程教案教程

1.7 版本更新信息

本文档的更新记录如表A-1。 表A-1 版本更新记录

2 系统定义

我们分别阐述一下项目的来源、背景和项目的目标。

2.1 项目来源及背景

本项目的是是您的生活不再乏味,让你看到自己的智慧和天赋,使自己对自己更加充满信心。相信通过此游戏会让你看到自己聪明的一面。现在生活忙忙碌使人的心理和身体健康受到很大的威胁。为了解决些问题特此开发了连连看小游戏。

2.2 项目要达到的目标

本项目设定的目标如下:

1. 系统能够提供友好的用户界面,使操作人员的心情放松 2. 系统具有良好的运行效率,能够得到快速发现自我的目的 3. 系统应有良好的可扩充性,可以容易的转入其它系统应用。 4. 平台的设计具有一定的灵活性。

3 应用环境

本项目的应用环境可以分硬件环境、软件环境和网络环境来描述。

3.1 游戏硬件环境

本系统的硬件环境如下: 客户机:普通PC

CPU:P4 1.8GHz 内存:256MB以上

分辨率:推荐使用1024*768像素 数据库服务器

CPU:P4 1.8GHz 内存:256MB以上

3.2 游戏运行软件环境

操作系统:Windows 2000/xp 开发环境:ecpliseme

开发工具包:JDK Version 1.62

4 代码设计:

一.简单代码设计:

1. //连连看java源代码 2. import javax.swing.*; 3. import java.awt.*;

4. import java.awt.event.*;

5. public class lianliankan implements ActionListener 6. {

7. JFrame mainFrame; //主面板 8. Container thisContainer;

9. JPanel centerPanel,southPanel,northPanel; //子面板

10. JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 11. JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始

按钮

12. JLabel fractionLable=new JLabel("0"); //分数标签

13. JButton firstButton,secondButton; //分别记录两次被选中的按钮 14. int grid[][] = new int[8][7];//储存游戏按钮位置

15. static boolean pressInformation=false; //判断是否有按钮被选中 16. int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按

钮的位置坐标

17. int i,j,k,n;//消除方法控制 18. public void init(){

19. } //开始方法: 20. }

21. public void randomBuild() { 22. } //产生随基数

23. public void fraction(){ 24. }//计数

25. public void reload() { 26. } //窗体的重新加载

27. public void estimateEven(int placeX,int placeY,JButton bz) { 28. } //判断两次点击的两次数:

29. public void xiao() { //相同的情况下能不能消去。仔细分析,不一条

30. } //相同的情况下能不能消去。仔细分析,不一条条 31.

32. public void linePassOne(){ 33. } //判断行是否可以消除: 34. public void rowPassOne(){ 35. } //判断列是否可消除; 36. public void remove(){ 37. } //消除所选按钮;

38. public void actionPerformed(ActionEvent e) { 39. } //监听事件;

40. public static void main(String[] args) { 41. }//游戏入口;

二.详细代码编写:

//连连看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;//消除方法控制

1.开始方法:

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]=new

JButton(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(fractionLable.getText())));

northPanel.add(fractionLable);

mainFrame.setBounds(280,100,500,450); mainFrame.setVisible(true); }

2.产生随基数:

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; } } }

3.计数:

public void fraction(){

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100)); }

4.重新加载;

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); } } }

5.判断所单击的两次数是否相同:

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(); } } }

6.消除所选的按钮:

public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释 if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻 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-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮 if (grid[x][i]!=0) { k=0; break; }

else{ k=1; } //K=1说明通过了第一次验证 }

if (k==1) { linePassOne(); } }

if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边

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 ) { linePassOne(); } }

if (k==2) { if (x0==x) { remove(); }

if (x0<x) {

for (n=x0;n<=x-1;n++ ) { if (grid[n][j]!=0) { k=0; break; }

if(grid[n][j]==0 && n==x-1) { remove(); } }

}

if (x0>x) {

for (n=x0;n>=x+1 ;n-- ) { if (grid[n][j]!=0) { k=0; break; }

if(grid[n][j]==0 && n==x+1) { remove(); } } } } }

for (i=0;i<8;i++ ) { //列 if (grid[i][y0]==0) { 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 (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 (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; }

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) { remove(); } } } } } } }

7.判断同行是否可消除:

public void linePassOne(){

if (y0>j){ //第一按钮同行空按钮在左边

for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮 if (grid[x0][i]!=0) { k=0; break; }

else { k=2; } //K=2说明通过了第二次验证 } }

if (y0<j){ //第一按钮同行空按钮在与第二按钮之间 for (i=y0+1;i<=j ;i++){

if (grid[x0][i]!=0) { k=0; break; }

else{ k=2; } } } }

8.判断列是否可消除:

public void rowPassOne(){ if (x0>i) {

for (j=x0-1;j>=i ;j-- ) { if (grid[j][y0]!=0) { k=0; break; }

else { k=2; } } }

if (x0<i) {

for (j=x0+1;j<=i ;j++ ) { if (grid[j][y0]!=0) { k=0; break; }

else { k=2; } } } }

9.消除所选按钮:

public void remove(){

firstButton.setVisible(false); secondButton.setVisible(false); fraction();

pressInformation=false; k=0;

grid[x0][y0]=0; grid[x][y]=0; }

10.按钮的相应事件

public void actionPerformed(ActionEvent e) {

if(e.getSource()==newlyButton){ int grid[][] = new int[8][7]; this.grid = grid; randomBuild();

mainFrame.setVisible(false); pressInformation=false; init(); }

if(e.getSource()==exitButton) System.exit(0);

if(e.getSource()==resetButton) reload();

for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){

if(e.getSource()==diamondsButton[cols][rows])

estimateEven(cols+1,rows+1,diamondsButton[cols][rows]); } } }

11.游戏的入口:

public static void main(String[] args) { lianliankan llk = new lianliankan(); llk.randomBuild(); llk.init(); } }.

5 }性能需求

根据用户对本系统的要求,确定系统在响应时间、可靠性、安全等方面有较高的性能要求。

5.1 界面需求

游戏的界面要求如下:

1)页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确,栏目、菜单设置和布局合理,传递的信息准确;专用术语规范,行文格式统一规范。

2)艺术风格:界面、版面形象清新悦目、布局合理,字号大小适宜、字体选择合理,前后一致,美观大方;动与静搭配恰当,动静效果好;色彩和谐自然,与主题内容相协调。

5.2 响应时间需求

无论是什么游戏,当用户登录,进行任何操作的时候,系统应该及时的进行反应,反应的时间在2秒以内。游戏应能监测出各种非正常情况,避免出现长时间等待甚至无响应。

5.3 开放性需求

游戏应具有十分的灵活性,以适应将来功能扩展的需求。

5.4 可扩展性需求

游戏设计要求能够体现扩展性要求,以适应将来功能扩展的需求。

6 产品提交

提交产品为: a) 应用系统软件包 b) 数据库初始数据 c) 系统开发过程文档 d) 系统使用维护说明文档

提交方式:CD介质

7 实现约束

系统的实现约束如下:

a) 操作系统为Win2000

b) 开发平台为:eclipse-jDK-3.1.2-win32

8 总结

通过此项目的实践,我从中积累了一部分java小项目开发的经验,掌握了部分java类的使用方法,为以后从事软件开发工作奠定了一定的基础。

9 参考文献

主要参考资料:

1.贾素玲、王强主编,张成、朱磊、方敬编著 Java应用开发技术; 2.雷之宇 主编,孙颖、雷鸣宇、赵宇阳 编著 JAVA项目开发实践—网络篇。

10 致 谢

从接受课题到现在完成毕业设计论文,衷心的感谢孔鹏老师给予了精心的指导和热情的帮助,在短暂的两年多大学时光里,同学和朋友们也给了我无私的帮助与支持,在此我对所有学习和生活上帮助过我的同学们表示深深的谢意!

本文来源:https://www.bwwdw.com/article/t7ri.html

Top