C语言简单实现三子棋小游戏
游戏规则:
三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。游戏是在一个3*3的棋盘里面下棋的。只要有三个一样的连成一条线,就表示有一方胜出;如果下完了9个格子还没有玩家胜出,游戏为平局。
实现思路:
1.初始化棋盘数组
2.绘制棋盘
3.玩家下棋
4.电脑下棋
5.判断输赢
创建头文件game.h
#ifndef __GAME__H_#define __GAME__H_#define ROW 3#include<stdio.h>#include<stdlib.h>void InitBoard(char board[][ROW],int row,int col,char set);//初始化棋盘为字符setvoid ShowBoard(char board[][ROW],int row,int col);//打印棋盘void PlayerMove(char board[][ROW],int row,int col);//玩家下棋char IsWin(char board[][ROW],int row,int col);//判断输赢void ComputerMove(char board[][ROW],int row,int col);//电脑下棋#endif
game.c函数的实现(函数功能)
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
//重置棋盘
void InitBoard(char board[][ROW],int row,int col,char set)
{int i = 0;int j = 0;for(i = 0;i < row;i++){for(j = 0;j < row;j++){board[i][j] = set;}}
}
//打印棋盘
void ShowBoard(char board[][ROW],int row,int col)
{int i = 0;int j = 0;for(i = 0;i < row;i++){for(j = 0;j < col;j++){printf(" %c ",board[i][j]);if(j < col-1){printf("|");}}printf("\n");if(i < row-1){for(j = 0;j < col;j++){printf("---");if(j < col-1){printf("|");}}printf("\n");}}
}
//玩家操作
void PlayerMove(char board[][ROW],int row,int col)
{int x =0 ;int y = 0;while(1)//8,9{printf("玩家移动\n");printf("请输入1-3的坐标:\n");scanf("%d%d",&x,&y);//在棋盘范围内则进行判断是否被占用,若被占用则重新输入,若没被占用则置为'x'if(x >= 1 && x <= 3 && y >=1 && y <= 3){if(board[x-1][y-1] == ' '){board[x-1][y-1] = 'x';break;}else{printf("位置已经被占用,请重新输入\n");}}else{printf("坐标不合法\n");}//2、坐标不合法}
}
//判断棋盘是否下满,static修饰,只能在该.c文件中使用
static int IsFull(char board[][ROW],int row,int col)
{int i = 0;int j = 0;for(i = 0;i < row;i++){for(j = 0;j < col;j++){if(board[i][j] == ' '){return 0;//棋盘没有满}}}return 1;//棋盘已满
}
//判断输赢
char IsWin(char board[][ROW],int row,int col)
{int i = 0;for(i = 0;i < row;i++){//行相同if(board[i][0]==board[i][1] && board[i][1]==board[i][2] &&board[i][0] != ' '){return board[i][0];}//列相同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[0][0] != ' '){return board[0][0];}//副对角线相同if(board[0][2] == board[1][1] && board[1][1] == board[2][0]&& board[0][2] != ' '){return board[0][2];}if(IsFull(board,ROW,ROW)){return 'Q';//平局}}return ' ';//谁也没有赢
}void ComputerMove(char board[][ROW],int row,int col)
{int x = 0;int y = 0;printf("电脑移动\n");while(1){x = rand() % ROW;//[0-3)随机值y = rand() % ROW;//[0-3)随机值if(board[x][y] == ' '){board[x][y] = 'O';//判断该座标是否被占用,没有则置0break;}}
}
test.c主体功能的实现
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"//引入game.c文件,其中已经引入了程序所需要用到的头文件,所以不用再次重复引入,只要引入game.c即可
//打印游戏菜单
void menu()
{printf("********************\n");printf("***欢迎来到三子棋***\n");printf("*******0.exit*******\n");printf("*******1.play*******\n");printf("********************\n");
}
void game()
{char ret = 0;char board[ROW][ROW]= {0};//先将3*3的棋盘初始化为全0InitBoard(board,ROW,ROW,' ');//将棋盘置为空格ShowBoard(board,ROW,ROW);//打印棋盘while(1)//只要有一方胜出,结束循环{PlayerMove(board,ROW,ROW);//玩家先下棋ret = IsWin(board,ROW,ROW);//判断输赢if(ret != ' ')//可能平局,可能一方胜出{break;}ShowBoard(board,ROW,ROW);//展示棋盘ComputerMove(board,ROW,ROW);//电脑出棋ret = IsWin(board,ROW,ROW);//判断输赢if(ret != ' ')//可能平局,可能一方胜出{break;}ShowBoard(board,ROW,ROW);}if(ret == 'x')//判断ret{printf("玩家胜出\n");}if(ret == ' O'){printf("电脑胜出\n");}if(ret == 'Q'){printf("平局\n");}
}
int main()
{int input = 0;//用来存储用户输入的操作,从而确定玩家开始游戏还是退出do{menu();//打印菜单printf("请输入您的选择:-》");scanf("%d",&input);switch(input){case 1:printf("游戏开始\n");game();break;case 0:printf("游戏退出\n");break;default:printf("请输入正确的操作\n");break;}}while(input);return 0;
}
运行结果
C语言简单实现三子棋小游戏相关推荐
- 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)
作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...
- vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)
前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...
- c语言小游戏 三子棋,C语言实现简单的三子棋小游戏
学习完数组就能用C语言写出的简单小游戏: 编译器使用的为VS2013 代码分为三个部分 1.头文件 game.h 2.源文件 game.c 用来存放游戏中所有的函数 3.源文件 test.c 用来存放 ...
- C语言 小游戏 电脑大概率获胜,用C语言实现简单的三子棋小游戏
三子棋问题即在3 * 3的二维数组上下棋,只要有棋子在行.列或对角线连成一线即取得胜利. 可实现玩家与电脑对弈. 说明 : (1)本游戏玩家输入的是棋盘的坐标. (2)"X"代表玩 ...
- 如何实现简单的三子棋小游戏(改两个数就可以变为五子棋)
首先我们创建一个新项目,新项目中添加两个源文件,一个用来放置该游戏所需的所有函数(game.c),另一个放置主函数来测试(test.c),所有的函数可以包含在新创建的头文件里(game.h),这样在主 ...
- C语言 进阶版三子棋小游戏
目录 前言 游戏运行效果: 游戏代码: 1.test.c文件 2. game.h头文件 3. game.c 一.框架部分 二.游戏函数实现 1.创建数组并初始化 2.打印数组 3.玩家下棋 4.电 ...
- C语言实现简单的三子棋小游戏(童年游戏)
⭐️前面的话⭐️
- C语言实现三子棋小游戏(编程思路以及代码详解)
目录 前言 一.三子棋游戏的实现逻辑 二.创建菜单并控制游戏开始或游戏结束 三.创建棋盘并且初始化棋盘 四.打印棋盘并验证打印棋盘和初始化棋盘模块的实现 五.玩家下棋 六.电脑下棋 六.输赢判断 七. ...
- 三子棋小游戏带你走进编程世界(c语言版)
目录 一.游戏实现的整体思路 二.实现游戏大体框架 二.游戏函数的实现 1.初始化键盘 2.打印棋盘 3.下棋及胜负判断 (1)玩家下棋 (2)电脑下棋 (3)判断输赢 三.结语及源码 三子棋想必大家 ...
最新文章
- oracle bi publisher 安装,Oracle BI Publisher 企业版安装后的配置(BI Publisher Enterpr
- 安卓qpython怎么使用_如何使用QPython开发Android应用?
- 有奖问题征集|向大咖Scott 发问,好礼等你领!
- eclipse类自动生成注释
- mysql8修改密码
- Python之数据分析(间接联合排序、所有最值相关函数、有序插入、定积分、插值器对象)
- 004-Python内置数据结构-七种数据结构一览
- 蓝桥杯真题:外卖优先级
- ​DOCX 文档解析及隐藏信息提取算法
- 向量数量积公式_向量数量积公式是什么
- 天工杂志天工杂志社天工编辑部2022年第25期目录
- android room 简书,android Room库使用问题
- R语言与数据分析练习:K-Means聚类
- 广义相对论和狭义相对论到底是讲什么的?
- 学校计算机教室解说词词,小学各专用教室解说词.doc
- 如何实现网页分享到微信,微博,空间
- 游戏开发43课 移动游戏性能优化1
- 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率),或快速估算年利率
- 【财富空间】将门CEO高欣欣、顺丰首席科学家刘志欣、图灵机器人联合创始人杨钊、中国人民大学向松祚等——AI应用落地:用产品说话
- QuickBooks2020中文版