信息与计算科学0601王丹平060701024
// 出现的不同图片个数 private int maxKinds = 4; public Map(){ init(); }
public int[][] getMap(){ return map; }
private void init(){
int[] tempArr = new int[Settings.ROWS * Settings.COLUMNS]; int len = tempArr.length;
// 根据图片的种类数来确定数组大小,如有64张图片,每四个为一样的,则
需要图片数为64/4=16
for (int i = 0; i < len / maxKinds; i++){ }
// 打乱一维数组内数据的排列 random(tempArr); // 填充到二维数组中
for (int i = 1; i < Settings.ROWS + 1; i++){
for (int j = 1; j < Settings.COLUMNS + 1; j++){
this.map[i][j] = tempArr[(i - 1) * Settings.COLUMNS
+ (j - 1)];
tempArr[i * 4] = i + 1; tempArr[i * 4 + 1] = i + 1; tempArr[i * 4 + 2] = i + 1; tempArr[i * 4 + 3] = i + 1;
14
信息与计算科学0601王丹平060701024
} }
}
private void random(int[] array){ Random random = new Random(); int len = array.length; for (int i = len; i > 0; i--){ } } /**
* 判断是否在一条直线上,这里不去比较两者值是否相等,主要用于后面
int j = random.nextInt(i); int temp = array[i - 1]; array[i - 1] = array[j]; array[j] = temp;
两个拐点的情况
* p1之前的点 * p2当前所点的点 * true 相通,false 不通 */
public boolean oneLineWithoutValue(ArrayPoint p1, ArrayPoint p2){ if (horizonMatch(p1, p2)){ }
else if (verticalMatch(p1, p2)){
return true; return true;
15
信息与计算科学0601王丹平060701024
}
return false; } /**
* 判断是否在一条直线上,其中包括了垂直和水平两种情况 * p1之前的点 * p2当前所点的点 * true 相通,false 不通 */
public boolean oneLine(ArrayPoint p1, ArrayPoint p2){ if (p1.value != p2.value){ }
if (oneLineWithoutValue(p1, p2)){ }
return false; } /**
* 竖线上的判断 * p1之前的点 * p2当前所点的点 * true 相通,false 不通 */
public boolean verticalMatch(ArrayPoint p1, ArrayPoint p2){ if (p1.j != p2.j){
return true; return false;
16
信息与计算科学0601王丹平060701024
}
return false;
if (p1.i > p2.i){ }
// 之间的相隔的棋子数
int spaceCount = p2.i - p1.i; // 如果相邻,直接消除
if (spaceCount == 1 && p1.value == p2.value){ }
for (int i = p1.i + 1; i < p2.i; i++){ }
return true; } /**
* 水平方向的判断 * p1之前的点
ArrayPoint point = new ArrayPoint(i, p1.j, map[i][p1.j]); // 只要其值为0就表示没有棋子 if (point.value != 0){ }
return false; return true;
ArrayPoint temp = null; temp = p1; p1 = p2; p2 = temp;
17
信息与计算科学0601王丹平060701024
* p2当前所点的点 * true 相通,false 不通 */
public boolean horizonMatch(ArrayPoint p1, ArrayPoint p2){ // 如果行行号不等的话,刚不是水平方向的结果 if (p1.i != p2.i){ }
if (p1.j > p2.j){ }
// 水平相隔棋子数
int spaceCount = p2.j - p1.j; // 如果相邻,直接消除
if (spaceCount == 1 && p1.value == p2.value){ }
for (int i = p1.j + 1; i < p2.j; i++){ }
ArrayPoint p = new ArrayPoint(p1.i, i, map[p1.i][i]); if (p.value != 0){ }
return false; return true;
ArrayPoint temp = null; temp = p1; p1 = p2; p2 = temp; return false;
18
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java连连看课程设计(6)在线全文阅读。
相关推荐: