C语言版井字棋

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

十五、井字棋

【问题描述】

设计一个井字棋的游戏程序

【基本要求】

游戏规则是:从一个空的棋盘开始,人为x一方,计算机为o一方,人机双方轮流放置棋子,人下的时候,字符x将被放入棋盘中指定的位置,轮到计算机下时,程序将扫描棋盘,并将字符o放入扫描到的第一个空格,某一方有3枚棋子占据了一横行、一竖行或一对角线则获胜,若整个棋盘被占满还没有一方获胜则为和局。

截图:

代码:

//@author GXU-pengcheng #include

#include

#include

void Help();//帮助

int Play(char player,int choice);//对弈

void Init();//初始化棋盘

void Display();//打印棋盘

void Black(int choice);//黑棋

void White(int choice);//白棋

void Block(int choice);//添加选择框

void Clear(int choice);//清空之前的选择框

int Judge(int choice,char symbol);//判断输赢返回值0为无结果,1为获胜,2为平局int Funcx(int choice);//将标号转换为行号

int Funcy(int choice);//将标号转换为列号

void End(char symbol);//结束

int Found();//返回第一个没有棋子的位置的编号

char a[31][64];//用数组存放棋盘和棋子,a[行][列]

int b=0;//棋子个数

int main(){

char player;

int choice;

system("title 井字棋");//设置标题

system("mode con cols=64 lines=35");//设置窗口大小

system("color 70");//设置颜色

while(1){

printf("\n\n\n\n\n\n\t\t\t井\t字\t棋");

printf("\n\n\n\n\n\n\n\n\t\t\t1. 玩家先手\n\n\t\t\t2. 电脑先手\n\n\t\t\t3. 帮助\n\n\t\t\t4. 退出\n\n\n\n\n\t\t请输入: ");

player=getch();

if(player=='1'){

Init();

Block(5);

choice=5;

Play(player,choice);

}else if(player=='2'){

Init();

Play(player,choice);

}else if(player=='3'){

Help();

getch();

system("cls");

continue;

}else if(player=='4'){

return 0;

}else{

printf("\n\n\t\t 输入错误请重新输入!");

Sleep(1000);

system("cls");

continue;

}

}

return 0;

}

void Help(){

system("cls");

printf("\n\n\n\n\n\n\n\n\n\t\t\t 帮助\n\n\n");

printf("\t 'W'上移, 'S'下移, 'A'左移, 'D'右移 \n\n");

printf("\t\t 游戏中按'4'退出");

printf("\n\n\n\n\t\t 按任意键退出");

}

int Play(char player,int choice){//对弈

char get;

char symbol;

int c=0;//Judge得出的结果

while(1){

system("cls");//每次循环清屏一次

Display();

if(player=='1'){//玩家下棋

while(1){//确定要下的位置

if((get=getch())!=' '){

if(get=='4'){

system("cls");

return 0;

}else if( (get=='w'||get=='W') &&choice-3>=1){

Clear(choice);

choice =choice-3;

}else if((get=='s'||get=='S')&&choice+3<=9){

Clear(choice);

choice = choice+3;

}else if((get=='a'||get=='A')&&(choice+2)/3==(choice+1)/3){ Clear(choice);

choice -= 1;

}else if((get=='d'||get=='D')&&(choice-1)/3==choice/3){ Clear(choice);

choice += 1;

}else{

continue;

}

Block(choice);

system("cls");

Display();

}

else{

if(a[((choice-1)/3)*10+2][((choice-1)%3)*21+4]!=' '){ printf("该位置已有其他棋子!");

continue;

相关文档
最新文档