【C语言】实现一个好玩的三子棋
来源:互联网 发布:合工大网络视频课 编辑:程序博客网 时间:2024/05/19 22:01
想要用C语言写一个简单的三子棋游戏,首先要打印出三字棋的布局,对棋盘进行初始化;
在玩游戏时,玩家和电脑进行对完,因此要设计玩家和电脑两部分;
电脑和玩家下完一个棋之后,则要进行判断棋盘是否满,以及玩家和电脑哪一边赢。
首先是头文件
game.h:
#pragma once#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<time.h>#define rows 3#define cols 3int print_chessboard(char chessboard[rows][cols]);//打印棋盘int init(char chessboard[rows][cols]);// 初始化棋盘int menu();//菜单函数int ManPlay(char chessboard[rows][cols]);//玩家玩void CalPlay(char chessboard[rows][cols]);//电脑玩int chess_full(char chessboard[rows][cols]);//判断棋盘是否满 int Judge(char chessboard[rows][cols]);//判断输赢void Game(char chessboard[rows][cols]);//游戏
接下来是函数的实现,这一部分重要的是判断棋盘是否满和判断玩家和电脑哪一方赢
在电脑玩的时候要用到随机数产生1--3之间的随机数
game.c
#include"game.h"int count = 9;//打印棋盘int print_chessboard(char chessboard[rows][cols]){int i = 0;for (i = 0; i < rows - 1; i++){printf(" %c | %c | %c \n", chessboard[i][0], chessboard[i][1], chessboard[i][2]);printf("___|___|___\n");}printf(" %c | %c | %c \n", chessboard[2][0], chessboard[2][1], chessboard[2][2]);printf(" | | \n");return 0;}//初始化棋盘int init(char chessboard[rows][cols]){int i = 0;int j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){chessboard[i][j] = ' ';}}return 0;}//菜单函数int menu(){printf("********************************************\n");printf("********************************************\n");printf("*************welcome to sanziqi*************\n");printf("************* 1. play *************\n");printf("************* 0. exit *************\n");printf("********************************************\n");printf("********************************************\n");return 0;}//玩家玩int ManPlay(char chessboard[rows][cols]){int x = 0, y = 0;int ret = 0;printf("请输入坐标:\n");scanf("%d%d", &x, &y);if (x<1 || x>3 || y<1 || y>3 || chessboard[x - 1][y - 1] != ' '){printf("此处不能下棋!\n");ManPlay(chessboard);}else{chessboard[x - 1][y - 1] = 'X';count--;}return 0;}//电脑玩void CalPlay(char chessboard[rows][cols]){printf("电脑下棋:\n");int x = 0;int y = 0;srand((unsigned)time(NULL));x = rand() % 3;y = rand() % 3;while (chessboard[x][y] != ' '){x = rand() % 3;y = rand() % 3;}chessboard[x][y] = 'O';count--;}//判断棋盘是否满 int chess_full(char chessboard[rows][cols]){if (count == 0)return 1;return 0;}//判断输赢int Judge(char chessboard[rows][cols]){int ret = 2;int i = 0;if ((chessboard[0][0] == chessboard[1][1]) && (chessboard[1][1] == chessboard[2][2])){if (chessboard[1][1] == 'X'){ret = 1;}if (chessboard[1][1] == 'O'){ret = 0;}}if ((chessboard[0][2] == chessboard[1][1]) && (chessboard[1][1] == chessboard[2][0])){if (chessboard[1][1] == 'X'){ret = 1;}if (chessboard[1][1] == 'O'){ret = 0;}}for (i = 0; i < rows; i++){if ((chessboard[i][0] == chessboard[i][1]) && (chessboard[i][1] == chessboard[i][2])){if (chessboard[i][1] == 'X'){ret = 1;}if (chessboard[i][1] == 'O'){ret = 0;}}}for (i = 0; i < rows; i++){if ((chessboard[0][i] == chessboard[1][i]) && (chessboard[1][i] == chessboard[2][i])){if (chessboard[1][i] == 'X'){ret = 1;}if (chessboard[1][i] == 'O'){ret = 0;}}}return ret;}//游戏void Game(char chessboard[rows][cols]){int i = 0;int ret = 0;//char chessboard[rows][cols];init(chessboard);print_chessboard(chessboard);while ((chess_full(chessboard) == 0)){ManPlay(chessboard);ret = Judge(chessboard);if (ret == 1){printf("玩家赢了!\n");break;}else if (ret == 0){printf("电脑赢了!\n");break;}CalPlay(chessboard);print_chessboard(chessboard);ret = Judge(chessboard);if (ret == 1){printf("玩家赢了!\n");break;}else if (ret == 0){printf("电脑赢了!\n");break;}}}
最后是测试函数:
text.c
#include"game.h"int main(){int input = 0;char chessboard[rows][cols];menu();while (1){printf("请选择:");scanf("%d", &input);if (input == 1){printf("进入游戏\n");Game(chessboard);break;}else if (input == 0){printf("退出游戏!\n");exit(0);break;}else{printf("输入有误!\n");}}return 0;}
下来我们就可以玩三子棋了
0 0
- 【C语言】实现一个好玩的三子棋
- 分析一个好玩的c语言程序
- 分析一个好玩的c语言程序
- 好玩的 C 语言
- 一个好玩的小游戏(纯C语言编写)
- 好玩的c语言程序!
- 越来越好玩的C语言,输出的*
- 两个好玩的C语言程序
- 一个好玩的问题
- 一个好玩的站点
- 一个好玩的批理处
- 一个好玩的现象
- 一个好玩的问题
- 关于循环重复数字的相加 C语言越来越好玩
- 好玩的C语言数组!!(冒泡排序数组)
- 在expert C上看到的一个好玩的东西
- 如何用Swift实现一个好玩的弹性动画
- 【译】如何用Swift实现一个好玩的弹性动画
- PctoLCD2002取模软件的使用
- 2015~2016项目小结
- Python2与python3中的编码问题
- 校OJ 1038贪吃松鼠的两种解法
- Spring在mac下的配置以及简单使用
- 【C语言】实现一个好玩的三子棋
- <三> u-boot 的移植
- c语言的一个小错误
- curl 类封装
- 微信自定义菜单,php配置一个多维数组,通过json_encode()生成json字符串,中文会转为\uxxxx,微信报错!
- 4.IOC主要技术实现DI之构造器注入
- 常用Java虚拟机参数2
- echo '1'.print(2)+3; 的输出结果为什么是511
- Android INSTALL_FAILED_UPDATE_INCOMPATIBLE错误最新最全解决方法