用C语言实现简单的三子棋小游戏
来源:互联网 发布:部落冲突x连弩升级数据 编辑:程序博客网 时间:2024/06/06 06:57
三子棋问题即在3 * 3的二维数组上下棋,只要有棋子在行、列或对角线连成一线即取得胜利。
可实现玩家与电脑对弈。
说明 :
(1)本游戏玩家输入的是棋盘的坐标。
(2)“X”代表玩家,“0”代表电脑。
(3)电脑下棋采用的是随机数给出,大大增加了游戏的随机性。
#include<stdio.h>#include<stdlib.h>#include<time.h> char arr[3][3] = { 0 }; //直接定义外部变量所有的函数可以直接使用int size = 9; //棋盘大小固定 每下一个子都会使可以下子的容量-1void chessboard() //打印棋盘{int i = 0,j = 0;printf(" | | \n");for (i = 0; i < 3; i++){ printf("_%c_|_%c_|_%c_\n", arr[i][0], arr[i][1], arr[i][2]);//棋盘对应位置下棋 if (i < 2) printf(" | | \n");}}void player() //玩家下棋{int m = 0, n = 0;printf("player(X):"); //输入的是对应的坐标 scanf("%d%d", &m,&n); //玩家输入的坐标必须在范围内并且不能是被下过的地方if (m<1 || m>3 || n<1 || n>3 || arr[m - 1][n - 1] != ' '){printf("this place can not play!\n"); //如果不符合要求则继续调用这个函数player();}else{arr[m - 1][n - 1] = 'X'; //将棋子放入相应的内容 棋盘容量-1size--;}}void computer() //电脑下棋{printf("computer(0):\n");int m = 0, n = 0;srand(time(NULL)); //电脑的坐标是随机产生的 以时间为种子m = rand() % 3; //对3取余产生0-2的随机数赋给数组下标n = rand() % 3;while (arr[m][n] != ' ') //如果产生的坐标不符合要求则循环产生 (效率比较低){m = rand() % 3;n = rand() % 3;}arr[m][n] = '0'; //操作后容量-1size--;}int winner() //判断获胜者{ if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == 'X') || (arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == 'X') || (arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == 'X') || (arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == 'X') || (arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == 'X') || (arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == 'X') || (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == 'X') || (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == 'X')) return 1; //玩家获胜 else if((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == '0') || (arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == '0') || (arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == '0') || (arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == '0') || (arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == '0') || (arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == '0') || (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == '0') || (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == '0')) return 0; //电脑获胜 else if (size == 0) return -1; //平局}int main(){int i = 0, j = 0; //将数组初始化为空格for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){arr[i][j] = ' ';}}while (1) //循环对弈直到一方获胜或者平局{chessboard(); //循环每次开始都打印棋盘if (winner() == -1 || winner() == 0 || winner() == 1){break;}player(); computer();}if (winner() == 1){printf("player win!\n");}else if (winner() == 0){printf("computer win!\n");}else{printf("no one win!\n");}system("pause");return 0;}
本游戏还有好多不足的地方,希望大家多提意见,我也会继续改进的,希望会提高它的效率。
本文出自 “10912110” 博客,请务必保留此出处http://10922110.blog.51cto.com/10912110/1725836
1 0
- C语言实现简单的三子棋小游戏
- 用C语言实现简单的三子棋小游戏
- 小游戏三子棋的C语言代码实现
- 用C语言实现三子棋小游戏
- 简单小游戏-剪刀石头布的c语言实现
- 简单c语言小游戏实现原理
- C语言简单实现扫雷小游戏~~~
- C语言实现小游戏---三子棋
- 简单的C语言猜数字小游戏
- c语言小程序之三子棋小游戏的实现
- 小游戏 | 井字棋(三子棋)的C语言实现
- 用c语言实现的猜数字小游戏
- C语言实现的2048小游戏
- C语言实现简易三子棋小游戏
- C语言小游戏"三子棋"
- 三子棋小游戏--C语言
- C语言小游戏 三子棋
- C语言小游戏----三子棋
- 编写一个程序从键盘输入字符,并按要求输出
- iOS 项目中.pch 预编译文件创建
- 判断2000年---2500年之间的闰年
- 折半查找算法的实现
- C语言趣味编程两小例
- 用C语言实现简单的三子棋小游戏
- 关于继承与派生的小结
- 模板的特化
- 推荐系统_基于内容的推荐
- 关于多态的小结
- 下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法
- 证书过期:The certificate used to sign "###"...
- [Android]libpng error: Not a PNG file错误解决
- SDK使用心得