三子棋游戏
来源:互联网 发布:小米网络音箱 安卓 编辑:程序博客网 时间:2024/06/05 04:01
闲来无事,竟意外发现了三子棋游戏,顺便实现了这个过程,我们一起来看下。
三子棋的实现需要的是五个函数,我用了InitBoard(初始化棋盘函数),Display(打印棋盘函数),Player(玩家), Computer(电脑),Check_Full(判断棋盘是否已满,从而判断输赢)
game.h
#define _CRT_SECURE_NO_WARNINGS#ifndef __TEST_H__#define __TEST_H__#include <stdio.h>#include <stdlib.h>#include <time.h>#include <Windows.h>#define ROWS 3#define COLS 3void InitBoard(char[ROWS][COLS], int row, int cols);void Display(char[ROWS][COLS], int row, int cols);void Player(char[ROWS][COLS], int row, int cols);void Computer(char[ROWS][COLS], int row, int cols);int Check_Full(char[ROWS][COLS], int row, int cols);#endifgame.c
#define _CRT_SECURE_NO_WARNINGS#include "test.h"void InitBoard(char arr[ROWS][COLS], int rows, int cols) { memset(arr, ' ', ROWS*COLS*sizeof(char));//这个函数是初始化棋盘; }void Display(char arr[ROWS][COLS], int rows, int cols){int i;for (i = 0; i < rows; i++){printf("——————\n");for (i = 0; i < cols; i++){printf(" %c | %c | %c |\n", arr[i][0], arr[i][1], arr[i][2]);printf("——————\n");}}}void Computer(char arr[ROWS][COLS], int rows, int cols){int i = 0;int j = 0;while (1){i = rand() % 4;//产生随机数,随机产生不同的数,每次必须产生不同的随机值;j = rand() % 4;if (arr[i - 1][j - 1] == ' '){arr[i - 1][j - 1] ='O';//"="是赋值;而"=="是判断break;}}Check_Full(arr, rows, cols);}void Player(char arr[ROWS][COLS], int rows, int cols){int x = 0;int y = 0;printf("输入你要放的棋子的坐标");scanf("%d %d", &x, &y);//%d只能表示输入一个数while (1){if ((x<4 && x>0) && (y<4 && y>0)){if (arr[x - 1][y - 1] == ' '){arr[x - 1][y - 1] = 'X';break;}else{printf("此处有棋子,请重新输入");scanf("%d %d", &x, &y);}}else{printf("坐标有误,请重新输入");scanf("%d", &x, &y);} }Check_Full(arr, rows, cols);}int Check_Full(char arr[ROWS][COLS], int rows, int cols){int i = 0;int j = 0;for (i = 0; i < rows; i++){if ((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2]) && arr[i][0] != ' ') // 行相同{return 0;}}for (i = 0; i < cols; i++){if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i]) && arr[0][i] != ' ') //列相同{return 0;}if ((((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2])) || ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]))) && (arr[1][1] != ' ')){return 0;}}for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){if (arr[i][j] == ' '){return 1;}}}return 'P'; }test.c
#define _CRT_SECURE_NO_WARNINGS#include "test.h"void menu(){printf("**************************************************\n");printf("*****************1.play 0.exist**************\n");printf("**************************************************\n");}void game(){char arr[ROWS][COLS] = { 0 };char ret = 0;InitBoard(arr, ROWS, COLS);Display(arr, ROWS, COLS);srand((unsigned int)time(NULL));while (1){Computer(arr, ROWS, COLS);Display(arr, ROWS, COLS);if (Check_Full(arr, ROWS, COLS) == 0){printf("电脑赢\n");break;}if(Check_Full(arr, ROWS, COLS) == 'P'){printf("输出是平局\n");break;}Player(arr, ROWS, COLS);Display(arr, ROWS, COLS);if (Check_Full(arr, ROWS, COLS) == 0){printf("玩家赢\n");break;} if (Check_Full(arr, ROWS, COLS) == 'P'){printf("输出是平局\n");break;}}}int main(){int input = 0;do{menu();printf("请选择\n");scanf("%d", &input);switch (input){case 1:game();case 0:break;default:printf("请重新输入\n");} } while (input);getchar();return 0;}运行效果图
阅读全文
0 0
- 游戏三子棋
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 三子棋游戏
- 简单的三子棋游戏
- 棋盘游戏(三子棋)
- Win10及VS2015下的OpenGL相关类库和环境配置
- C++ 单例模式的
- 权限学习--Shiro入门学习
- Mongodb更新数组$push操作符
- 排序算法-选择排序
- 三子棋游戏
- 何为分布式、微服务和集群!
- Codeforces#399 B. Code For 1 二叉树中序遍历的规律
- C++ 多态
- Linux中gdb程序调试器的命令使用(包括后台进程和多线程的调试)
- 11
- 12
- Spark-1.6.0中的Sort Based Shuffle源码解读
- Windows7环境下用VirtualBox (5.1)上安装Ubuntu 17.10