一、基本逻辑
- 1.菜单界面选择是否开始游戏
- 2.创建棋盘并对棋盘进行初始化
- 3.打印棋盘
- 4.玩家先手,‘*’代表玩家落子(判断输赢)
- 5.电脑下(随机落子),‘#’代表电脑落子(判断胜负)
- 6.返回步骤2并继续执行
二、步骤
我分了三个项,分别是test.c,game.c,game.h
test.c主要放主函数;game.c用来放一些需要用到的函数;game.h则用来放置需要用到的头文件,这样其他两个项目引用头文件时只需#include"game.h"即可。
1.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 DispalyBoard(char board[ROW][COL], int row, int col);//打印棋盘
void playermove(char board[ROW][COL], int row, int col);//玩家下棋
void computermove(char board[ROW][COL], int row, int col);// 电脑下棋
char Iswin(char board[ROW][COL], int row, int col);//判断输赢
int Isfull(char board[ROW][COL], int row, int col);//判断棋盘是否下满
2.test.c
- 菜单(1.开始游戏 0.退出游戏)
- 用switch函数来判断是否进行游戏
- 如果输入1则进入game()函数;
- 如果输入0则输出“退出游戏;
- 输入其他的就显示输入错误。
int main() { srand((unsigned int)time(NULL));//设置随机数的生成起点 int input = 0; do { menu();//菜单界面 printf("请选择:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏"); break; default: printf("选择错误:\n"); break; } } while (input); return 0;
menu()函数
void menu() { printf("********************\n"); printf("***1.play 0.exit***\n"); printf("********************\n"); }
game()函数
void game() { char ret = 0; char board[ROW][COL] = { 0 }; InitBoard(board, ROW, COL); DispalyBoard(board, ROW, COL); while (1) { playermove(board, ROW, COL);//玩家下棋 ret = Iswin(board, ROW, COL); if (ret != 'c') { break; }//判断输赢 DispalyBoard(boa