1.團隊博客地址:
http://www.cnblogs.com/yzb123/p/7063424.html
2.個人負責模塊或任務說明
- 游戲初始化,清除棋盤上的棋子
- 鼠標監聽器
- 棋子落棋
- 判斷勝負
3.自己的代碼提交記錄截圖
4.自己負責模塊或任務詳細說明
鼠標監聽器:
this.CG= new CheseGame();
addMouseListener(CG);
add(CG);
鼠標點擊:
public void mouseClicked(MouseEvent me) { //throw new UnsupportedOperationException("Not supported yet.");}//鼠標點擊
public void mouseEntered(MouseEvent me) { // throw new UnsupportedOperationException("Not supported yet.");}//鼠標剛進入組件的時候調用(只調用一次)
鼠標釋放(獲取鼠標x,y的坐標且確定黑白子):
public void mousePressed(MouseEvent me) {//鼠標釋放
// throw new UnsupportedOperationException("Not supported yet.");
if(winner == 0)
{
x = me.getX();//獲取鼠標的X坐標位置
y = me.getY();//獲取鼠標的y坐標位置
chb1.setEnabled(false);
chb2.setEnabled(false);
}
x = (int)(x/30)-1;
y = (int)((y-15)/30)-1;
if(x>=0&&x<=19&&y>=0&&y<=19)
{
if(flag == 1&&map[x][y] == 0)
{
map[x][y] = 1;
if(win(x,y))
winner = 1;
flag = 2;
}
else
if(flag == 2&&map[x][y] == 0)
{
map[x][y] = 2;
if(win(x,y))
winner = 2;
flag = 1;
}//在當前位子構造棋子
}
repaint();
}
public void mouseReleased(MouseEvent me) {//當鼠標釋放的時候,調用該函數
// throw new UnsupportedOperationException("Not supported yet.");
}
public void mouseExited(MouseEvent me) {//當鼠標離開的時候,調用該函數
// throw new UnsupportedOperationException("Not supported yet.");
}
判斷勝負:
Boolean win(int x,int y)
{
int score = 1;
for(int i = x;i < x+4;)//橫向x++
{
if(i == 19)
break;
if(map[i][y] != map[++i][y])
break;
score++;
}
for(int i = x;i > x-4;)//橫向x--
{
if(i == 0)
break;
if(map[i][y] != map[--i][y])
break;
score++;
}
if(score >= 5)
return true;
else
score = 1;
for(int j = y; j < y+4;)//縱向y++
{
if(j == 19)
break;
if(map[x][j] != map[x][++j])
break;
score++;
}
for(int j = y; j > y-4;)//縱向y--
{
if(j == 0)
break;
if(map[x][j] != map[x][--j])
break;
score++;
}
if(score >= 5)
return true;
else
score = 1;
for(int i = x;i < x+4;)//斜向x++、y++
for(int j = y;j < y+4;)
{
if(i == 19 || y == 19)
{i = x+4; break;}
if(map[i][j] != map[++i][++j])
{
i = x+4;
break;
}
score++;
}
for(int i = x;i > x-4;)//斜向x--、y--
for(int j = y;j > y-4;)
{
if(i == 0||j==0)
{i = x-4; break;}
if(map[i][j] != map[--i][--j])
{
i = x-4;
break;
}
score++;
}
if(score >= 5)
return true;
else
score = 1;
for(int i = x;i > x-4;)//斜向x--、y++
for(int j = y;j < y+4;)
{
if(i==0 || j==19)
{ i = x-4;break;}
if(map[i][j] != map[--i][++j])
{
i = x-4;
break;
}
score++;
}
for(int i = x;i < x+4;)//斜向x++、y--
for(int j = y;j > y-4;)
{
if(i==19||j==0)
{ i = x+4;break;}
if(map[i][j] != map[++i][--j])
{
i = x + 4;
break;
}
score++;
}
if(score >= 5)
return true;
else
return false;
}
5.課程設計感想
在編程時無法實現悔棋與網絡連接功能的實現。在設計悔棋時想用另一個數組儲存棋子的位置,然后再寫一個back函數進行返回,嘗試過多次還是沒有實現。感覺水平不夠還是選低等級的題目來寫,高等級的難度太大了。