java实现四子棋游戏
非常简单的四子棋游戏
本人是刚学java的小白,最近在书上看到了有关四子棋游戏的编程题,就试着来写一写,代码也比较简单。
思路
写四子棋的难点是如何判断四个棋子连在一起。
下面给出图解:
观察上图,先从落棋点开始,设置一个计数器i,并初始化它为1,像左端移动,遇到的是跟落棋点相同颜色的棋子,则使i加1,继续向左端移动,没有棋子,则回到落棋点从而向右移动,向右端移动遇到第三个相同的棋,这时i=3,然后继续向右移动遇到第四个棋子使i=4,到最后只要i=4,即游戏胜利。再看下图。
按照上面的流程,先向左边移动,遇到没有棋子的点停止后i=2,再向右移动,遇到不同颜色的棋子后停止,i=3,这样落棋点两边方向判断结束后,i<4即游戏继续。
总结
判断游戏是否胜利,就是从棋子落点两个相反的方向,遇到相同的棋子使计数器数值加1,遇到无棋或颜色不同就结束向另一个方向,直到遇到无棋子和不同颜色的棋子,然后判断计数器是否为4。在四子棋中有7个方向需要判断。
importjava.util.Scanner; /** * * *玩法:1.跟五子棋玩法差不多,只是少一颗子,下棋只能选择每列下在每列棋子上面一格。 *2.棋子分为黄、红,执黄先行。 *3.胜利条件跟五子棋一样,就是少一颗子。 */ classDesk{ //棋桌类 privatechar[][]date=newchar[6][7]; privateScannerscanner=newScanner(System.in); privateinthand=1; //画出整个棋盘以及上面的棋子 publicvoiddraw(){ for(inti=0;i=0;i--){// if(date[i][place]=='\u0000'){ date[i][place]=color; break; } } if(i<0)System.exit(1); elsewin(i,place,color); } //判断游戏是否有人胜利或平局(依据是根据落子位置的两个方向是否连成四子) publicvoidwin(intx,intplace,charcolor){ intnumber=1; //第一个方向(右斜线方向) for(inti=x-1,j=place-1;(i>=0)&&(j>=0);i--,j--){ if(date[i][j]==color){ number++; } elsebreak; } for(inti=x+1,j=place+1;(i<=5)&&(j<=6);i++,j++){ if(date[i][j]==color){ number++; } elsebreak; } if(number==4)end(color,"win"); //第二个方向(左斜线方向) number=1; for(inti=x-1,j=place+1;(i>=0)&&(j<=6);i--,j++){ if(date[i][j]==color){ number++; } elsebreak; } for(inti=x+1,j=place-1;(i<=5)&&(j>=0);i++,j--){ if(date[i][j]==color){ number++; } elsebreak; } if(number==4)end(color,"win"); //第三个方向(水平) number=1; for(inti=x,j=place-1;j>=0;j--){ if(date[i][j]==color){ number++; } elsebreak; } for(inti=x,j=place+1;j<=6;j++){ if(date[i][j]==color){ number++; } elsebreak; } if(number==4)end(color,"win"); //第四个方向(竖直) number=1; for(inti=x+1,j=place;i<=5;i++){ if(date[i][j]==color){ number++; } elsebreak; } if(number==4)end(color,"win"); //判断平局 for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。