一份菜单
void menu() { printf("*********************\n"); printf("***** 1. play *****\n"); printf("***** 0. exit *****\n"); printf("*********************\n"); }玩游戏否
void test() { int input; srand(time(NULL)); do{ menu(); printf("请选择\n"); scanf_s("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("输入非法,请从新输入\n"); break; } } while (input); }初始化一下数组
void chushihua(char qi[HANG][LIE], int hang, int lie) { int i, j; for (i = 0; i < hang; i++) for (j = 0; j < lie; j++) qi[i][j] = ' '; }来个棋盘
void display(char qi[HANG][LIE], int hang, int lie) { int i; for (i = 0; i < hang; i++) { int j; for (j = 0; j < lie; j++) { printf(" %c ", qi[i][j]); if (j < lie - 1) printf("|"); } printf("\n"); if (i < hang - 1) { for (j = 0; j < lie; j++) { printf("---"); if (j < lie - 1) printf("|"); } printf("\n"); } }玩家下一颗子
void mine(char qi[HANG][LIE], int hang, int lie) { int x, y; printf("你的回合\n"); while (1) { printf("请输入一个位置\n"); scanf_s("%d %d",&x,&y); if (x>=1 && x<=3 && y>=1 && y<=3 && qi[x - 1][y - 1] == ' ') { qi[x - 1][y - 1] = '*'; break; } else printf("输入错误\n"); } }电脑下一颗子
void ai(char qi[HANG][LIE], int hang, int lie) { int x, y; printf("电脑的回合\n"); while (1) { x = rand() % 3; y = rand() % 3; if (x >= 0 && x <= 2 && y >= 0 && y <= 2 && qi[x][y] == ' ') { qi[x][y] = '#'; break; } } }靠什么赢
char duijue(char qi[HANG][LIE], int hang, int lie) { int i,j; int count = 0; for (i = 0; i < hang; i++) { if (qi[0][i] == qi[1][i] && qi[1][i] == qi[2][i] && qi[0][1] != ' ') return qi[0][i]; else if (qi[i][0] == qi[i][1] && qi[i][1] == qi[i][2] && qi[i][0] != ' ') return qi[i][0]; else if (qi[0][0] == qi[1][1] && qi[1][1] == qi[2][2] && qi[0][0] != ' ') return qi[0][0]; else if (qi[0][2] == qi[1][1] && qi[1][1] == qi[2][0] && qi[0][2] != ' ') return qi[0][2]; } for (i = 0; i < hang;i++) for (j = 0; j < lie;j++) if (qi[i][j] != ' ') { count++; } if (count >= hang*lie) return 'q'; }来个函数测试一下
void game() { int set; char qi[HANG][LIE] = { 0 }; chushihua(qi,HANG,LIE); display(qi,HANG,LIE); while (1) { mine(qi, HANG, LIE); display(qi, HANG, LIE); set=duijue(qi, HANG, LIE); //panding(); if (set == '*') { printf("玩家获胜\n"); break; } else if (set == '#') { printf("电脑获胜\n"); break; } else if (set == 'q') { printf("平局\n"); break; } ai(qi, HANG, LIE); display(qi, HANG, LIE); set=duijue(qi, HANG, LIE); if (set == '*') { printf("玩家获胜\n"); break; } else if (set == '#') { printf("电脑获胜\n"); break; } else if (set == 'q') { printf("平局\n"); break; } //panding(); } }主函数
int main() { test(); system("pause"); return 0; }头文件
#define HANG 3 #define LIE 3 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> void chushihua(char qi[HANG][LIE],int hang,int lie); void display(char qi[HANG][LIE], int hang, int lie); void mine(char qi[HANG][LIE], int hang, int lie); void ai(char qi[HANG][LIE], int hang, int lie); char duijue(char qi[HANG][LIE], int hang, int lie);easy
