8:55 2008-6-6
花了半小时左右,已经可以运行了.
但是还是有点问题.
主要是使用多个类来处理
感觉复杂性增加了. 做小游戏确实不必要
不过大型应用程序确实是需要的.
这里算是练习了.
10:10 2008-6-5
花了约1小时试图通过玩家-裁判-玩家的方式对程序进一点进行了控制
但是发现结果没有想象得那么顺利.
玩家, 视图, 控制,几个之间的关系也有理清楚,
先了MVC对我有点帮助, 学习中.
13:27 2008-6-4
20分钟.加入了声音功能,同时把棋子换成图片了.
6-3 13:30
用了半小时把算法独立出来成类Level1
同时界面部分已经没有什么问题了
下步加入背景音乐
6-2 22:00
已经基本可以玩了,但是还有点小问题。
6-2 18:00
30分钟用于写SetChess, 同时类的封闭,还有难度等级的概念。
30min setchess enculsulate Level
5-31
把权值的检测函数写成一个函数,目前不有点BUG要修正.
5-30
用了大概2小时时间。
在老的IsGameOver()计算方法之后,又实现了新的IsGameOver1()计算方法根据节点上下左右斜的8个方向计算GAVEOVER.
定义了ChessMan类,用于表现棋子
初步实现了基本算法,已经可以玩了,只是还有点小问题。貌似是数组边界问题。
5-29
用了2小时实现了类的定义,不过内容基本还是空的.现在需要完成以下内容:
1.游戏结束的重新计算
2.权的重新计算
5-28
临睡前用了1小时,完成了界面部分.
int CheckRow(int i, int j, int k)
{
int m;
int tmp = 0;
int result = 0;
int x;
int sum = 0;
x = k == 1 ? 2 : 1;
//if (k == 2)
// x = 3; /* k表示当前子的颜色 */
//else x = 2;
for (m = 1; m <= 4; m++)
{
if (Matrix[i + 1][j] == 0 || Matrix[i + 1][j] == x || (i + m) == Dimension - 2) break;
if (Matrix[i + m][j] == k)
{
tmp++;
sum++;
}
else if (Matrix[i + m][j] == x)
{
tmp--;
break;
}
else break;
}
for (m = 1; m <= 4; m++)
{
if (Matrix[i - 1][j] == 0 || Matrix[i - 1][j] == x || (i - m) == 2) break;
if (Matrix[i - m][j] == k)
{
tmp++;
sum++;
}
else if (Matrix[i - m][j] == x)
{
tmp--;
break;
}
else break;
}
if (tmp == 1) result = 1;
else if (tmp == 2) result = 4;
else if (tmp == 3) result = 16;
else if (tmp == 4) result = 64;
else if (tmp == 5) result = 256;
else if (tmp > 5) result = 1024;
else tmp = 0;
if (sum >= 4 && tmp < 4) result += 64;
return result;
}
int CheckCol(int i, int j, int k)
{
int m;
int tmp = 0;
int result = 0;
int x;
int sum = 0;
if (k == 2) x = 3; /* k表示当前子的颜色 */
else x = 2;
for (m = 1; m <= 4; m++)
{
if (Matrix[i][j + 1] == 0 || Matrix[i][j + 1] == x || (j + m) == Dimension - 2) break;
if (Matrix[i][j + m] == k)
{
tmp++;
sum++;
}
else if (Matrix[i][j + m] == x)
{
tmp--;
break;
}
else break;
}
for (m = 1; m <= 4; m++)
{
if (Matrix[i][j - 1] == 0 || Matrix[i][j - 1] == x || (j - m) == 2) break;
if (Matrix[i][j - m] == k)
{
tmp++;
sum++;
}
else if (Matrix[i][j - m] == x)
{
tmp--;
break;
}
else break;
}
if (tmp == 1) result = 1;
else if (tmp == 2) result = 4;
else if (tmp == 3) result = 16;
else if (tmp == 4) result = 64;
else if (tmp == 5) result = 256;
else if (tmp > 5) result = 1024;
else tmp = 0;
if (sum >= 4 && tmp < 4) result += 64;
return result;
}
int CheckRiX(int i, int j, int k)
{
int m;
int tmp = 0;
int result = 0;
int x;
int sum = 0;
if (k == 2) x = 3; /* k表示当前子的颜色 */
else x = 2;
for (m = 1; m <= 4; m++)
{
if (Matrix[i - 1][j + 1] == 0 || Matrix[i - 1][j + 1] == x || (j + m) == Dimension - 2) break;
if (Matrix[i - m][j + m] == k)
{
tmp++;
sum++;
}
else if (Matrix[i - m][j + m] == x)
{
tmp--;
break;
}
else break;
}
for (m = 1; m <= 4; m++)
{
if (Matrix[i + m][j - m] == 0 || Matrix[i + m][j - m] == x || (j - m) == 2) break;
if (Matrix[i + m][j - m] == k)
{
tmp++;
sum++;
}
else if (Matrix[i + m][j - m] == x)
{
tmp--;
break;
}
else break;
}
if (tmp == 1) result = 1;
else if (tmp == 2) result = 4;
else if (tmp == 3) result = 16;
else if (tmp == 4) result = 64;
else if (tmp == 5) result = 256;
else if (tmp > 5) result = 1024;
else tmp = 0;
if (sum >= 4 && tmp < 4) result += 64;
return result;
}
int CheckLeX(int i, int j, int k)
{
int m;
int tmp = 0;
int result = 0;
int x;
int sum = 0;
if (k == 2) x = 3; /* k表示当前子的颜色 */
else x = 2;
for (m = 1; m <= 4; m++)
{
if (Matrix[i - 1][j - 1] == 0 || Matrix[i - 1][j - 1] == x || (j - m) == 2) break;
if (Matrix[i - m][j - m] == k)
{
tmp++;
sum++;
}
else if (Matrix[i - m][j - m] == x)
{
tmp--;
break;
}
else break;
}
for (m = 1; m <= 4; m++)
{
if (Matrix[i + m][j + m] == 0 || Matrix[i + m][j + m] == x || (j + m) == 2) break;
if (Matrix[i + m][j + m] == k)
{
tmp++;
sum++;
}
else if (Matrix[i + m][j + m] == x)
{
tmp--;
break;
}
else break;
}
if (tmp == 1) result = 1;
else if (tmp == 2) result = 4;
else if (tmp == 3) result = 16;
else if (tmp == 4) result = 64;
else if (tmp == 5) result = 256;
else if (tmp > 5) result = 1024;
else tmp = 0;
if (sum >= 4 && tmp < 4) result += 64;
return result;
}
int CheckValue(int x)
{
if (x >= 64) return 6;
else if (x >= 32) return 5;
else if (x >= 16) return 4;
else if (x >= 8) return 3;
else if (x >= 4) return 2;
else if (x >= 2) return 1;
else return 0;
}