对基本C语言的知识有了一定的了解和认识,能够通过C语言编程解决一些简单的问题。使用C语言编程完成一个简单的游戏《三子棋》。

游戏简介:常见的3x3棋盘,有两名游戏玩家,在本版本中实现的效果为人机对战,通过逐个的下棋,如有一方形成了三字连珠,则判定了这一方胜利,如果整个棋盘覆盖满,还没有形成三字连珠,则判定为和局。

编码思路:棋盘由一个3x3的数组进行实现,不同玩家对应不同的字符,每在一个位置放置棋子对应为把该位置进行一次赋值,每下棋一次,会进行判断是否有胜者出现,是否已经和棋,或是游戏还可继续,以此循环往复直至结束。

本次编码使用C语言,共五个函数,分别承担相应的功能。

void Menu()//完成了整个游戏及界面的规划
void Game()//游戏的框架,整合了游戏进行的整个思路
void playermove()//玩家进行棋子的放置
char judge()//判定是否有一方胜出或者和棋
void computerMove()//电脑进行放置棋子
在编码中,电脑棋子的放置通过生成一个随机整数来实现,生成之后判定该位置能否放置,如若不能就再次进行生成随机数。

#include<stdio.h>  #pragma warning(disable:4996);#include"C:\Users\尽欢\source\repos\ConsoleApplication2\game.h"int main()
{
int select = 0;
while (1) {
Menu();
scanf("%d", &select);
switch (select)
{
case 1:
Game();
break;
case 2:
system("exit");
break;
default:
printf("输入有误!\n");
break;
}
return 0;
}
}#ifndef __GAME_H__
#define __GAME_H__#include <stdio.h>
#include <time.h>
#include <windows.h>
#pragma warning(disable:4996)#define ROW 3
#define COL 3#define P_COLOR 'X'
#define C_COLOR 'O'
#define NEXT 'N'
#define DRAW 'D'void Menu();
void Game();
#endif
#include"game.h"
void Menu()
{
printf("   三子棋    ");
printf("-------------------");
printf("|  1.开始游戏  |");
printf("|  2.退出游戏  |");
printf("-------------------");
printf("请选择");
}void Game()
{
srand((unsigned long)time(NULL));
char board[ROW][COL];
memset(board, ' ', sizeof(board));
char reselt = 'x';
do {
ShowBoard(board, ROW, COL);
PlayerMove(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != NEXT) {
break;
}
ComputerMove(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != NEXT) {
break;
}
} while (1);if (P_COLOR == result) {
printf("你赢了!\n");
}
else if (C_COLOR == result) {
printf("你输了!\n");
}
else {
printf("和棋!\n");}
ShowBoard(board, ROW, COL);
}}void playermove(char board[][COL], int row, int col)
{
int x = 0;
int y = 0;
int quit = 0;
while (1) {
printf("请输入你的位置:");
scanf("%d %d", x, y);
if (x < 1 || x>3 || y < 1 || y>3)
{
printf("你输入的位置有误!\n");
continue;
}
else if (board[x - 1][y - 1] != ' ')
{
printf("该位置已经被占用\n");
}
else
{
board[x - 1][y - 1] = P_COLOR;
break;
}
}
}char Judge(char board[][COL], int ROW, int col)
{
for (int 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];
}
for (int j = 0; j < col; j++) {
if (board[0][j] == board[1][j] && \
board[1][j] == board[2][j] && \
board[0][j] != ' ') {
return board[0][j];
}
}if (board[0][0] == board[1][1] && \
board[1][1] == board[2][2] && \
board[0][0] != ' ') {
return board[1][1];
}if (board[0][2] == board[1][1] && \
board[1][1] == board[2][0] && \
board[1][1] != ' ') {
return board[1][1];
}for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (board[i][j] == ' ') {
return NEXT;
}
}
}return DRAW;
}void ComputerMove(char board[][COL], int row, int rol)
{
while (1)
{
int x = rand() % row;
int y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = C_COLOR;
break;
}
}
}

