从现在开始,我将用三个博客的篇幅来分享连连看游戏的开发与制作。今天分享第一个版本的连连看游戏,希望大家可以喜欢。目前系统功能已经很全面,整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。运行主程序,或者执行打开JAR文件即可以运行本程序。运行程序可以对准Main.Java文件,点右键 run as application,也可以打包成jar包,双击JAR包即可以。
系统框架
利用JDK自带的SWING框架开发,不需要安装第三方JAR包。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档
游戏规则
1 只要将相同的两张牌用三根以内的直线连在一起消除即可。
2 实时记录可以消除的方块的数量
3 当玩家在玩游戏的过程中,发现有可以消除的图标的时候,可以用不超过3根直线连接起来。连接起来后,马上消除相应的图标
4 玩家再玩游戏的过程中,可以随时退出当前游戏,或者重新来一盘游戏
运行效果
1 游戏截图1
2 游戏截图2
3 游戏截图3
4 游戏截图4
5 游戏截图5
6 游戏截图6
关键代码
package 连连看;
import java.util.ArrayList;
public class Map {
private int[][] map;
private int count;
private int n;
public Map(int count,int n){//一共有count种不同的图案,n行n列
map = MapFactory.getMap(n);//获取n行n列的数组
this.count = count;
this.n = n;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public int[][] getMap(){
ArrayList<Integer> list = new ArrayList<Integer>();//先将等量图片ID添加到list中
for(int i=0;i<n*n/10;i++){
for(int j=0;j<count;j++){
list.add(j);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
int index = (int) (Math.random()*list.size());//从list中随机取一个图片ID,并将其添加到数组中,再从list中删除掉它
map[i][j] = list.get(index);
list.remove(index);
}
}
return map;//返回一个图片随机生成的地图数组
}
public int[][] getResetMap(){//获取再次打乱后的地图信息
ArrayList<Integer> list = new ArrayList<Integer>();//list用来存储原先的地图信息
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(map[i][j]!=-1)//如果(x,y)处的图片ID不为-1,那么将该图片id添加到list
list.add(map[i][j]);
map[i][j]=-1;
}
}
//将原先地图上剩余的未消去的图片打乱
while(!list.isEmpty()){
int index = (int) (Math.random()*list.size());//从list中随机取一个图片ID,并将其添加到数组中,再从list中删除掉它
boolean flag = false;
while(!flag){
int i = (int) (Math.random()*n);//获取随机的地图行列
int j = (int) (Math.random()*n);
if(map[i][j]==-1){//如果该位置无图片
map[i][j] = list.get(index);
list.remove(index);
flag = true;
}
}
}
return map;
}
}
项目总结
开发一套系统,最重要的是细心,并不是一定要做到面面俱到,在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。 通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。