飞道的博客

小游戏——五子棋

419人阅读  评论(0)

首先介绍一下五子棋的规则:

1、参与人数为两个人;

2、一个人代表黑方,一个人代表白方;

3、先在棋盘上不管是水平、竖直、左斜、右斜的这四个方向上出现连续的五个颜色相同的棋子,表示该方获胜。

接下来再介绍在控制台是如何打印一个五子棋——

1、规定棋盘的大小为:10*10,并且用0来表示初始化的棋盘;

2、用1表示黑方,用2表示白方;

具体的代码实现如下:


  
  1. import java.util.Scanner;
  2. class Chess{
  3. public static Scanner input= new Scanner(System.in);
  4. public static int[][] chess= new int[ 10][ 10];
  5. public static int BLACK_CHESS= 1; //黑棋
  6. public static int WRITE_CHESS= 2; //白棋
  7. public static void main(String[] args){
  8. while( true){
  9. /*
  10. 在游戏刚开始的时候,先进行一轮判断,相当于图形化界面中的
  11. 进入游戏和退出游戏——用Y表示进入游戏,N表示退出游戏
  12. */
  13. System.out.print( "游戏已经开始了,请您输入Y或N:");
  14. char start=input.next().charAt( 0);
  15. if(start== 'Y'){
  16. break;
  17. } else{
  18. continue;
  19. }
  20. }
  21. /*
  22. 初始化棋盘
  23. */
  24. initChess();
  25. /*
  26. 打印棋盘
  27. */
  28. printChess();
  29. /*
  30. 黑白方下棋——奇黑偶数
  31. */
  32. int num=( int)(Math.random()* 2);
  33. while( true){
  34. boolean flag;
  35. if(num% 2== 0){
  36. System.out.println( "请黑方开始下棋");
  37. if(downChess(BLACK_CHESS)){
  38. /*
  39. 判断输赢
  40. */
  41. flag=isGameOver();
  42. if(flag){
  43. System.out.println( "黑方胜");
  44. break;
  45. }
  46. num++;
  47. /*
  48. 打印黑方下完更新后的棋盘
  49. */
  50. printChess();
  51. }
  52. } else{
  53. System.out.println( "请白方开始下棋");
  54. if(downChess(WRITE_CHESS)){
  55. /*
  56. 判断输赢
  57. */
  58. flag=isGameOver();
  59. if(flag){
  60. System.out.println( "白方胜");
  61. break;
  62. }
  63. num++;
  64. /*
  65. 打印白方下完更新后的棋盘
  66. */
  67. printChess();
  68. }
  69. }
  70. /*
  71. 是否为平局——如果为平局,该棋盘中无一个0出现
  72. */
  73. if(isDraw()){
  74. System.out.println( "该局为平局");
  75. break;
  76. }
  77. }
  78. }
  79. /*
  80. 是否为平局
  81. */
  82. public static boolean isDraw(){
  83. boolean flag= true;
  84. for( int i= 0;i<chess.length;i++){
  85. for( int j= 0;j<chess[i].length;j++){
  86. /*
  87. 遍历该棋盘中的每一个位置,判断该位置是否有0;
  88. 如果有,还没到平局
  89. 否则,平局
  90. */
  91. if(chess[i][j]== 0){
  92. flag= false;
  93. }
  94. }
  95. System.out.println();
  96. }
  97. return flag;
  98. }
  99. /*
  100. 判断输赢
  101. */
  102. public static boolean isGameOver(){
  103. boolean flag= true;
  104. for( int i= 0;i<chess.length;i++){
  105. for( int j= 0;j<chess[ 0].length;j++){
  106. /*
  107. 水平
  108. */
  109. if(j<=chess[i].length- 5){
  110. for( int c=j+ 1;c<=j+ 4;c++){
  111. if(chess[i][j]!=chess[i][c]){
  112. flag= false;
  113. break;
  114. }
  115. }
  116. if(flag){
  117. return true;
  118. }
  119. }
  120. /*
  121. 竖直
  122. */
  123. if(i<=chess.length- 5){
  124. for( int r=i+ 1;r<=i+ 4;r++){
  125. if(chess[i][j]!=chess[r][j]){
  126. flag= false;
  127. break;
  128. }
  129. }
  130. if(flag){
  131. return true;
  132. }
  133. }
  134. /*
  135. 右斜
  136. */
  137. if(i>= 4&&j<=chess[ 0].length- 5){
  138. for( int r=i- 1,c=j+ 1;c<=j+ 4;r--,c++){
  139. if(chess[i][j]!=chess[r][c]){
  140. flag= false;
  141. break;
  142. }
  143. }
  144. if(flag){
  145. return true;
  146. }
  147. }
  148. /*
  149. 左斜
  150. */
  151. if(i<=chess.length- 5&&j<=chess[ 0].length- 5){
  152. for( int r=i+ 1,c=j+ 1;r<=i+ 4;r++,c++){
  153. if(chess[i][j]!=chess[r][c]){
  154. flag= false;
  155. break;
  156. }
  157. }
  158. if(flag){
  159. return true;
  160. }
  161. }
  162. }
  163. }
  164. return false;
  165. }
  166. /*
  167. 初始化棋盘
  168. */
  169. public static void initChess(){
  170. for( int i= 0;i<chess.length;i++){
  171. for( int j= 0;j<chess[i].length;j++){
  172. chess[i][j]= 0;
  173. }
  174. }
  175. }
  176. /*
  177. 打印棋盘
  178. */
  179. public static void printChess(){
  180. for( int i= 0;i<chess[ 0].length;i++){
  181. System.out.printf( "%3d",i+ 1);
  182. }
  183. System.out.println();
  184. for( int i= 0;i<chess.length;i++){
  185. System.out.printf( "%-2d",i+ 1);
  186. for( int j= 0;j<chess[i].length;j++){
  187. System.out.print(chess[i][j]+ " ");
  188. }
  189. System.out.println();
  190. }
  191. }
  192. /*
  193. 黑白方下棋——奇黑偶数
  194. */
  195. public static boolean downChess(int num){
  196. boolean flag= true;
  197. System.out.print( "输入自己想在棋盘上想要下的位置(即坐标):");
  198. int x=input.nextInt()- 1;
  199. int y=input.nextInt()- 1;
  200. if(chess[x][y]== 0){
  201. chess[x][y]=num;
  202. } else{
  203. flag= false;
  204. }
  205. return flag;
  206. }
  207. }

 

 


转载:https://blog.csdn.net/Tough_dxx/article/details/104407352
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场