C语言实现简单游戏 三子棋相关推荐

  1. 【C语言】通过C语言实现简单的三子棋

    [C语言]通过C语言实现简单的三子棋 文章目录 [C语言]通过C语言实现简单的三子棋 前言 一.本次小小小小项目前提 二.游戏简易菜单 1.菜单打印 2.游戏菜单的逻辑执行 三.三子棋游戏 1.初始化 ...

  2. C语言的简单运用——三子棋

    前言 学习新知识固然重要,但如何运用所学的知识解决生活中的问题更为重要.只会学而不会用,何异于纸上谈兵.那么就让我们来看看如何用C语言来实现一个简单的三子棋吧! 目录 前言 一点建议 一.游戏菜单 1 ...

  3. 【C语言】简单实现三子棋(井字棋)小游戏

    背景 C语言学习过程中会有很多有趣的实践小程序需要大家编写,这里带给大家一个常见的三子棋小游戏的代码.如果有不足之处,还望指出,感谢浏览. 框架 这里给刚开始学习或接触C语言的小伙伴分享一点我个人的经 ...

  4. c语言小游戏 三子棋,C语言实现简单的三子棋小游戏

    学习完数组就能用C语言写出的简单小游戏: 编译器使用的为VS2013 代码分为三个部分 1.头文件 game.h 2.源文件 game.c 用来存放游戏中所有的函数 3.源文件 test.c 用来存放 ...

  5. C语言 小游戏 电脑大概率获胜,用C语言实现简单的三子棋小游戏

    三子棋问题即在3 * 3的二维数组上下棋,只要有棋子在行.列或对角线连成一线即取得胜利. 可实现玩家与电脑对弈. 说明 : (1)本游戏玩家输入的是棋盘的坐标. (2)"X"代表玩 ...

  6. 用c语言实现小游戏三子棋

    小游戏之三子棋 小游戏之三子棋 三子棋的基本玩法 游戏制作思路 制作步骤 1.菜单 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑下棋 6.判断胜利 完整代码 ​​​​​​​小结 三子棋的基本玩 ...

  7. C语言趣味小游戏——三子棋

    全篇无任何废话,本文的解释大多数都在代码段中,所以一定要看代码,边看边学边理解. 这只是初学者入门的一个小游戏,不难懂,没有什么复杂的内容 可以先学习一下比三子棋还简单的猜数字小游戏 C语言趣味小游戏 ...

  8. C语言简易小游戏--三子棋

    小时候,在学校和小伙伴除了互相追逐着玩闹玩游戏以外,相信很多小伙伴们也有和朋友在课堂上拿一张纸玩井字棋的美好回忆.(如下图酱紫啦~) 那今天呢,我们就用C语言制作一款简易的井字棋来练习一下对代码的感觉 ...

  9. (超详解)C语言实现小游戏三子棋

    目录 一,实现目标 二,整体思路 1.创立三个文件:text.c(实现测试的逻辑)                                                            ...

最新文章

  1. creo JAVA_Creo 4.0二次开发工具框架搭建
  2. antd Tree 展开和默认选中
  3. WritePrivateProfileString、GetPrivateProfileString 读写配置文件
  4. asp 取数据 计算_地学数据 | 地理空间数据获取方式汇总
  5. Openstack迁移DDH最佳实践
  6. php中读取文件函数,php 读取文件夹与文件夹中文件的函数
  7. python不同数据类型的式子_Python 基础篇:数据类型、数据运算、表达
  8. Python菜鸟入门:day01基础知识
  9. 伯克利与微软联合发布Blink:使GPU计算实现高达2倍加速
  10. HCIA-RS(211-中文题库,2019最新题库)
  11. 什么是软件安全性测试?安全测试有哪些测试方法和手段
  12. 7-1 图深度优先遍历(c++)
  13. 12.5m分辨率DEM数据?解读ASF DAAC的DEM数据--关于地理数据收集与处理的基本工具推荐(5)
  14. CS224d-Day 2:TensorFlow 入门
  15. 设计模式学习——代理模式(proxy)
  16. iReport编辑报表,以及打印PDF
  17. arduino-esp32-点亮板载LED,闪烁LED。02
  18. 【Spring MVC】Json 前后端合并
  19. python股票预测的意义是什么_股票预测python,python 设计一个名为Stock的类来表示...
  20. [日语]学习“五十音”(读音篇)

热门文章

  1. Expression is not assignable 问题分析及解决方案
  2. 小程序跳转H5实现长截图功能;vue-cli3通过rem适配
  3. C++后续:QT学习(Qt概述,创建QT项目)
  4. C#加密解密文件小工具实现代码
  5. 第六模块 常用邮件沟通场景(2):“冷邮件”的写作模板
  6. Java中的public static final来修饰数组与接口变量
  7. 关键词布局对网站优化的影响非同寻常!
  8. 编写两个函数,分别求最大公约数和最小公倍数
  9. vue项目引入阿里巴巴矢量图标库图标及其使用教程
  10. win10 卡机卡死卡顿的真正原因!