三子棋

    xiaoxiao2021-03-25  158

    我们都玩的三子棋:

    程序原理:

    程序共有4个子程序组成:

    1.  void start(char arr[ROWS][COLS], int row, int col) //程序开始显示游戏界面:

                

     2.  void display(char arr[ROWS][COLS], int row, int col);   //玩家下棋:

    3.  void complay(char arr[ROWS][COLS], int row, in col);   //电脑下棋

    4.   int check_win(char arr[ROWS][COLS], int row, int col);  // 判断有没有连成功的:

     

    程序代码:

    game.h:

    #ifndef __GAME_H_ #define __GAME_H_ #include<stdio.h> #include<stdlib.h> #include<string.h> #define ROWS 3 #define COLS 3 void start(char arr[ROWS][COLS], int row, int col); void display(char arr[ROWS][COLS], int row, int col); void complay(char arr[ROWS][COLS], int row, int col); int check_win(char arr[ROWS][COLS], int row, int col); #endif //__GAME_H__

    game.c :

    #include "game.h" void start(char arr[ROWS][COLS], int row, int col ) { int i = 0; for(i=0; i<row; i++) { int j = 0; for(; j<col; j++) { arr[i][j] = ' '; } } for(i=0; i<row; i++) { printf(" %c | %c | %c\n",arr[i][0],arr[i][1],arr[i][2]); if(i==2) { break; } printf("---|-- -|---\n"); } } void display(char arr[ROWS][COLS], int row, int col) { int i = 0; printf("请玩家选择坐标:>"); do{ scanf("%d%d",&row,&col); row--; col--; if(arr[row][col] == ' ') { arr[row][col] = '0'; for(i=0; i<ROWS; i++) { printf(" %c | %c | %c\n",arr[i][0],arr[i][1],arr[i][2]); if(i==2) { break; } printf("---|-- -|---\n"); } break; } }while(1); } void complay(char arr[ROWS][COLS], int row, int col) { int i = 0; printf("电脑选择坐标:>\n"); do{ row = rand()%3; col = rand()%3; if(arr[row][col] == ' ') { arr[row][col] = 'X'; for(i=0; i<ROWS; i++) { printf(" %c | %c | %c\n",arr[i][0],arr[i][1],arr[i][2]); if(i==2) { break; } printf("---|-- -|---\n"); } break; } }while(1); } int check_win(char arr[ROWS][COLS], int row, int col) { int i = 0; for(; i<ROWS; i++) { if((arr[i][0] == arr[i][1])&&(arr[i][2] == arr[i][1])&&(arr[i][0]!=' ')) { return 1; } } for(; i<COLS; i++) { if((arr[0][i] == arr[1][i])&&(arr[2][i] == arr[1][i])&&(arr[0][i]!=' ')) { return 1; } } if((arr[0][0] == arr[1][1])&&(arr[1][1] == arr[2][2])&&(arr[1][1]!=' ')) { return 1; } if((arr[2][0] == arr[1][1])&&(arr[1][1] == arr[0][2])&&(arr[1][1]!=' ')) { return 1; } return 0; } test.c : #define _CRT_SECURE_NO_WARNINGS 1 #include "game.h" void mus(void) { printf("***********************************\n"); printf("**********1. game 2. break********\n"); printf("***********************************\n"); } void game(void) { int tmp = 0; int i = 0; char arr[ROWS][COLS] = {0}; start(arr,ROWS,COLS ); do { display(arr,ROWS,COLS); tmp = check_win(arr,ROWS,COLS); if(tmp == 1) { tmp = 1; break; } i++; if(i>=9) { break; } complay(arr,ROWS,COLS); tmp = check_win(arr,ROWS,COLS); if(tmp == 1) { tmp = 0; break; } i++; if(i>=9) { break; } } while (1); if(tmp == 1) { printf("恭喜:你赢了\n"); } else if(tmp == 0) { printf("骚年,你要努力了\n"); } else if(i ==9) { printf("平局"); } } int main() { int input = 0; do { mus(); printf("请选择:>"); scanf("%d",&input); if(input == 1) { game(); } else if(input == 0) { break; } else { printf("输入有误:>\n"); } } while (1); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-8588.html

    最新回复(0)