三子棋简单实现
来源:互联网 发布:js length 对象 编辑:程序博客网 时间:2024/06/14 05:44
1.说到三子棋的实现,首先我们要构思并打印棋盘,以及初始化棋盘
2.打印一个菜单并附上选择模式
3.实现游戏,人玩游戏、电脑玩各写一个函数
4.判断棋盘是否已满并判断输赢
头文件game.h
#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h> //随机数函数头文件#include <time.h>#define ROWS 3#define COLS 3void DisplayBoard(char board[ROWS][COLS],int rows,int cols);void InitBoard(char board[ROWS][COLS], int rows, int cols);void ComputerMove(char board[ROWS][COLS], int rows, int cols);void PlayerMove(char board[ROWS][COLS], int rows, int cols);char CheckWin(char board[ROWS][COLS], int rows, int cols);#endif //__GAME_H__
game.c
#include "game.h"//打印棋盘void DisplayBoard(char board[ROWS][COLS], int rows, int cols) { int i = 0; for (i = 0; i < rows; i++) { printf(" %c | %c | %c \n", board[i][0],board[i][1],board[i][2]); if (i != rows-1) printf("---|---|---\n"); } printf("\n");}//初始化棋盘void InitBoard(char board[ROWS][COLS], int rows, int cols){ int i = 0; int j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { board[i][j] = ' '; } }}//实现电脑走函数void ComputerMove(char board[ROWS][COLS], int rows, int cols){ int x = 0; int y = 0; printf("电脑走:>\n"); while (1) { x = rand() % rows; //rand为产生随机数函数 y = rand() % cols; if (board[x][y] == ' ') { board[x][y] = 'X'; break; } }}//实现玩家走函数void PlayerMove(char board[ROWS][COLS], int rows, int cols){ int x = 0; int y = 0; printf("玩家走:>\n"); while (1) { printf("请输入坐标:(x y)>"); scanf("%d%d", &x, &y); if (x >= 1 && x <= rows && y >= 1 && y <= cols) { if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = '*'; break; } else { printf("该位置已被占用!\n"); } } else { printf("此坐标为非法坐标,请重新输入!\n"); } }}//判断棋盘是否已满static int IsFull(char board[ROWS][COLS], int rows, int cols) //只在这一个函数中使用{ int i = 0; int j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { if (board[i][j] == ' ') return 0; } } return 1;}//判断输赢函数char CheckWin(char board[ROWS][COLS], int rows, int cols){ int i = 0; for (i = 0; i < rows; i++) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ') return board[i][0]; } for (i = 0; i < cols; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') return board[0][i]; } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ') { return board[1][1]; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') { return board[1][1]; } if (IsFull(board, rows, cols)) { return 'q'; //代表平局 } return ' ';}
test.c
#include "game.h"void game(){ char ret = 0; char arr[ROWS][COLS] = { 0 }; InitBoard(arr, ROWS, COLS); //DisplayBoard(arr, ROWS, COLS); //打印棋盘 while (1) { ComputerMove(arr, ROWS, COLS); //电脑走 DisplayBoard(arr, ROWS, COLS); ret = CheckWin(arr, ROWS, COLS); if (ret != ' ') { break; } PlayerMove(arr, ROWS, COLS); //玩家走 DisplayBoard(arr, ROWS, COLS); ret = CheckWin(arr, ROWS, COLS); if (ret != ' ') { break; } } if (ret == 'X') { printf("电脑赢!\n"); } else if (ret == '*') { printf("玩家赢!\n"); } else if (ret == 'q') { printf("平局!\n"); }}void menu(){ printf("****************************************\n"); printf("********** 欢迎进入三子棋游戏 **********\n"); printf("***********1.play 0.exit***********\n"); printf("****************************************\n");}void test(){ int input = 0; srand((unsigned int)time(NULL)); //初始化随机数,设置随机数种子 do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("选择错误,请重新选择!\n"); break; } } while (input);}int main(){ test(); return 0;}
程序实现
1.菜单部分
2.选择1,开始玩游戏
3.实现输赢
4.退出游戏
此游戏可实现多次反复游戏!
阅读全文
0 0
- 三子棋的简单实现
- 三子棋的简单实现
- 三子棋简单实现
- 三子棋的简单实现
- 【C语言】简单实现三子棋
- 简单的三子棋的实现
- c语言简单实现三子棋
- 简单的小游戏---代码实现三子棋
- c语言编程实现简单三子棋游戏
- c语言实现简单的三子棋
- c语言简单实现三子棋(五子棋)
- 用c语言实现简单三子棋游戏
- 用c语言简单实现三子棋游戏
- C语言三子棋的简单实现
- C语言实现简单的三子棋小游戏
- c语言编程实现简单三子棋游戏
- 杀毒软件的简单实现的简单实现
- 杀毒软件的简单实现
- Linux 下编译、安装、配置 QT
- 数据库事务的四大特性以及事务的隔离级别
- [安卓]Android Studio 3.0 JDK安卓环境配置(2017.10)
- jQuery初试弹窗-low
- 【perl】学习笔记(八)--复杂数据结构
- 三子棋简单实现
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结
- nginx
- Jzoj4831 方程式
- HttpServletResponse
- Tslib和Qt 4.8.4与在开发板上的移植
- ls -l 、 du、 df 的区别
- Oracle之复杂查询
- 高并发分布式系统中生成全局唯一订单号