C++五指棋的算法.docx

上传人:b****5 文档编号:12577019 上传时间:2023-04-20 格式:DOCX 页数:19 大小:353.63KB
下载 相关 举报
C++五指棋的算法.docx_第1页
第1页 / 共19页
C++五指棋的算法.docx_第2页
第2页 / 共19页
C++五指棋的算法.docx_第3页
第3页 / 共19页
C++五指棋的算法.docx_第4页
第4页 / 共19页
C++五指棋的算法.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C++五指棋的算法.docx

《C++五指棋的算法.docx》由会员分享,可在线阅读,更多相关《C++五指棋的算法.docx(19页珍藏版)》请在冰豆网上搜索。

C++五指棋的算法.docx

C++五指棋的算法

五指棋的算法

------《C语言程序设计》课程设计

学院名称︰贵州航天职业技术学院

学生姓名︰王辉亚

班级学号︰AO93GZ053020117

指导老师︰陈美成

2010年12月16日

引言

五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。

发展于日本,流行于欧美。

五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

传统五子棋的棋子分为黑白两色,采用围棋棋盘,棋子放置于棋盘线交叉点上。

两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。

摘要

五子棋游戏是一个深受人们喜爱的游戏,通常是人机对弈,本程序设计为人与电脑对弈,一方执黑棋,电脑一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连。

用鼠标点交叉点走棋,人先走后是电脑判断人所走路线来走棋,电脑格局棋式判断进行围堵,整个走棋的过程都是通过鼠标来操作,当一方先有五立棋连在一起就判断那方胜利,然后回车键重新开始游戏。

课程目的

这个程序是对编程基本功的一个训练,将分支、循环、数组、函数综合应用,而不仅限于编制独立的小程序,通过游戏过程增加编程的兴趣,提高编程水平。

编制该程序我对以下的知识点进行的巩固和掌握:

1.数组元素为结构体的数组应用。

2.全局变量应用。

3.按键的处理。

4.数组元素与蛇、食物的对应关系。

5.图形方式等等。

虽然该程序是一个普通而又简单的程序,但是对于一C语言初级阶段的学生来说,是一个很好的锻炼甚至可以说是一个很好的提高。

 

设计思路

棋盘设计为19×19格,初始状态光标在棋盘的中央,人先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋)。

当游戏一方胜利后显示胜利信息,提示信息。

从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表白棋,2代表黑棋。

这样程序的主要工作是接收棋手按键操作,人用鼠标走,电脑是通过人走了以后判断路线自行落棋,一旦接收到回鼠标垫信息,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠落子。

落子成功后,马上判断以该位置为中心的八个方向:

上、下、左、右、左上、左下、右上、右下是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出相应的信息。

如果想退出游戏,可以按Esc键,想重新开始就按回车键开始新一轮的游戏

程序流程图

voidsign(intx,inty,intsig)/*x,y为放子屏幕坐标sig=1加标记sig=2除标记*/

{

switch(sig)

{

case1:

setcolor(9);

line(x-3,y,x+3,y);

line(x,y-3,x,y+3);

setcolor(WHITE);

break;

case2:

setfillstyle(1,RED);

circle(x,y,8);

floodfill(x,y,WHITE);

setcolor(WHITE);

break;

default:

break;

}

voidreset_pre()

{

inti,j;

for(i=0;i<=8;i++)

{

for(j=0;j<=8;j++)

present[i][j]=-1;

}

/*构造以chess[_x][_y]为中心的块*/

voidTo_present(int_x,int_y)

{

intx=_x;

inty=_y;

inti,j;

/*右下*/

if(x-4>=0&&y-4>=0)

{

for(x=_x-4,i=0;x<=_x+4&&x<=18&&i<=8;x++,i++)

{

for(y=_y-4,j=0;y<=_y+4&&y<=18&&j<=8;y++,j++)

{

present[i][j]=chess[x][y];

}

}

return;

}

/*左上*/

if(x+4<=18&&y+4<=18)

{

for(i=8,x=_x+4;x>=_x-4&&x>=0&&i>=0;x--,i--)

{

for(j=8,y=_y+4;y>=_y-4&&y>=0&&j>=0;y--,j--)

{

present[i][j]=chess[x][y];

}

}

return;

}

/*左下*/

if(x-4>=0&&y+4<=18)

{

for(i=0,x=_x-4;x<=_x+4&&x<=18&&i<=8;x++,i++)

{

for(j=8,y=_y+4;y>=_y-4&&y>=0&&j>=0;y--,j--)

{

present[i][j]=chess[x][y];

}

}

return;

}

/*右上*/

if(y-4>=0&&x+4<=18)

{

for(i=8,x=_x+4;x>=_x-4&&x>=0&&i>=0;x--,i--)

{

for(j=0,y=_y-4;y<=_y+4&&y<=18&&j<=8;y++,j++)

{

present[i][j]=chess[x][y];

}

}

return;

voiddis_win(intwho)

{

charch;

setcolor(WHITE);

settextstyle(0,0,4);

switch(who)

{

case1:

outtextxy(240,230,"PCWIN!

");

sound(1500);

delay(100);

sound(0);

delay(50);

sound(800);delay(100);

sound(0);delay(50);

sound(1500);delay(100);

sound(0);delay(50);

sound(800);delay(100);

sound(0);delay(50);

nosound();

delay(1000);

return;

case2:

outtextxy(240,230,"YOUWIN!

");

sound(1500);delay(100);

sound(0);delay(50);

sound(800);delay(100);

sound(0);delay(50);

sound(1500);delay(100);

sound(0);delay(50);

sound(800);delay(100);

sound(0);delay(50);

nosound();

delay(1000);

return;

}

intIs_win(intwho)/*赢返回1否则反回0*/

{

/*横*/

inti,j;

for(i=0;i<=4;i++)

{

if(present[4][i]==who&&present[4][i+1]==who&&present[4][i+2]==who&&present[4][i+3]==who&&present[4][i+4]==who)

{

return1;

}

}

/*竖*/

for(i=0;i<=4;i++)

{

if(present[i][4]==who&&present[i+1][4]==who&&present[i+2][4]==who&&present[i+3][4]==who&&present[i+4][4]==who)

{

return1;

}

}

/*\*/

for(i=0,j=0;i<=4&&j<=4;i++,j++)

{

if(present[i][j]==who&&present[i+1][j+1]==who&&present[i+2][j+2]==who&&present[i+3][j+3]==who&&present[i+4][j+4]==who)

{

return1;

}

}

for(i=0,j=8;i<=4&&j>=4;i++,j--)

{

if(present[i][j]==who&&present[i+1][j-1]==who&&present[i+2][j-2]==who&&present[i+3][j-3]==who&&present[i+4][j-4]==who)

{

return1;

}

}

return0;

 

 

 

 

 

 

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1