Java实现五子棋小游戏(对新手极为友好的版本)
写在前面的话:“ 你现在的状态,是过去的你用努力换来的,而你未来的状态,是现在的你用努力决定的。”
九月你好,还未还得及感受,你就要离去。以前总是担心着未来的未发生的事情,前几天听完bilibi架构师学长对我问题的回答后。有所感触。我想,现在的我,规划好以后要做的事情,把目前手里的事情做好,不好高骛远,脚踏实地,充实自己,机会是留给有准备的人的。我是梦阳辰,快和我一起加油吧!
效果预览:
文章目录
1.设计棋盘类用来构建棋盘。
2.设计棋局类,用来保存棋局情况(用二维数组存储)。
3.设计物理地址类用来表示物理地址。
4.设计逻辑地址类用来表示棋盘上逻辑坐标。
5.系统游戏类,也为主类。用来绘制棋盘,绘制棋子,并对用户单击鼠标(下棋)进行响应(做相应的处理)。
6.因为监听鼠标单击一直在进行,所以游戏可以一直运行,知道用户主动退出游戏。
判断输赢的核心算法:
通过判断当前所下棋子是否与周围(米字方向)同色棋子组成五连珠。
/**S
* 判断棋局是否获胜(落点位置周围是否有5个相同颜色的棋子
* @return -1黑色方赢 0平局 1白色方赢
*/
public int isWin(CoordinateLogical c,int color){
//竖直方向
int count=-1;//初值为-1的原因:(当前所下棋子算了两次)
for(int i=c.getRow();i>=0;i--){
if(situation[i][c.getCol()]==color){
count++;
}
else {
break;
}
}
for(int i=c.getRow();i<Chessboard.getRows();i++){
if(situation[i][c.getCol()]==color){
count++;
}
else {
break;
}
}
if(count==5){
return color;
}
//水平方向
count=-1;
for(int i=c.getCol();i>=0;i--){
if(situation[c.getRow()][i]==color){
count++;
}
else {
break;
}
}
for(int i=c.getCol();i<Chessboard.getCols();i++){
if(situation[c.getRow()][i]==color){
count++;
}
else {
break;
}
}
if(count==5){
return color;
}
//斜左下到右上方向
count=-1;
for(int i=c.getRow(),j=c.getCol();i>=0&&j<=Chessboard.getCols()-1;i--,j++){//右上
if(situation[i][j]==color){
count++;
}
else