一个简单的三子棋游戏(c语言实现)
来源:互联网 发布:阿里云是paas 编辑:程序博客网 时间:2024/06/06 11:35
题目是:在一个3*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(@):"); //输入的是对应的坐标 scanf_s("%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] = '@'; //将棋子放入相应的内容 棋盘容量-1 size--; }}void computer() //电脑下棋{ printf("computer(#):\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] = '#'; //操作后容量-1 size--; } int winner() //判断获胜者{ //虽然代码多但是效率高 本来想采用函数比较考虑到效率太低就放弃了 if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == '@') || (arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == '@') || (arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == '@') || (arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == '@') || (arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == '@') || (arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == '@') || (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == '@') || (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == '@')) return 1; //玩家获胜 else if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == '#') || (arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == '#') || (arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == '#') || (arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == '#') || (arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == '#') || (arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == '#') || (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == '#') || (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == '#')) return 0; //电脑获胜 else if (size == 0) return -1; //平局 else return 2; //只是为了消除编译的警告并无实际意义}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(); //每下一个子后都打印棋盘 然后就判断又没有人获胜 chessboard(); if (winner() == -1 || winner() == 0 || winner() == 1) { break; } 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;} 当然这个程序还有很多改进的地方,这个只是一个简单的雏形。
本文出自 “aiali” 博客,请务必保留此出处http://aliddd.blog.51cto.com/10780547/1709376
0 0
- 一个简单的三子棋游戏(c语言实现)
- c语言编程实现简单三子棋游戏
- 用c语言实现简单三子棋游戏
- 用c语言简单实现三子棋游戏
- c语言编程实现简单三子棋游戏
- 一个简单的HashMap C语言实现
- 一个简单的HashMap C语言实现
- BloomFilter的一个简单实现(C语言)
- C语言实现一个简单的计算器
- 【C语言】实现一个简单的通讯录
- C语言实现一个简单的栈
- C语言实现一个简单的服务器
- 一个简单的串口实例(C语言实现)
- C语言实现简单的记忆力测试游戏
- 简单贪吃蛇游戏的c语言实现
- c语言实现简单的猜数字游戏
- 用c语言实现三子棋的游戏
- C语言~三子棋游戏的实现
- iOS中UI界面 初级数据持久化
- 常用Keytool 命令
- 大小端存储的理解
- c语言怎么会有这么多的作用域?
- gets()函数和puts()函数的渊源关系
- 一个简单的三子棋游戏(c语言实现)
- break和continue语句
- c语言中递归函数真的好吗?
- c语言中对可变参数列表的简单理解
- c语言中统计二进制位中1的个数的算法优化
- c语言最强大之处--指针
- 用python写一个简单的爬虫功能
- 字符串操作函数的编写
- Jquery easyui从零单排之datagrid数据绑定