**:
public class startchessjframe extends jframe
menubar.add(sysmenu);
//將系統選單新增到選單欄上
setjmenubar(menubar);
// 將 menubar 設定為選單欄
******* =new jpanel();
//工具面板欄例項化
startbutton= new jbutton("重新開始");
//三個按鈕初始化
backbutton= new jbutton("悔棋");
exitbutton= new jbutton("退出");
*******.setlayout(new flowlayout(flowlayout.left));
// 將 工 具 面 板 按 鈕 用flowlayout 布局
*******.add(startbutton);
//將三個按鈕新增到工具面板上
*******.add(backbutton);
*******.add(exitbutton);
startbutton.addactionlistener(lis);
//將三個按鈕註冊監聽事件
backbutton.addactionlistener(lis);
exitbutton.addactionlistener(lis);
add(*******,borderlayout.south);
//將工具面板布局到介面下面
add(chessboard);
//將面板物件新增到窗體上
setdefaultcloseoperation(jframe.exit_on_close);
//設定介面關閉事件
//setsize(800,800);
pack(); // 自適應大小
}private class myitemlistenerimplementsactionlistenerelse if(obj == exitmenuitem || obj== exitbutton) else if(obj == backmenuitem|| obj == backbutton)
} }public static void main(string args)
} }
**:
public class point
public int getx()
public int gety()
public color getcolor()
}
**:
public class chessboard extends jpanel implements mouselistener
@override
public void mousedragged(mouseevent e)
}); }
public void paintcomponent(graphics g)
for (int i= 0; i<= cols; i++)
// 畫棋子
for (int i= 0; i< chesscount; i++)
} }public void mousepressed(mouseevent e)
isblack= !isblack;
} // 覆蓋 mouselistener 的方法
public void mouseclicked(mouseevent e) // 滑鼠按鍵在元件上單擊(按下並釋放)時呼叫。
public void mouseentered(mouseevent e)// 滑鼠進入到元件上時呼叫。
public void mouseexited(mouseevent e)// 滑鼠離開元件時呼叫。
public void mousereleased(mouseevent e) // 滑鼠按鈕在元件上釋放時呼叫。
// 在棋子陣列中查詢是否有索引為 x,y 的棋子存在
private boolean findchess(int x, int y)
return false;
}private boolean iswin()
else break;
} // 橫向向左尋找
for (int x=xindex +1; x<= rows; x++)
else break;
} if(continuecount>= 5)
else continuecount = 1;
// 繼續另一種情況的搜尋: 縱向
// 縱向向上尋找
for (int y=yindex - 1; y>= 0; y--)
else break;
} // 縱向向下尋找
for (int y=yindex +1; y<= rows; y++) else break;
} if(continuecount>= 5)else continuecount = 1;
//繼續另一種情況的搜尋: 縱向
// 縱向向上尋找
for (int y=yindex - 1; y>= 0; y--) else break;
} // 縱向向下尋找
for (int y=yindex +1; y<= rows; y++)
else break;
} if(continuecount>= 5)
else continuecount = 1;
//繼續另一種情況的搜尋: 斜向
// 左上尋找
for (int x=xindex +1, y= yindex- 1; y>= 0&&x<= cols; x++, y--)
else break;
} // 左下尋找
for (int x=xindex - 1, y=yindex +1; y<= rows &&x>= 0; x--, y++)
else break;
}if(continuecount>= 5)
else
continuecount = 1;
//繼續另一種情況的搜尋: 斜向
// 右上尋找
for (int x=xindex - 1, y=yindex - 1; y>= 0&&x>= 0; x--, y--)
else break;
} // 右下尋找
for (int x=xindex +1, y= yindex+ 1; y<= rows &&x<= cols; x++, y++)
else break;
} if(continuecount>= 5)else continuecount = 1;
return false;
}private point getchess(int xindex, int yindex, color color)
return null;
}public void restartgame()
// 悔棋
public void goback()
isblack= !isblack; repaint();
}// dimension: 矩形
大家自己去試一下吧
人人對戰五子棋
c語言人人對戰五子棋 看起來五子棋很簡單,但是對於其中有許多需要考慮的因素,所以前前後後大概花了有24小時左右的時間,找bug的時間應該花的是最多的,另外主要是自己的思考非常重要,不能忙碌的複製別人的 別人每一行 都需要弄清楚,不是簡單意義上的搬磚,那樣對於自己是沒有一點成長的。以下附上我的 c 中...
五子棋人機對戰
參考 人機對戰 填子遊戲的攻防策略 關於機器的應對策略,在前文中有所表述,不一一解釋,本文進行了修繕和補強,但漏銅依然存在。增加了乙個倒計時功能,測試了一下,感覺一般,還是留在那裡,表明曾經研究過,供今後完善 增加了棋譜儲存功能和回放功能 增加了悔棋功能,這個還是有些用處的。另外策略中增加了禁手。如...
C語言實現雙人對戰五子棋遊戲
在編寫五子棋遊戲前首先對整個專案進行分析 1 五子棋的介面繪製及顯示 2 對輸入的資料進行寫入 3 判斷輸入的資料多對應的位置上是否可以下棋其中包括檢測此位置是否為空及是否超出下棋的有效位置 越界超出棋盤大小 4 判斷五個棋子相連的情況 5 檢測勝利 6 整合所有函式功能實現雙人對戰的效果 以下內容...