![]() |
#2
Remained2022-02-25 02:24
|

//三子棋游戏:TIC-TAC-TOE
//#include<game.h>
#include<stdio.h>
#define ROW 3 //行
#define COL 3 //列
void Menu();//菜单函数申明
void OpenShow();//游戏开始函数申明
void OverShow();//游戏结束函数申明
void Game_Proc();//游戏处理函数申明
void Game(); //游戏函数申明
void Board_init(char Board[ROW][COL],int row,int col);//棋盘数据初始化函数申明
void Board_Display(char Board[ROW][COL],int row,int col);//棋盘打印函数申明
void Player_Turn(char Board[ROW][COL],int row,int col);//玩家操作函数申明
int main()
{
Game_Proc();
}
void Game() //游戏函数
{
char Board[ROW][COL]={0};//定义棋盘数组
Board_init(Board,ROW,COL);//棋盘初始化
Board_Display(Board,ROW,COL); //打印棋盘
while(1) //下棋循环
{
//玩家下棋
Player_Turn(Board,ROW,COL); //玩家回合:将子落到数组中去
Board_Display(Board,ROW,COL); //打印棋盘
//电脑下棋
}
}
void Player_Turn(char Board[ROW][COL],int row,int col) //玩家操作函数
{
int x = 0;
int y = 0;
printf("请输入棋盘中你落子的坐标:例如1 2:表示第一行第2列\n");
while(1)
{
scanf("%d %d",&x,&y);
if(x>0&&x<=3&&y>0&&y<=3)//判断落子坐标是否已经下过
{
if(Board[x-1][y-1] == ' ')//如果合法
{
Board[x-1][y-1]='*';break; //输入完就退出循环
}
else
{
printf("坐标非法:当前坐标已落子\n请重新输入:\n");
}
}
else
{
printf("坐标非法:超出棋盘坐标范围(行:1-3n列:1-3)\n请重新输入:\n");
}
}
void Board_init(char Board[ROW][COL],int row,int col) //棋盘初始化函数,让每行每列填数据的地方为空格
{
int i = 0;
int j = 0;
for(i = 0;i<row;i++)//row行
{
for(j = 0;j<col;j++)//col列
{
Board[i][j] = ' '; //把每行每列棋子输入的地方 都输入空格
}
}
}
void Board_Display(char Board[ROW][COL],int row,int col)//棋盘打印函数
{
int i = 0;
int j = 0;
for(i = 0;i<row;i++)//row行
{
for(j = 0;j < col;j++)//col列 :
{
//打印一行的数据:数据|数据|数据
printf(" %c ",Board[i][j]);//棋盘中每个格子都是:空格棋子空格
if(j < col-1) printf("|");//打印完棋子就打印|,最后一个|不打印,保持井字形
}
printf("\n"); //一行打印结束就换行
//打印分割行
if(i < row-1) //最后一行不打印
{
for(j = 0;j < col;j++)//每列打印---
{
printf("---");
if( j < col-1 ) printf("|");//每列打印|,最后一列|不打印,保持井字形
}
printf("\n"); //一行打印完换行
}
}
}
void Game_Proc()//游戏处理函数
{
int input = 0;
do
{
Menu();
printf("请做出您的选择:>\n");
scanf("%d",&input);
switch(input)
{
case 1: OpenShow();Game();
break;
case 0: OverShow();
break;
default: printf("选择错误,请重新选择^-^\n");
break;
}
}while(input); //1执行下去,0 不执行退出
}
//界********************************************面显示函数********************************************//
void Menu()//菜单函数
{
printf("***********************************\n");
printf("***** *****\n");
printf("***** Welcome to Here *****\n");
printf("***** 三子棋 *****\n");
printf("***** TIC-TAC-TOE *****\n");
printf("***** 输入1:开始游戏 *****\n");
printf("***** 输入0:退出游戏 *****\n");
printf("***** *****\n");
printf("***********************************\n");
}
void OverShow()//游戏结束函数
{
printf("***********************************\n");
printf("***** 游戏退出 *****\n");
printf("***** ^_^ Bye-Bye! *****\n");
printf("***********************************\n");
}
void OpenShow()//游戏开始函数
{
printf("***********************************\n");
printf("***** 游戏开始 *****\n");
printf("***** !^0^! !^0^! *****\n");
printf("***********************************\n\n\n");
}
//#include<game.h>
#include<stdio.h>
#define ROW 3 //行
#define COL 3 //列
void Menu();//菜单函数申明
void OpenShow();//游戏开始函数申明
void OverShow();//游戏结束函数申明
void Game_Proc();//游戏处理函数申明
void Game(); //游戏函数申明
void Board_init(char Board[ROW][COL],int row,int col);//棋盘数据初始化函数申明
void Board_Display(char Board[ROW][COL],int row,int col);//棋盘打印函数申明
void Player_Turn(char Board[ROW][COL],int row,int col);//玩家操作函数申明
int main()
{
Game_Proc();
}
void Game() //游戏函数
{
char Board[ROW][COL]={0};//定义棋盘数组
Board_init(Board,ROW,COL);//棋盘初始化
Board_Display(Board,ROW,COL); //打印棋盘
while(1) //下棋循环
{
//玩家下棋
Player_Turn(Board,ROW,COL); //玩家回合:将子落到数组中去
Board_Display(Board,ROW,COL); //打印棋盘
//电脑下棋
}
}
void Player_Turn(char Board[ROW][COL],int row,int col) //玩家操作函数
{
int x = 0;
int y = 0;
printf("请输入棋盘中你落子的坐标:例如1 2:表示第一行第2列\n");
while(1)
{
scanf("%d %d",&x,&y);
if(x>0&&x<=3&&y>0&&y<=3)//判断落子坐标是否已经下过
{
if(Board[x-1][y-1] == ' ')//如果合法
{
Board[x-1][y-1]='*';break; //输入完就退出循环
}
else
{
printf("坐标非法:当前坐标已落子\n请重新输入:\n");
}
}
else
{
printf("坐标非法:超出棋盘坐标范围(行:1-3n列:1-3)\n请重新输入:\n");
}
}
void Board_init(char Board[ROW][COL],int row,int col) //棋盘初始化函数,让每行每列填数据的地方为空格
{
int i = 0;
int j = 0;
for(i = 0;i<row;i++)//row行
{
for(j = 0;j<col;j++)//col列
{
Board[i][j] = ' '; //把每行每列棋子输入的地方 都输入空格
}
}
}
void Board_Display(char Board[ROW][COL],int row,int col)//棋盘打印函数
{
int i = 0;
int j = 0;
for(i = 0;i<row;i++)//row行
{
for(j = 0;j < col;j++)//col列 :
{
//打印一行的数据:数据|数据|数据
printf(" %c ",Board[i][j]);//棋盘中每个格子都是:空格棋子空格
if(j < col-1) printf("|");//打印完棋子就打印|,最后一个|不打印,保持井字形
}
printf("\n"); //一行打印结束就换行
//打印分割行
if(i < row-1) //最后一行不打印
{
for(j = 0;j < col;j++)//每列打印---
{
printf("---");
if( j < col-1 ) printf("|");//每列打印|,最后一列|不打印,保持井字形
}
printf("\n"); //一行打印完换行
}
}
}
void Game_Proc()//游戏处理函数
{
int input = 0;
do
{
Menu();
printf("请做出您的选择:>\n");
scanf("%d",&input);
switch(input)
{
case 1: OpenShow();Game();
break;
case 0: OverShow();
break;
default: printf("选择错误,请重新选择^-^\n");
break;
}
}while(input); //1执行下去,0 不执行退出
}
//界********************************************面显示函数********************************************//
void Menu()//菜单函数
{
printf("***********************************\n");
printf("***** *****\n");
printf("***** Welcome to Here *****\n");
printf("***** 三子棋 *****\n");
printf("***** TIC-TAC-TOE *****\n");
printf("***** 输入1:开始游戏 *****\n");
printf("***** 输入0:退出游戏 *****\n");
printf("***** *****\n");
printf("***********************************\n");
}
void OverShow()//游戏结束函数
{
printf("***********************************\n");
printf("***** 游戏退出 *****\n");
printf("***** ^_^ Bye-Bye! *****\n");
printf("***********************************\n");
}
void OpenShow()//游戏开始函数
{
printf("***********************************\n");
printf("***** 游戏开始 *****\n");
printf("***** !^0^! !^0^! *****\n");
printf("***********************************\n\n\n");
}
报错内容:
[Error] expected declaration or statement at end of input
[Error] expected declaration or statement at end of input