畅游无限游戏盒子(四)--五子棋

这个是同学的作品 不是我写的

#include

#include

#include

//头文件

// 定义play1和play2的操作

#define play1up 'w'

#define play1down 's'

#define play1left 'a'

#define play1right 'd'

#define play2up '8'

#define play2down '5'

#define play2left '4'

#define play2right '6'

#define play1lq ' '

#define play2lq '0'

#define N 20

#define playnext 'q'

#define exit 'e'

int m=1;

int p[N][N];/*记录棋盘落子情况*/

char q[N][N];/*记录棋盘交叉点棋子种类*/

struct zuobiao

{

int x;

int y;

}weizhi;

/*注意以上为全局声明部分,应用到下面所有调用函数与主函数*/

void gotoxy(int x, int y) /*(屏幕)建立光标移动位置的坐标函数*/

{

COORD c; // COORD表示一个结构体的字符在控制台屏幕上的坐标

c.X=x;

c.Y=y;

SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); // 定位光标位置的函数 将光标移动到指定位置 一个特定的标准设备取得句柄

}

void drawqipan()/*建立棋盘*/

{

int i,j;

for(i=0;i

{

for(j=0;j

{

p[i][j]=0; // 只是单纯的赋初值 无直接关系

q[i][j]=0; // 只是单纯的赋初值 无直接关系

printf("十");

}

printf("\n");

}

}

void movegb(char press)/*(非屏幕)光标的移动*/

{

switch(press)

{

case play1up:if(weizhi.y>-1)weizhi.y--;if(weizhi.y<0)weizhi.y=19;break;

/*对手1光标向上移动*/

case play1down:if(weizhi.y<20)weizhi.y++;if(weizhi.y>19)weizhi.y=0;break;

/*对手1光标向下移动*/

case play1left:if(weizhi.x>-1)weizhi.x--;if(weizhi.x<0)weizhi.x=19;break;

/*对手1光标向左移动*/

case play1right:if(weizhi.x<20)weizhi.x++;if(weizhi.x>19)weizhi.x=0;break;

/*对手1光标向右移动*/

case play2up:if(weizhi.y>-1)weizhi.y--;if(weizhi.y<0)weizhi.y=19;break;

/*对手2光标向上移动*/

case play2down:if(weizhi.y<20)weizhi.y++;if(weizhi.y>19)weizhi.y=0;break;

/*对手2光标向下移动*/

case play2left:if(weizhi.x>-1)weizhi.x--;if(weizhi.x<0)weizhi.x=19;break;

/*对手2光标向左移动*/

case play2right:if(weizhi.x<20)weizhi.x++;if(weizhi.x>19)weizhi.x=0;break

;/*对手2光标向右移动*/

}

gotoxy(2*weizhi.x,weizhi.y); //(调用函数gotoxy)将屏幕的光标移动到指定位置

}

void luozi(char press)

{

static t=0;/*代表坐标交叉点有无棋子的状态*/

if(press==play1lq)

if(t==0&&p[weizhi.x][weizhi.y]==0)

{

printf("●");

gotoxy(2*weizhi.x,weizhi.y);

q[weizhi.x][weizhi.y]=press; // 判断此处坐标的棋子种类为player1的操作

p[weizhi.x][weizhi.y]=1; // 判断此处坐标有无落子(有落子为1无落子为0)

t=1; // 交换player1的操作

}

if(press==play2lq)

if(t==1&&p[weizhi.x][weizhi.y]==0)

{

printf("                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ");

gotoxy(2*weizhi.x,weizhi.y);

q[weizhi.x][weizhi.y]=press; // 判断此处坐标的棋子种类为player2的操作

p[weizhi.x][weizhi.y]=1; // 判断此处坐标有无落子(有落子为1无落子为0)

t=0; // 交换player2操作

}

}

void judgewin(char press)//判断输赢

{

int i,count1,count2=0,count3=0;

struct zuobiao p;

for(i=0;i<4;i++) // 外循环4次(有多少种判定输赢的次数就有多少次外循环)

{

for(count1=4;count1>=-4;count1--) // 满足条件要内循环9次(例如case 0中若五子连在一直线上:若第一个五子的落子为weizhi.x=0,直到第4个五子的落子/第四个循环:p.x=0=count1=weizhi.x,第五次循环weizhi.x-count1开始大于0,第五次开始count2+=1方可判断输赢)

{

switch(i)

{

case 0:p.x=weizhi.x-count1;p.y=weizhi.y;break;

/*从左往右判断是否有五子连续在一直线上*/

case 1:p.x=weizhi.x;p.y=weizhi.y+count1;break;

/* 从上往下判断是否有五子连续在一直线上*/

case 2:p.x=weizhi.x-count1;p.y=weizhi.y+count1;break;

/* 从左上往右下判断是否有五子连续在一直线上*/

case 3:p.x=weizhi.x-count1;p.y=weizhi.y-count1;break;

/* 从左下往右上判断是否有五子连续在一直线上*/

}

if(p.x>=0&&p.y>=0)

{

if(q[p.x][p.y]==play1lq) // 判断棋子种类是否为play1的操作

{

count2++;count3=0;} // 若为play1操作才使count2++

if(q[p.x][p.y]==play2lq) // 判断棋子种类是否为play2的操作

{

count3++;count2=0;} // 若为play2操作才使count3++

}

}

// 分开与上面循环体无关

if(count2>=5)

{

gotoxy(20,20);printf("the side of ● wins\n");printf("If you want to play again...\nPlease do Q! Or else do E!");break;}

else

count2=0;

if(count3>=5)

{

gotoxy(20,20);printf("the side of ○ wins\n");printf("If you want to play again...\nPlease do Q! Or else do E!");break;}

else

count3=0;

}

}

void main() /*主函数*/

{

char press;

system("COLOR 2f"); /*COLOR为变化控制台颜色 2为背景颜色 f为前景颜色*/

PlaySoundA("H:\\Deep Side - Booty Music (扭臀之歌).wav",NULL,SND_FILENAME|SND_ASYNC);

drawqipan();

gotoxy(0,0);

// 开始进入循环结构 注意:每次落子一个就jugewin判断棋子是否为五子

while(m) // 进入死循环 直到m=0为假则退出循环

{

press=getch(); // 不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 头文件

movegb(press); // 光标的移动

switch(press)

{

case play1lq: // 与case play2lq同样的语句 所以可省略

case play2lq:luozi(press);judgewin(press);break; // 循环(每次落子一个然后判断一个) 所以jugewin函数中最多要内循环9次才可以

case playnext:system("cls");drawqipan();gotoxy(0,0);break; // “cls”清除控制台的数据 重新玩则继续循环体所以要附加两个语句(drawqipan与gotoxy)

case exit : m=0;break; // 使m=0,则循环结束退出游戏

default :break;

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容