博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语 三子棋小游戏
阅读量:4577 次
发布时间:2019-06-08

本文共 3499 字,大约阅读时间需要 11 分钟。

1 #include 
2 #include
3 #include
4 #define row 3 5 #define list 3 6 7 void init_Board(char board[row][list]) //对二维数组元素全部赋值为 “ ” 8 { 9 memset(board,' ',row*list*sizeof(char)); 10 } 11 12 void display_Board(char board[row][list])//画出棋谱 13 { 14 system("cls"); 15 int i = 0; 16 for (i = 0; i < row; i++) 17 { 18 printf(" %c |%c | %c\n", board[i][0], board[i][1], board[i][2]); 19 if (i != 2){ 20 printf(" --|--|--\n"); 21 } 22 } 23 printf("(X代表玩家,0代表电脑)\n") ; 24 } 25 26 void man_Play(char board[row][list]) //玩家下“子” 27 { 28 int i = 0; 29 int j = 0; 30 flag: 31 printf("选择一个坐标:\n"); 32 scanf("%d", &i); 33 if (i > 3 || i <1) 34 { 35 printf("横坐标越界,重输:\n"); 36 goto flag; 37 } 38 scanf("%d", &j); 39 if (j > 3 || j <1) 40 { 41 printf("纵坐标越界,重输:\n"); 42 goto flag; 43 } 44 if (board[i-1][j-1] == ' ') 45 board[i-1][j-1]='X'; 46 else 47 { 48 printf("所选位置已被下过,请重新输入\n"); 49 goto flag; 50 } 51 } 52 53 char is_Win(char board[row][list]) 54 { 55 int i = 0; 56 int j = 0; 57 for (i = 0; i < row; i++) 58 { 59 if ((board[i][0] == board[i][1]) && (board[i][0] == board[i][2])) 60 return board[i][0]; 61 } 62 for (j = 0; j < row; j++) 63 { 64 if ((board[0][j] == board[1][j]) &&( board[0][j] == board[2][j])) 65 return board[0][j]; 66 } 67 if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2])) 68 return board[1][1]; 69 if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0])) 70 return board[1][1]; 71 return ' '; 72 } 73 void computer_Play(char board[row][list]) //电脑下“子” 74 { 75 int i = 0; 76 int j = 0; 77 while (1) 78 { 79 srand((int)time(0));//设置随机种子 80 i = rand() % 3; //产生随机数 81 j = rand() % 3; 82 if (board[i][j] == ' ') 83 { 84 board[i][j] = '0'; 85 break; 86 } 87 } 88 } 89 90 int is_Full(char board[row][list]) 91 { 92 int i = 0; 93 int j = 0; 94 int count = 0; 95 for (i = 0; i < row;i++) 96 for (j = 0; j < list; j++) 97 { 98 if (board[i][j] == ' ') 99 count++;100 }101 return count;102 }103 104 int main()105 {106 char board[row][list];107 init_Board(board);108 display_Board(board);109 while (1)110 {111 if ((is_Full(board) > 0))112 {113 man_Play(board);114 display_Board(board);115 printf("\n");116 if (is_Win(board) == 'X')117 {118 printf("玩家胜\n");119 break;120 }121 }122 else123 {124 printf("平局!"); 125 break;126 }127 if ((is_Full(board) >0))128 {129 computer_Play(board);130 display_Board(board);131 printf("\n");132 if (is_Win(board) == 48)133 {134 printf("电脑胜\n");135 break;136 }137 }138 else139 {140 printf("平局!");141 break;142 }143 }144 printf("游戏结束!\n");145 system("pause");146 return 0;147 }

 

转载于:https://www.cnblogs.com/tp-16b/p/7806945.html

你可能感兴趣的文章
基于redis+lua实现高并发场景下的秒杀限流解决方案
查看>>
Oracle 块修改跟踪 (Block Change Tracking) 说明
查看>>
阿里云 Redis 服务遇到的问题
查看>>
Jwt Token 安全策略使用 ECDSA 椭圆曲线加密算法签名/验证
查看>>
Window2008通过web.config进行限制ip访问
查看>>
浅析门户网站体育赛事CDN加速解决方案
查看>>
启动/关闭xp_cmdshell
查看>>
[PY3]——内置数据结构(8)——解构与封装
查看>>
进程、单线程和多线程
查看>>
python入门(3)python的解释器
查看>>
maven入门(1-3)构建简单的maven项目
查看>>
git 清除本地无效的分支
查看>>
poj1001--Exponentiation
查看>>
Python基础(迭代)
查看>>
webpack -p无效解决方式
查看>>
使用 PHP 获得网页内容 GET方式
查看>>
TJU Problem 2857 Digit Sorting
查看>>
C# 修饰符
查看>>
Centos以rpm方式进行安装MySql
查看>>
supervisor
查看>>