作者:yinowl
2005年1月
1.1版注:完善了游戏输赢的判定,由于考虑的比较匆忙,没有非常仔细地考量算法的优劣程度,目的主要对游戏的输赢进行一种实现,嵌入到程序中,给大家做为一个参考,由于其他内容和1.0版完全相同,我就把输赢实现这一节提到最前面,后面再补上所有的内容。
游戏输赢
最后要说的是判定游戏的输赢。我的思路是,每次在玩家着棋(按下5)时,判定棋局的输赢,然后用一个 Alert 显示哪一方赢了以及当前的比分,返回后开始新的一局。判定的逻辑是,在当前所下的棋子的0/180度、90/270度、45/225度、135/315度四个方向上分别往两头按照由近至远的顺序判定各5个棋子是否是当前下棋方的棋子,假如是则累加到一个变量上,假如在到达5之前出现“否”的情况,则中止在这一方向或这一角度的判定,变量归1(应为当前棋子肯定是当前下棋方下完的棋子)并进行下一个方向或角度。在判定是否是当前方时,用当前 isPlayer1 变量和棋子对象的 isPlayer1 变量进行比交。源代码如下:
int player1win,player2win;
protected synchronized void keyPressed(int keyCode) {
...
else if (action == Canvas.FIRE) {
if(chesses[selectedY][selectedX]==null){
chesses[selectedY][selectedX]=new Chesses(this.isPlayer1);
if(checkWin()){
String winner;
if(isPlayer1){
winner="白方胜利";
player1win++;
}
else{
winner="红方胜利";
player2win++;
}
try{
Thread.sleep(3000);