前言
检验学习成果最好的方式是实践
在学习完C语言的函数和数组以后,就可以简易的实现一些小游戏
本文章为手把手讲解实现C语言三子棋(好好看,相信不会太难的说)
当你自己完成后一定成就感幸福感满满的!!
问题描述
用C语言实现小游戏三子棋
工具
vs2019
基本思路和流程
三子棋的规则
在3X3的棋盘里,率先将三个棋子连成一条直线则胜出
代码实现思路
1.菜单界面:选择开始或者退出游戏
2.初始化棋盘并打印棋盘
3.玩家选择落子坐标
4.电脑实现落子
5.每次落子判断输赢平还是继续
实现步骤
模块化
1.test.c :写整个游戏实现思路流程
2.game.c: 写游戏实现思路中的各个函数的定义,完成函数内容实现函数功用
3.game.h :引用需要用到的头文件,以及对各个自定义函数的声明
(其他模板上方只需要加上 #include “game.h”,避免重复引用相同头文件)
注:模块化便于管理和修改
菜单界面
比较简单直接上代码
代码
void menu()//游戏菜单 { printf("******************************\n"); printf("********** 1.play **********\n"); printf("********** 0.exit **********\n"); printf("******************************\n"); }
选择的实现
玩家通过输入1/0 来选择是开始游戏还是退出游戏
用do while语句实现比较适合
menu(); printf("请开始你的选择:>>>\n"); scanf("%d", &input); switch (input) { case 0: printf("退出游戏成功\n"); break; case 1: printf("即将开始游戏\n"); game(); break; default: printf("输入错误:please input your number again!\n"); break; } } while (input);
初始化和打印棋盘
棋盘
使用3行3列的二维数组来表示,元素类型是char
char board[ROW][COL] = { 0 };
使用宏定义
1.推高代码可读性,后续代码中遇到3,方便理解含义
2.提高扩展性,如果将来要修改棋盘尺寸,代码修改会很方便
#define ROW 3 #define COL 3
初始化
void Initboard(char board[ROW][COL], int row, int col)//初始化棋盘内容 { for (int i = 0; i < row; i++)//行 { for (int n = 0; n < col; n++)//列 { board[i][n] = ' '; } } }
打印
考虑如何实现图表
什么时候该打印
什么时候不该打印
打印的间距
换行的考虑
提供代码
void Displayboard(char board[ROW][COL], int row, int col)//打印棋盘 { for (int i = 0; i < row; i++)//行数 { for (int j = 0; j < col; j++)//列数 { if (j < col - 1)//第一排内容,控制最后一次不打印‘|’ printf(" %c |", board[i][j]); else printf(" %c ", board[i][j]); } printf("\n");//换行 if (i < row - 1)//第二排,控制最后一次不打印 { for (int k = 0; k < col; k++) { if (k < col - 1) printf("---|"); else printf("---"); } printf("\n");//同样换行 } } }
效果图