C语言编写三子棋作业
1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 #include "testgame.h" 4 void menu() 5 { 6 printf("***************************\n"); 7 printf("******* 1.玩游戏 ********\n"); 8 printf("******* 2.退 出 ********\n"); 9 printf("***************************\n"); 10 } 11 void game() 12 { 13 char ret = 0; 14 srand((unsigned int)time(NULL)); 15 char board[ROW][COL] = { 0 }; 16 //初始化棋盘 17 InitBoard(board, ROW, COL); 18 //打印棋盘 19 //DisplayBoard(board, ROW, COL); 20 while (1) 21 { 22 //电脑下棋 23 ComputerMove(board, ROW, COL); 24 DisplayBoard(board, ROW, COL); 25 //判断输赢 26 ret = IsWin(board, ROW, COL); 27 if (ret != 'C') 28 { 29 break; 30 } 31 //玩家下棋 32 PlayerMove(board, ROW, COL); 33 DisplayBoard(board, ROW, COL); 34 //判断输赢 35 ret = IsWin(board, ROW, COL); 36 if (ret != 'C') 37 { 38 break; 39 } 40 41 } 42 if (ret == '*') 43 { 44 printf("玩家赢!\n"); 45 } 46 else if (ret == '#') 47 { 48 printf("电脑赢!\n"); 49 } 50 else if (ret == 'Q') 51 { 52 printf("平局!\n"); 53 } 54 55 56 } 57 int main() 58 { 59 int input = 0; 60 do 61 { 62 menu(); 63 printf("请输入>:"); 64 scanf("%d", &input); 65 switch (input) 66 { 67 case 1: 68 printf("玩游戏!\n"); 69 game(); 70 break; 71 case 0: 72 printf("退出游戏!\n"); 73 break; 74 default: 75 printf("输入错误,请重新输入!\n"); 76 break; 77 } 78 79 } while (input); 80 return 0; 81 }
1 #include "testgame.h" 2 3 //初始化棋盘 4 void InitBoard(char board[ROW][COL], int row, int col) 5 { 6 int i = 0; 7 int j = 0; 8 for (i = 0; i < row; i++) 9 { 10 for (j = 0; j < col; j++) 11 { 12 board[i][j] = ' '; 13 } 14 } 15 } 16 17 //打印棋盘 18 void DisplayBoard(char board[ROW][COL], int row, int col) 19 { 20 int i = 0; 21 int j = 0; 22 for (i = 0; i < row; i++) 23 { 24 for (j = 0; j < col; j++) 25 { 26 printf(" %c ", board[i][j]); 27 if (j < col - 1) 28 { 29 printf("|"); 30 } 31 } 32 printf("\n"); 33 if (i < row - 1) 34 { 35 for (j = 0; j < col; j++) 36 { 37 printf("---"); 38 if (j < col - 1) 39 { 40 printf("|"); 41 } 42 43 } 44 } 45 46 printf("\n"); 47 } 48 } 49 50 //玩家下棋 51 void PlayerMove(char board[ROW][COL], int row, int col) 52 { 53 int i = 0; 54 int j = 0; 55 56 while (1) 57 { 58 printf("玩家下棋>:"); 59 scanf("%d%d", &i, &j); 60 if (i-1 > row || j-11 > col) 61 { 62 printf("非法坐标,请重新输入!\n\n"); 63 continue; 64 } 65 else if (i-1 < 0 || j-1 < 0) 66 { 67 printf("非法坐标,请重新输入!\n\n"); 68 continue; 69 } 70 else if (board[i-1][j-1] == ' ') 71 { 72 board[i-1][j-1] = '*'; 73 printf("\n"); 74 break; 75 } 76 else 77 { 78 printf("已有棋子,请重新输入\n\n"); 79 } 80 } 81 } 82 83 //电脑下棋 84 void ComputerMove(char board[ROW][COL], int row, int col) 85 { 86 int i = 0; 87 int j = 0; 88 printf("电脑下棋>:\n\n"); 89 while (1) 90 { 91 i = rand() % 3; 92 j = rand() % 3; 93 if (board[i][j] == ' ') 94 { 95 board[i][j] = '#'; 96 break; 97 } 98 } 99 100 } 101 int IsFull(char board[ROW][COL],int row,int col) 102 { 103 int i = 0; 104 int j = 0; 105 for (i = 0; i < row; i++) 106 { 107 for (j = 0; j < col; j++) 108 { 109 if (board[i][j] == ' ') 110 return 0; 111 } 112 } 113 return 1; 114 } 115 116 //判断输赢 117 int IsWin(char board[ROW][COL]) 118 { 119 int i = 0; 120 for (i = 0; i < 3; i++) 121 { 122 if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ') 123 { 124 return board[i][1]; 125 } 126 } 127 for (i = 0; i < 3; i++) 128 { 129 if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') 130 { 131 return board[1][i]; 132 } 133 } 134 if (board[1][1] == board[2][2] && board[2][2] == board[3][3] && board[1][1] != ' ') 135 return board[1][1]; 136 if (board[1][3] == board[2][2] && board[2][2] == board[3][1] && board[1][1] != ' ') 137 return board[1][1]; 138 if (IsFull(board, ROW, COL) == 1) 139 { 140 return 'Q'; 141 } 142 return 'C'; 143 }
1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 #include<stdlib.h> 4 #include<time.h> 5 6 #define ROW 3 7 #define COL 3 8 9 void InitBoard(char board[ROW][COL], int row, int col); 10 void DisplayBoard(char board[ROW][COL], int row, int col); 11 void PlayerMove(char board[ROW][COL], int row, int col); 12 void ComputerMove(char board[ROW][COL], int row, int col); 13 int IsWin(char board[ROW][COL]);

浙公网安备 33010602011771号