JAVA连连看课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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() {