分为三部分入手,更轻松学会。

test.c 测试游戏的逻辑

//测试三子棋的逻辑#include "game.h"void menu()
{printf("********************\n");printf("****  1.play    ****\n");printf("****   0.exit   ****\n");printf("********************\n");
}void game()
{char ret = 0;//存放下棋的数据char board[ROW][COL] = { 0 };//初始化棋盘为全空格InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board, ROW, COL); while (1){//玩家下棋player_move(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断输赢ret = is_win(board, ROW, COL);if (ret != 'C'){break;}//电脑下棋computer_move(board, ROW, COL);//随机下棋DisplayBoard(board, ROW, COL);ret = is_win(board, ROW, COL);if (ret != 'C'){break;}}if (ret == '*'){printf("玩家赢\n");}else if (ret == '#'){printf("电脑赢\n");}else if(ret=='Q'){printf("平局\n");}//DisplayBoard(board, ROW, COL);
} //什么情况下游戏结束
//玩家赢-*
//电脑赢-#
//平局-Q
//继续-Cvoid test()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:");scanf("%d", &input);switch (input){case 1:game();//游戏break;case 0:printf("退出游戏\n");break;default:printf("选择错误\n");break;}} while (input);
}int main()
{test();return 0;
}

game.c 游戏的实现

#include "game.h"void InitBoard(char board[ROW][COL], int row, int col)
{int i = 0;for (i = 0; i < row; i++){int j = 0;for (j = 0; j < col; j++){board[i][j] = ' ';}}
}//void DisplayBoard(char board[ROW][COL], int row, int col)
//{
//  int i = 0;
//  for (i = 0; i < row;i++)
//  {
//      int j = 0;
//      for (j = 0; j < col;j++)
//      {
//          printf("%c", board[i][j]);
//      }
//      printf("\n");
//  }
//}void DisplayBoard(char board[ROW][COL], int row, int col)
{int i = 0;for (i = 0; i < row; i++){//打印数据//printf(" %c | %c | %c \n",board[i][0],board[i][1],board[i][2]);int j = 0;for (j = 0; j < col; j++){printf(" %c ", board[i][j]);if (j<col-1)printf("|");}printf("\n");//打印分割行if (i < row - 1)//printf("---|---|---\n");{for (j = 0; j < col; j++){printf("---");if (j < col - 1)printf("|");}printf("\n");}}
}void player_move(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;printf("玩家下棋\n");while (1){printf("请输入坐标:");scanf("%d %d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){//下棋if (board[x - 1][y - 1] == ' '){board[x - 1][y - 1] = '*';break;}else{printf("该坐标以被占用,请重新输入\n");}}else{printf("该坐标以被占用,请重新输入\n");}}
}void computer_move(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;printf("电脑下棋\n");while (1){x = rand() % row;//0~2y = rand() % col;//0~2if (board[x][y] == ' '){board[x][y] = '#';break;}}}static int if_full(char board[ROW][COL], int row, int col)
{int i = 0;for (i = 0; i < row; i++){int j = 0;for (j = 0; j < col; j++){if (board[i][j] == ' '){return 0;//没满}}}return 1;//满了}char is_win(char board[ROW][COL], 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][1] != ' '){return board[i][1];}}//判断列for (i = 0; i < row; i++){if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' '){return board[1][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 (if_full(board, row, col) == 1){return 'Q';}//继续return 'C';
}

game.h 函数声明,符号的定义

#pragma once#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define ROW 3
#define COL 3//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col);//打印棋盘
void DisplayBoard(char board[ROW][COL], int row, int col);//玩家下棋
void player_move(char board[ROW][COL], int row, int col);//电脑下棋
void computer_move(char board[ROW][COL], int row, int col);//判断输赢
char is_win(char board[ROW][COL], int row, int col);

如何用C语言编写小游戏让你的学习不在无聊——三子棋相关推荐

  1. 如何用java语言编写小游戏?(贪吃蛇)

    自己做了个贪吃蛇,效果图如下" 素材和图片是网上找的,在做这游戏的过程中其实最麻烦的是像素的调整,需要一点点去试....所以大家做的时候像素方面自己试就行了,根据自己的实际情况判断. 先说一 ...

  2. 如何用c语言编写军旗游戏

    今天教大家如何用C语言编写军旗游戏 ~ 1.效果图: 2.主要代码: #include <graphics.h> #include <time.h>#define CHESIZ ...

  3. 用c语言编写的打字母游戏,用C语言编写小游戏——“井字棋”

    原标题:用C语言编写小游戏--"井字棋" 作者:Milo Yip 来源:知乎 原文链接:https://zhuanlan.zhihu.com/p/39581573 在 Milo Y ...

  4. 【C++FunCode】基于Funcode使用C++语言编写小游戏(小鲨鱼历险记)

    一.前言 大一暑假参加了山东省软件设计大赛,基于FunCode平台使用C++语言编写了大鱼吃小鱼游戏,其美名曰小鲨鱼历险记,哈哈.比赛成绩惨烈,只拿了一个省三,赛后也进行了分析总结,主要还是太不重视比 ...

  5. Java语言编写小游戏

    贪吃蛇游戏 https://download.csdn.net/download/qq_43909539/10841380 躲避球小游戏 https://download.csdn.net/downl ...

  6. C语言编写小游戏——骑士飞行棋

    /* Author Mr.Long* Date 2015年12月2日17:33:17 */ #include<iostream> #include<string> #inclu ...

  7. c++语言编的小游戏,用C++语言编写小游戏系统(可读取文件)

    #include #include #include #include #include #include #include #include #include using namespace std ...

  8. 作用python需要语言编写小游戏_作的解释|作的意思|汉典“作”字的基本解释

    详细字义 ◎ 作 zuō 〈名〉 (1) 作坊,手工业工场 [workshop] 明帝方修宫室而节气不合,-而 礼径至所作,不复重奏,称诏罢民.--<三国志·魏志> 又如:作房(作坊);作 ...

  9. 如何用C语言实现小游戏——扫雷

    每天进步一点点,坚持带来大改变! 目录 实现思路: 1.代码搭建: 2.游戏框架的搭建: 3.扫雷游戏功能实现: 1.棋盘的设置: 2.初始化棋盘: 3.打印棋盘: 4.布置雷: 5.排查雷: 6.整 ...

  10. 利用python语言编写小游戏斗地主

    import random card =[] for i in range(3,16):if i == 11:i ='J'elif i == 12:i = 'Q'elif i == 13:i = 'k ...

最新文章

  1. COGNOS8培训之四(疑点解析)
  2. Hibernate Session的delete()方法
  3. 2018 Multi-University Training Contest 10 - CSGO
  4. opencv4版本和3版本_Spring Boot 太狠了,一口气发布了 3 个版本!
  5. mongodb系列~mongodb的副本集搭建和原理
  6. java从入门到精通mac,Windows 平台Nginx + tomcat +memcached 集群
  7. 刷题记录 CF每日一题打卡 2020.5月?-六月16
  8. 保持头脑清醒的窍门2/13
  9. 关于美食html网页设计完整版,10个以美食为主题的网页设计案例
  10. windows下namp的基本操作命令
  11. 2016网吧服务器系统,原版系统一键优化精简方案(Win10/Server2016/Server2019)
  12. tar 压缩文件夹到指定的目录
  13. 建立保持时间及违例解决方法
  14. 如何用ABBYY FineReader提取图片中的文字
  15. 2022世界杯看球指南
  16. 非常规的自我实现——听陆向谦讲创业
  17. 数据结构 Java数据结构 --- Lambda表达式
  18. 洛谷4208 最小生成树计数
  19. 【云原生】设备云之前端可视化编程基础
  20. oracle dbms_repair,DBMS_REPAIR包使用详解

热门文章

  1. Vs自带的freetextbox无法在远端使用
  2. 细述 wxWindows
  3. TCPIP详解之udp
  4. windows 消息
  5. 麟龙指标通达信指标公式源码_麟龙新决策曲线A通达信指标公式源码
  6. visio for android,iPad版的Visio Viewer发布:移动端也能查看Visio文档啦
  7. chrome多版本共存
  8. FPGA之SSI接口协议实现
  9. deepin win10字体_从Win10复制黑体、宋体、仿宋等字体并装到Deepin的正确方法
  10. 父与子python版本,父与子的编程之旅 与小卡特一起学Python(第3版)