JAVA连连看课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滨江学院

实验报告|

|

实验名称JAVA小游戏(连连看)设计

课程名称智能手机程序设计| |

专业班级:信息工程1班

学生姓名:车宇翔

学号:20112309002

指导教师:高超

学期:2013-2014(2)

成绩:

【选题背景】:

连连看游戏经验,玩法简单,休闲,益智,趣味,广受欢迎。

【选题目的】:

学会JAVA程序开发的环境搭建与配置,并在实际运用中学习和掌握JAVA程序开发的全过程。进一步熟悉掌握JAVA程序设计语音的基础内容,如用户图形界面设计、JAVA多线程编程、JAVA数据库编程等。通过亲自动手写程序,拓展知识面,锻炼调试能力。

【系统分析与设计】:

功能分析:实现连连看的基本游戏功能和重置、提示、消除功能

设计:通过对图片的调用以及设置是否可见来完成连连看的效果

【课程设计中碰到的问题及解决方案】:

1.不知道如何进行对数组中两个元素是否可以消除的判断

2.时间条的动态表现

解决方案:

1.对每个相同图案进行循环判断,直到找出满足条件的情况

boolean verticalMatch(Point a, Point b) // 竖线上的判断

boolean horizonMatch(Point a, Point b) // 横线上的判断

2.为了保证动画过程和游戏过程的平行运行,因此将动画分离成一个独立的控件,并且要保证动画有自己单独的线程来运行。当每次用户的分数发生变化时,我们可以使用setScore(int l, int c) 方法同步分数显示的动画效果。

【程序输出结果】:

游戏开始

【程序代码】:

ImageFactory

package nicholas.game.kyodai;

import javax.swing.ImageIcon;

import .*;

public class ImageFactory {

private static ImageFactory imagefactory;

private static ImageIcon images[];

private ImageFactory() {

images = new ImageIcon[54];

URLClassLoader loader = (URLClassLoader)getClass().getClassLoader();

for(int i=0;i<39;i++) {

images[i] = new ImageIcon(getClass().getResource("images/"+i+".gif"));

}

images[39] = new ImageIcon(getClass().getResource("images/dots.gif"));

images[40] = new ImageIcon(getClass().getResource("images/ico.gif"));

images[41] = new ImageIcon(getClass().getResource("images/topbar.gif"));

images[42] = new ImageIcon(getClass().getResource("images/splash.gif"));

images[43] = new ImageIcon(getClass().getResource("images/sico.gif"));

}

public ImageIcon getImageicon(int i) {

return images[i];

}

public static synchronized ImageFactory getInstance() {

if(imagefactory != null) {

return imagefactory;

} else {

imagefactory = new ImageFactory();

return imagefactory;

}

}

}

KyodaiGrid

package nicholas.game.kyodai;

import java.awt.*;

import javax.swing.*;

public class KyodaiGrid extends JLabel {

private int xpos;

private int ypos;

public KyodaiGrid(int x, int y) {

xpos = x;

ypos = y;

this.setHorizontalAlignment(SwingConstants.CENTER);

}

public int getXpos() {

return xpos;

}

public int getYpos() {

return ypos;

}

public boolean isPassable() {

return !isVisible();

}

}

LevelInfo

package nicholas.game.kyodai;

import java.io.Serializable;

public class LevelInfo implements Serializable {//xBound为行号,yBound为列号

private int xBound;

private int yBound;

public LevelInfo() {

xBound = 16;

yBound = 9;

}

public LevelInfo(int x, int y){

xBound = x;

yBound = y;

}

public int getXBound() {

相关文档
最新文档