黑白棋游戏设计

黑白棋游戏设计
黑白棋游戏设计

辽宁工业大学

C语言程序设计课程设计(论文)

题目:黑白棋游戏设计

院(系):软件学院

专业班级:

学号:

学生姓名:

指导教师:胡峰

教师职称:讲师

起止时间: 2008.12.29至2009.1.9

课程设计(报告)任务及评语

目录

第1章课程设计的目的与要求 (1)

1.1 课程设计目的 (1)

1.2 课程设计的实验环境 (1)

1.3 课程设计的预备知识 (1)

1.4 课程设计要求 (1)

第2章课程设计内容 (2)

2.1程序功能介绍 (2)

2.2程序整体设计说明 (2)

2.2.1设计思路 (2)

2.2.2数据结构设计及用法说明 (2)

2.2.3程序结构(流程图) (3)

2.2.4各模块的功能及程序说明 (3)

2.2.5程序结果 (6)

2.3程序源代码及注释 (6)

第3章课程设计总结 (18)

参考资料 (21)

第1章课程设计的目的与要求

1.1 课程设计目的

本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务:

1. 巩固和加深学生对C语言课程的基本知识的理解和掌握

2. 掌握C语言编程和程序调试的基本技能

3. 利用C语言进行基本的软件设计

4. 掌握书写程序设计说明文档的能力

5. 提高运用C语言解决实际问题的能力

1.2 课程设计的实验环境

硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。

1.3 课程设计的预备知识

熟悉C语言及C语言开发工具。

1.4 课程设计要求

1. 分析课程设计题目的要求

2. 写出详细设计说明

3. 编写程序代码,调试程序使其能正确运行

4. 设计完成的软件要便于操作和使用

5. 设计完成后提交课程设计报告

第2章课程设计内容

2.1程序功能介绍

黑白棋游戏是一个深受人们喜爱的游戏,通常是人机对弈,本课题设计为人与人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己棋子的数目多于对方。按键盘上的方向键可以上下左右移动棋子,按回车键可以摆放棋子。

2.2程序整体设计说明

2.2.1设计思路

程序界面是一个二维平面图,所以数据的表示用二维数组,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格中的状态,共有三种情况,分别是空格、黑棋和白棋。这样给数组元素的取值设定为0、1、2,其中0代表空格,1代表白色棋子,2代表黑色棋子。这样程序的主要工作是接收棋手按键操作,一旦接收到回车键,说明棋手摆子,先判断是不是有效位置,也就是能不能包围住对方棋子,如果能,便为棋子所在的位置往上下、左右、左上、左下、右上、右下8个方向寻找被包围住的所有棋子(必须是连续的,中间不能有空格),将这些被包围住的对方棋子都变成自己的棋子,然后对当前棋盘中的黑白棋个数进行统计并输出结果。如果没有这样的位置可以落子,则停步,让对方走棋,重复上述步骤,直到游戏结束。如果想提前终止游戏,可以按Esc键。

2.2.2数据结构设计及用法说明

int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/

char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/

void playtoplay(void);/*人人对战函数*/

void DrawQp(void);/*画棋盘函数*/

void SetPlayColor(int x);/*设置棋子第一次的颜色*/

void MoveColor(int x,int y);/*恢复原来棋盘状态*/

int QpChange(int x,int y,int z);/*判断棋盘的变化*/

void DoScore(void);/*处理分数*/

void PrintScore(int n);/*输出成绩*/

void playWin(void);/*输出胜利者信息*/

2.2.3程序结构(流程图)

黑白棋游戏流程图如下:

2.2.4各模块的功能及程序说明

(1)main()主函数

首先初始化图形模式,然后通过调用函数先画出棋盘,再开始游戏,一旦游戏结束则关闭图形模式,程序结束。

(2)DrawQp()画棋盘函数

先设置背景色,然后通过循环利用水平和垂直直线画出棋盘,再利用填充圆画出初始棋子。

(3)SetPlayColor()设置棋子的颜色

目的是为判断棋手和棋盘的变化,根据函数参数的值来设计填充棋子的当前颜色,值为1代表白棋,值为2代表黑棋。

(4)MoveColor()恢复原来棋子的状态

棋手要通过移动光标键走到落子的位置,在经过的路程上显示当前棋子,则会覆盖原来的棋盘状态,所以一旦棋子走过后,就应恢复原来的状态。

(5)playbplay()人人对战函数

这是游戏进行的函数,主要是接收棋手的按键消息,其处理过程如下:

1)按Esc键程序可以随时结束。

2)按上下左右光标键,则改变棋子移动的坐标值。

3)按回车键后判断:

①如落子的位置已经有棋则无效,继续压键。

②如落子位置是空格,可以将棋子落入格内,调用函数QpChange()判断是

否引起棋盘的变化,函数值为1有变化,为0没变化。如果棋盘有变化,说明将包围的对方棋子吃掉,统计当前分数,如果棋盘没有变化,则说明落子的位置无法包围对方的棋子也视为无效棋,可以继续寻找合适的位置,但开始统计其落子次数,一旦尝试次数超过当前棋盘的空格数,则说明他无棋可走,则放弃此步,让对方下棋。

③如果棋子变化后,格子已占满64格或一方棋子为0,则游戏结束,显示胜利

方信息。按任意键程序结束。

④重复上述步骤,直到游戏结束。

(6)QpChange()判断棋盘变化

当棋手按回车键落子后,就要分别往8个方向判断是否包围住对方棋子,如果是,则改变棋盘,也就是棋盘上黑白棋子的个数要发生变化。表示黑白棋的图形用屏幕上的像素坐标,而棋子的状态是数组元素a,所以要根据落子的坐标x和y计算出对应数组元素a的下标i和j。i代表行,j代表列,对于8×8的棋盘,它们的值为0-7,如果j<6,往右边判断,从当前位置开始,用循环语句判断右边是否有一个或连续多个对方的棋子,遇到自己的棋子或空格则结束循环,如果循环结束不是遇到空白,且列坐标小于8,则说明这些位置的棋子是被自己包围的对方棋子,将它们吃掉.也就是改变为自己的棋子,如果有棋子发生了变化,给棋盘变化标志值yes赋值为1,同样的方法向左、上、下等8个方向进行判断,并作相应的变化。如果所有方向都判断过,并且没有引起棋盘的变化,则棋盘变化标志值yes为0,返回yes,结束本函数。

(7)DoScore ()处理分数

根据当前数组元素的值判断分数,也就是各方棋子的个数,如果数组元素值为1,白棋棋子数累加;如果数组元素值为2,则黑棋棋子数累加。

(8)PrintScore()输出成绩

利用设置实体填充模式填充矩形条消除掉前次的成绩,再利用索赔sprintf()函数将整数转换为字符串的形式,再利用outtextxy0函数将成绩输出。

(9)playWin()输出胜利者结果

根据分数值score1和score2的大小得出下棋的结果,输出赢者信息。

2.2.5程序结果

2.3程序源代码及注释

#include "graphics.h" /*图形系统头文件*/

#define LEFT 0x4b00 /*光标左键值*/

#define RIGHT 0x4d00 /*光标右键值*/

#define DOWN 0x5000 /*光标下键值*/

#define UP 0x4800 /*光标上键值*/

#define ESC 0x011b /* ESC键值*/

#define ENTER 0x1c0d /* 回车键值*/

int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/ char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/

void playtoplay(void);/*人人对战函数*/

void DrawQp(void);/*画棋盘函数*/

void SetPlayColor(int x);/*设置棋子第一次的颜色*/

void MoveColor(int x,int y);/*恢复原来棋盘状态*/

int QpChange(int x,int y,int z);/*判断棋盘的变化*/

void DoScore(void);/*处理分数*/

void PrintScore(int n);/*输出成绩*/

void playWin(void);/*输出胜利者信息*/

/******主函数*********/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define HH '0'

#define N 6

int Q=0;

char key;

int fine=1;

int A=0,B=0;

char s[N][N],m[N][N];

void *ball;

int maxx;

unsigned int size;

loading()

{ int z=1;

while(z)

{ if(z>77)break;

printf("<");

delay(5000);

z++;

}

delay(2000);

cleardevice();

}

unsigned char Get_Ascii_Key(void) {

if(bioskey(1))

return(bioskey(0));

else return(0);

}

int Test_Ascii_Key(int ascii)

{

if(Get_Ascii_Key()==ascii)

return(1);

else

return(0);

}

void tu(){

maxx=getmaxx();

size=imagesize(210,390,450,420);

ball=malloc(size);

setfillstyle(1,10);

bar(160,170,473,253);

setfillstyle(1,9);

bar(163,173,470,250);

setcolor(13);

outtextxy(200,200,"Welcome to BLACK & WHITE chess"); setcolor(14);

outtextxy(250,220,"Developer :Wu siyuan ");

outtextxy(290,240,"2002.8");

outtextxy(210,390,"Press any key to contunue...");

getimage(210,390,450,420,ball);

while(!kbhit()){

putimage(210,390,ball,XOR_PUT);

delay(30000);

}

cleardevice();

}

void sou(void){

}

void print()

{ int i=0,j=30;

setcolor(11);

outtextxy(35,20," 0 1 2 3 4 5");

outtextxy(14,50,"0");

outtextxy(14,100,"1");

outtextxy(14,150,"2");

outtextxy(14,200,"3");

outtextxy(14,250,"4");

outtextxy(14,300,"5");

setbkcolor(0);

setlinestyle(SOLID_LINE,0,2);

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

{ setcolor(GREEN);

line (j,30,j,330);

j+=50;

}

j=30;

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

{ setcolor(GREEN);

line(30,j,330,j);

j+=50;

}

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

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

{ if(s[i][j]=='o')

{

setcolor(WHITE);

circle(55+j*50,55+i*50,15);

}

else if(s[i][j]=='x')

{ setcolor(RED);

circle(55+j*50,55+i*50,15); }

}

}

int cal(char z)

{ int *p=0;

int num=0,i,j;

for(i=0;i

for(j=0;j

if(s[i][j]==z)num++;

p=#

return(*p);

}

void save()

{int i,j;

for(i=0;i

for(j=0;j

m[i][j]=s[i][j];

}

void load()

{ int i,j;

for(i=0;i

for(j=0;j

s[i][j]=m[i][j];

}

snew(int x,int y,char z1,char z2)

{int i,j,a;int can[]={0,0,0,0,0,0,0,0,0},k[N*N]; if(s[x][y-1]==z1&&(y-1)>=0)

{

i=0;

while(i

{

if(s[x][i]==z2){ can[1]=1;break; }

i++;

}

}

if(s[x][y+1]==z1)

{

i=y+2;

while(i

{

if(s[x][i]==z2){ can[2]=1;break;}

i++;

}

}

if(s[x-1][y]==z1&&(x-1)>=0)

{

i=0;

while(i

{

if(s[i][y]==z2){can[3]=1;break;}

i++;

}

}

if(s[x+1][y]==z1)

{i=x+2;

while(i

{

if(s[i][y]==z2){can[4]=1;break;}

i++;

}

}

if(s[x-1][y+1]==z1&&(x-1)>=0)

{i=2;

while(y+i=0))

{if(s[x-i][y+i]==z2){can[5]=1;break;}

i++;

}

}

if(s[x+1][y-1]==z1&&(y-1)>=0)

{i=2;

while(i=0))

{if(s[x+i][y-i]==z2)

{can[6]=1;break;}

i++;

}

}

if(s[x-1][y-1]==z1&&(x-1)*(y-1)>=0)

{i=2;

while(x-i>=0&&y-i>=0)

{if(s[x-i][y-i]==z2)

{can[7]=1;

break;}

i++;

}

}

if(s[x+1][y+1]==z1)

{i=2;

while(i+x

{if(s[x+i][y+i]==z2)

{can[8]=1;

break;}

i++;

}

}

for(i=1,j=0;i<=8;i++)

if(can[i]==0)j++;

if(j==8&&Q==1) {printf("error!");

exit(1); }

else if(j!=8)s[x][y]=z2;

if(can[1]==1)

{ i=1;

while(s[x][y-i]==z1)

{s[x][y-i]=z2;

i++;

}

can[1]=0;

}

if(can[2]==1)

{i=1;

while(s[x][y+i]==z1)

{s[x][y+i]=z2;

i++;

}

can[2]=0;

}

if(can[3]==1)

{i=1;

while(s[x-i][y]==z1)

{ s[x-i][y]=z2;

i++;

}

can[3]=0;

}

if(can[4]==1)

{i=1;

while(s[x+i][y]==z1)

{s[x+i][y]=z2;

i++;

}

can[4]=0;

}

if(can[5]==1)

while(s[x-i][y+i]==z1)

{s[x-i][y+i]=z2;

i++;

}

can[5]=0;

}

if(can[6]==1)

{i=1;

while(s[x+i][y-i]==z1)

{s[x+i][y-i]=z2;

i++;

}

can[6]=0;

}

if(can[7]==1)

{i=1;

while(s[x-i][y-i]==z1)

{s[x-i][y-i]=z2;

i++;

}

can[7]=0;

}

if(can[8]==1)

{i=1;

while(s[x+i][y+i]==z1)

{s[x+i][y+i]=z2;

i++;

}

can[8]=0;

}

} /* snew */

void one()

{ int a,b;char g='o';

load();

setcolor(15);

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\n To exit the Game press the 'q' key.\n");

printf("Please input x (0 to 5):");

while(1){

a=Get_Ascii_Key();

if(a==113||a==81){

printf("\nQuit?(y or n)");

while(1)

{

if(Test_Ascii_Key(89)||Test_Ascii_Key(121))

exit(0);

else if(Test_Ascii_Key(110)||Test_Ascii_Key(78))

{printf("\n\tWelcome to return the Game !\n");break; }

}}

if(a>=48&&a<=53){printf("\tGood! x has get!\n");

break;}

}

a=a-48;

printf("Please input y (0 to 5):");

while(1){

b=Get_Ascii_Key();

if(b==113||b==81)

{

printf("\nQuit?(y or Y)");

while(1)

{

if(Test_Ascii_Key(89)||Test_Ascii_Key(121))

exit(0);

else if(Test_Ascii_Key(110)||Test_Ascii_Key(78))

break;

}}

if(b>=48&&a<=53){printf("\tGood! y has get!");break;}

}

b=b-48;

Q=1;

snew(a,b,'x','o');

Q=0;

save();

A=cal(g);

B=cal('x');

/* printf("\t\t\t\t\t\t\rA=%d,B=%d",A,B);*/

}/* one */

void search()

{

int i,j,r=0;

for(i=0;i

for(j=0;j

if(s[i][j]==HH)

r++;

if(r==0)fine=0;

}

void two()

{ char h='x';int row[N*N],col[N*N];

int a=1,ii,j,t,t1,k[N*N];

load();

for(ii=0;ii

for(j=0;j

if(s[ii][j]==HH)

{

row[a]=ii;

col[a]=j;

a++;

}

/* space right */

for(ii=1;ii

{

load(); /*two*/

snew(row[ii],col[ii],'o','x');

k[ii]=cal(h);

}

t=k[1];

ii--;

t1=ii;

while(ii)

{

if(t<=k[ii])

{t=k[ii];t1=ii;}

ii--;

}

a=t1;

A=cal('o');

B=t;

load();

snew(row[a],col[a],'o','x');

save();

cleardevice();

printf("\n\n\t\t\t\t\t Computer located :%d,%d",row[a],col[a]); }

main()

{ int i,j;

int gd=DETECT,gm;

clrscr();

initgraph(&gd,&gm,"d:\\tc\\bgi");

setbkcolor(BLACK);

tu();

sou();

setbkcolor(0);

for(i=0;i

for(j=0;j

s[i][j]='0';

s[2][2]=s[3][3]='x';

s[2][3]=s[3][2]='o';

save();

loading();

cleardevice();

while(fine)

{

print();

one();

two();

search();

if(key==113||key==81)

{

printf("\nQuit?(y or Y)");

while(!Test_Ascii_Key(89)&&!Test_Ascii_Key(121)); break;

}

}

if(A>B)outtextxy(400,200, " You win!");

else if(A

else outtextxy(400,200," It's a draw!");

printf("\n You:%d I:%d",A,B);

getch();

}

黑白棋技巧浅析-凝聚手与行动力

黑白棋技巧浅析——凝聚手与行动力 作者:leolin2012(项空月) 一前言 黑白棋也称Othello,翻转棋(reversi),是风靡全球的一款棋类益智游戏,在欧美,东南亚,乃至拉丁美洲都很流行,但是在中国,相对于围棋,中国象棋,五子棋等其他棋类游戏,黑白棋的流行与普及程度尚浅。就我个人而言,我认为黑白棋作为一种棋类游戏,与现今高效率快节奏的生活是很合适的,它的棋盘不大(8*8),方便携带,并且下一盘不需要太长的时间,快棋的话3-5分钟就能结束一局,很适合上班族,学生在空闲时间放松一下心情,换换脑筋。而你如果不想仅仅满足于放松心情,换换脑筋,而是想凭借自己的聪明才智在黑白棋领域大大施展一番,黑白棋也完全能够满足你的要求——不要小瞧这8*8的棋盘,其中可谓变化万千,玄机暗藏,黑白棋爱好者们对它有一句很经典的评语:A minute to learn, a lifetime to master(学会一分钟,精通一世功),美国的黑白棋世界冠军B.Rose甚至把这句话作为自己那部在黑白棋界耳熟能详的著作的题目。A minute to learn, a lifetime to master,我认为这句话不光适用于黑白棋,所有的棋类运动都是如此,比如围棋、五子棋,与黑白棋类似,它们的基本规则都很简单,但基本规则越是简单,就意味着约束越小,那基于此规则衍生出来的诸多变化就越是复杂。 尽管黑白棋在中国不被人熟知,但这里也有一批热爱黑白棋的

人,我有幸也是其中的一员,作为一名下棋有段时间,达到了一定程度的黑白棋爱好者,我非常乐意把我自己对黑白棋的一些心得与大家分享,然而让我觉得很惭愧的是,我的棋力非常有限,因而本文对黑白棋相关技巧的叙述难免有粗浅疏漏之处,甚至有的地方可能根本就是错误的,我敬请大家谅解,并诚挚的希望大家能给与批评指正。本文略去诸如行棋规定,胜负判断等黑白棋基本规则,如果你对黑白棋一无所知,那正如前文所说,你可以用一分钟去弄懂这些,咱们现在要谈论的是一分钟之后的事情^_^。 二散度相关 2.1 几个定义 下面我们来回忆一下黑白棋中有关散度的一些概念。 散度的定义如下:在与一个棋子各向相邻的8个格子中,空格的数量称为该棋子的散度。根据这个定义我们知道,一个棋子的散度最小为0,最大为7。图1标明了每个棋子的散度值。

五子棋需求分析说明书

五子棋需求分析说明书 1. 引言 1.1 编写目的 (1)为了更好的了解软件的需求。该文档可供用户浏览,了解开发内容和各部分模块所列功能。 (2)为了使开发更具有目的性。开发人员需要对需求进行深度了解,该文档可供代码编写人员浏览,使开发过程不离主线,更完整地看到各模块间的数据流通。 (3)为了方便整体维护;开发管理者需要整体把握软件各模块功能的实现与测试,该文档可供开发管理人员浏览,对其内容进行动态调整。 1.2 背景 1) 软件系统名称:五子棋。 任务开发者:DTO小组。

用户:玩家。 1.3 参考资料 《五子棋》软件设计报告杭州电子科技大学胡峰令1. 4 关于五子棋的资料 五子棋是起源于中国古代的传统黑白棋种之一。亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格” 等多种称谓。 玩家根据自身等级和习惯,可以自由选择不同的游戏房间。其游戏规则也有所不同。详细分为三种棋室:普通棋室、国标棋室、职业棋室。其中普通棋室不受任何规则限制;国标棋室有禁手规则限制;而职业棋室则在国标棋室的基础上增加“三手交换”和“五手两打”两项规则。(三手交换:是指黑棋下盘面第3着棋后,白方在应白④之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。五手两打:是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,让白棋在这两步棋中任选一步,然后再继续对弈。 国际比赛规则规定:对局中如黑方出现禁手,白方应立即

指出禁手点,黑方即负。如白方在黑方出现禁手后,又落一步白子,黑棋禁手则不成立了。所以在"有禁手"的房间里,如果黑方出现禁手,白方应立即按下"禁手"按钮。 程序会判黑方负。如果这时白方又在棋盘上落一子,黑棋禁手则不成立了。为了简化用户对"禁手"按钮的使用,也有"走禁手就输"和"禁手不能落子"规则的房间,顾名思义不多介绍。虽然采取了禁手的限制,黑棋先行仍有优势,黑棋仍可以必胜。所以如果用户是高段位的棋手,或者想成为高手一定要选择国际上比赛选用的比赛标准,即“三手交换,五手两打”。 2任务概述 2.1目标 该软件是根据五子棋而开发的小游戏。可以提供玩家和玩家,玩家和电脑下五子棋。 2.2用户的特点 本软件的最终用户是会下五子棋的玩家。不需要特别的技术要求,只要能操作简单的界面。

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

五子棋教案

教学目标: 激起学生学习五子棋的兴趣,教育学生沉着冷静,有良好的棋风。 教学准备:五子棋 教学过程: 一、认识五子棋 1.出示棋盘和棋子,教师演示,让学生认识什么是五子棋。 了解:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于古代的传统种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高,而且富含,有助于修身养性。 2.明确我们社团的活动内容:五子棋。 二、学下五子棋 1、请会下五子棋的学生说说下棋的规则及下棋的经验。 2.教师总结下棋规则: ①摆成连线的五个子后,则算赢; ②如果手中的子全摆完,则移动棋盘上的子,每次棋只走一步; ③棋盘上的子不列五个就算输。 三、找棋友,分成组 可让学生自行找棋友,拼成三人一组或两人一组,三人一组的,其中一人可当裁判。 四、学生下五子棋 1.小组内可举行比赛,采用三局两胜制,决出优胜者。 2.请小棋手介绍取胜经验 3.结合活动情况评出本次小棋手

教学目标: 在老师帮助下认识五子棋的棋具,学会正确执子下子。 教学准备:五子棋棋具、图片 教学过程: 一、结合实物、图片认识五子棋的棋具 1.棋具包括棋盘和棋子。 2. 了解棋具历史:相传中华民族的祖先轩辕黄帝无意之中画下了十七条横线十条竖线,这无意中的发明造就出了五子棋。早在公元595年古人就用瓷来烧制了。 千百年来,人们用各种材质来制造围棋的棋子,如:玻璃、瓷器、玉、玛瑙、铜等等。 古代五子棋棋盘与围棋棋盘是通用的。五子棋棋子亦称“棋石”分黑、白两色,形状为扁圆形,有一面凸起或两面凸起等形状,厚度不超过厘米,直径为~厘米;一副棋子总数为225枚,其中黑子113枚,白子112枚。按质地的不同,可分为玻璃、陶瓷、塑料、智石、磁铁、蛤贝、烧料、水晶、玛瑙、玉石等棋子。 国内质量比较好的是云子,而日本常用的棋子是贝壳制作的。 3. 认识棋盘和棋子 棋盘:认识棋盘横竖线,交叉点。横向从左到右用a到o共十五个英语字母标出,竖向从下到上用1到15共十五个阿拉伯数字标出。棋盘上的横线和竖线共交叉形成了225个交叉点,棋子就落在棋盘的这些交叉点上。 棋盘上有5个比较特殊的交叉点,用小黑点标识出来,叫做星;中间的星叫天元,表示棋盘的正中心; 四周的4个星叫小星,表示棋盘的四个角落;星在棋盘上起一定的标示位置作用。 棋子:由黑白两种颜色组成。一人拿黑棋,另一个人拿白棋,黑棋先走,白棋后走。共有225个棋子,与交叉点的个数相同;其中黑棋113个,白棋112个,不过平时下棋棋子少些也是可以的。正确的拿棋子的方法是食指的指甲与中指的指肚儿夹住棋子。棋子落在棋盘的交叉点上,落下后不能移动,也不能吃子。 4.学生练习执子、下子,相互纠正。 二、学生分组下五子棋。 五子棋教育活动(三)

黑白棋游戏设计1[1]

VC程序设计课程设计 报告书 设计题目:黑白棋游戏设计 院系: 班级: 组别: 学号: 姓名: 起止日期: 指导教师:

目录 前言 (1) 1. 课程设计计划 (2) 2.需求分析 (3) 3.概要设计 (4) 4.详细设计 (5) 5.编码与测试 (13) 6.心得体会 (15) 参考文献 (16)

前言 黑白棋,也称反棋(Reversi)、奥赛罗棋(Othello),苹果棋,翻转棋。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。 起初,黑白棋在西方和日本很流行,近年来,黑白棋正逐步为中国玩家所接受,并深受喜爱。 本次我们组选择这个题目做大作业,一方面是巩固和提高以前所学的VC++的知识;另一方面是因为这可能是我们中的大多数人第一次完成一个软件的系统设计,选择一个中等难度且相对成熟的软件来设计既易于实现又留有一定的上升空间,符合我们的实际情况。 我们所设计的这种黑白棋游戏有几个特点:程序短小精悍,简洁明了;游戏界面美观,容易操作;功能丰富,趣味性强。

1. 课程设计计划 黑白棋游戏设计所完成的就是一个游戏软件系统。其一般的功能包括:开始新局,对弈方式选择,先手选择,棋力设置,限时设置,计算机演示,保存棋局,载入棋局,导出走棋信息,重温棋局,英雄榜,悔棋,设置属性,帮助信息,关于黑白棋的介绍等,要求设计一个黑白棋游戏软件,通过计算机实现各个功能。其具体设计要求为: 1、位图的导入和棋盘的生成 2、记录双方对弈时间的计时器与记录双方子数的计数器 3、选择人机对战与人人对战的函数及控制堆栈难度的主函数 4、实现悔棋功能的堆栈 我们对项目期望能实现 a 可以实现人机对弈。 b 棋力可调,分初级,中级,高级。 c 提示音功能,下错、下对有不同的提示音。 d 玩家遇到疑问,需要帮助时,给予一定的帮助 e 界面色彩友好,给人以良好的视觉冲击。 f 操作方便,容易上手。 本课程设计工作进度计划为: 表1 课程设计计划 本课程设计任务的分工:陈涛涛完成人机对战中的实现保存棋局、载入棋局、重温棋局、英雄榜、悔棋功能。本人完成人机对战中的实现开始,退出,帮助,难度设计,播放背景音乐功能。

Android黑白棋游戏的设计与开发

毕业设计 基于安卓系统的黑白棋游戏的设计与实现 学院: 专业: 学号: 学生姓名: 指导教师: 2016.4.18

黑白棋游戏的设计与实现 摘要随着技术的发展,手机越来越普遍,安卓智能平台越来越完善,成为手机的主流系统。千元智能机的出世,智能机替代传统功能机的趋势将日益明显,安卓系统则占领了主导地位。该文描述了在安卓模拟器下实现实现了黑白棋游戏的功能。 关键词安卓;安卓系统;游戏;黑白棋;安卓开发 The design and implementation of the black and white chess game Abstract with the development of technology, mobile phones are becoming more and more common, Android intelligent platform is becoming more and more perfect, and become the mainstream of the mobile phone system. Thousands of intelligent machines was born, intelligent machines replace the traditional features of the trend will become increasingly apparent, Android system has occupied the dominant position. This paper describes the realization of the function of the black and white chess game in Android simulator. Keywords Android; Android system; game; black and white chess; Android development 前言 2007年11月,Google推出了一种由操作系统,中间件,用户友好应用软件组成的智能手机平台安卓。安卓推出以来就广受关注,而且安卓还延续着LINUX的开放精神,开放了源代码,这就意味着所有的程序开发员都可以按照自己的喜好通过安卓开发平台来开发出自己的应用程序。根据市场调研机构IDC公布的数据。2015年全球智能手机出货量再创记录达14.3亿部,同比增长10.1%。2015年Q4期间全球智能手机出货量达到了3.995亿,同比增长5.7%。 一.绪论 1.1 开发背景 Android(['?ndr?id])是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导。 Android 系统最初由安迪·鲁宾(Andy Rubin)制作,最初主要支持手机。2005年8月17日被Google收购。2007年11月5日,Google 与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟 (Open Handset Alliance)来共同研发改良Android系统并生产搭载Android的智慧型手机,并逐渐拓展到平板电脑及其他领域上。随后,Google以Apache免费开源许可证的授

幼儿园大班数学教案:黑白棋大赛

幼儿园大班数学教案:黑白棋大赛 Teaching plan of big class mathematics in kindergarten: black a nd white chess competition

幼儿园大班数学教案:黑白棋大赛 前言:本文档根据题材书写内容要求展开,具有实践指导意义,适用于组织或个人。便于学习和使用,本文档下载后内容可按需编辑修改及打印。 活动目的: 1、通过“黑白棋大赛”帮助幼儿学习6的加法。 2、初步培养孩子们的合作精神。 活动准备: 1、大棋谱两副,黑白棋子若干。 2、红、黄、绿、紫队标志一份,每队准备一副棋谱,若干黑白子。 3、数字卡片“6”以内加减算式若干。 活动过程: 一、分队推选小队长 “分成四队,每队4个孩子,自己选出小队长” 二、黑白棋对抗赛

1、规则:每队选2名小队员先后参加比赛,第一名队员用黑子,第二名队员用白子,要求黑子和白子合起来我给你的数。 2、幼儿比赛,教师总结比赛情况。 三、合作摆“6” 1、规则:请一组的小朋友合作摆“6”,一行一种摆法列一道算式,要求算式不能重复,比比看规定时间哪一队找到的6的加法算式最多,最正确。(幼儿摆“6”) 2、相互检查 现在请你们相互检查,先看看他们列了几道算式,是否正确,如果有错错再哪?每队选一位小朋友告诉大家结果。(总结比赛情况) 3、“6子通”抢答赛 我这里有一张大棋谱,里面藏着许多6子通的6的加法算式,能能找到吗? 4、总结得分评出第一名。 五、个人竞赛:猜猜看

1、规则:我给你5个数字“ 2、5、1、 3、4”请你用三十秒的时间记住,然后我把数字翻过去,请你指出和2加起来是6的数。 2、幼儿比赛,答对发奖。 六、延伸 刚才,我们想了许多办法使黑子和白子合起来是6,那么要他们合起来是7,该怎么摆棋子呢?我们到教室里去摆摆看好不好啊? -------- Designed By JinTai College ---------

黑白棋游戏课程设计

黑白棋程序源代码: #include "graphics.h" #include "stdio.h" #include "stdlib.h" #include "conio.h" #include "dos.h" #include "math.h" #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b #define ENTER 0x1c0d #define F1 0x3b00 #define F2 0x3c00 #define F3 0x3d00 #define F4 0x3e00 int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/ char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/ void playtoplay(void);/*人人对战函数*/ void DrawQp1(void); void DrawQp2(void); void DrawQp(void);/*画棋盘函数*/ void SetPlayColor(int x);/*设置棋子第一次的颜色*/ void MoveColor(int x,int y);/*恢复原来棋盘状态*/ int QpChange(int x,int y,int z);/*判断棋盘的变化*/ void DoScore(void);/*处理分数*/ void PrintScore(int n);/*输出成绩*/

Android五子棋游戏综合程序设计

实验项目名称实验七、 Android五子棋综合程序设计 一、实验目的 通过进行一个较为完整的Android应用程序开发,学习综合运用课程所学的相关Android开发知识的,进行移动软件设计的相关能力。在模拟软件开发的过程中,掌握从问题发现、系统分析、系统规划到代码实现中每一步所要做的工作。掌握实际软件开发的过程和方法。 二、主要仪器设备、试剂或材料 微型计算机;JDK、eclipse、ADT、Android SDK等软件包 三、实验内容, 本次设计主要是设计一个能够在 Android 手机上运行的五子棋游戏。根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎界面,进行选择操作后再进入游戏的主界面开始游戏。本游戏软件也将遵循该流程,玩家打开游戏软件后将先进入欢迎界面,选择游戏模式,然后进入游戏的主界面开始游戏。进入游戏的主界面后,系统将根据玩家所选的游戏模式给玩家设置对手玩家。游戏过程中,棋盘上方的提示信息会提示玩家轮到哪一方下子,玩家也可以进行悔棋、认输等操作。 四、程序设计思路、运行及及结果分析 (1)设计思路 此手机五子棋游戏分为以下几个功能模块:游戏界面初始化模块:装载界面图片,画出棋,盘清空盘,清空棋游戏双方落子集合等等功能。 主循环控制模块:负责控制下棋顺序,当轮到某方下子时,负责将程序流程转 到相应的模块中,主要担当一个调度者的角色。 玩家落子模块:即用户在指定落子区域单击后,程序会计算该子的坐标,并且在 相应位置画出相应的棋子。 分析盘面得出最佳下子位置模块:是本次设计的核心部分,即人工智能模块。 电脑落子模块:在分析出来的最优位置上画出相应的棋子。 胜负判断模块:根据预先设定的规则,判断游戏胜负。 悔棋功能模块:通过点击悔棋按钮可以进行悔棋。 要求重新开始功能模块:通过按下键盘上的向下键即可 (2)运行及结果分析 ①欢迎页面

嵌入式系统黑白棋课程设计报告

嵌入式系统课程设计报告——黑白棋程序设计 学院计算机 专业计算机 教师 学生 学号 2013年x月xx 日

1 设计目的 利用VS2005编程实现基于WINCE的8*8大小的黑白棋程序设计。在WINCE端运行 2、开发环境 软件: Visual Studio 2005 Vc++6.0 3、设计任务及要求 黑白棋棋盘大小为8*8,实现人人对战即可。 设计要求:利用二维数组标记棋盘,下子后判断横向、纵向或对角有无相同颜色棋子,若有则该线段中所有棋子置为该颜色。棋盘所有棋子填满后游戏结束。棋子数多者胜 4、实现过程 1、设计初始化棋盘函数

2、复制棋盘函数 3、显示棋盘函数 4、选择下棋类型 4、计算可落子的位置个数,及该位置落子后翻过的棋子的个数 5、设置棋子的稳定性(计算得分的依据),空白处除外 6、评价棋手得分 4.1 硬件 WINDOWS操作平台利用VC++实现黑白棋游戏设计 Microsoft Visual Studio 2005 4.2驱动程序设计 WinCE界面 4.3用户应用程序设计 #include using namespace std; int const MAX=10000; enum Color { WHITE=-1,BLANK,BLACK //是否能落子 //黑子 }; 主函数

int main(void) /////////////主函数 { Chessboard board; Chessboard *pBoard=&board; enum Color player=BLANK,nowPlayer=BLACK;//声明两个enum枚举变量player,nowplayer Choice choice; Choice *pChoice=&choice; int dif=-1,step=4,success=0; char restart=' '; start: ///////////////////////////////////////////// player=BLANK; ///////////////////////////////////////////// nowPlayer=BLACK; dif=-1; step=4; restart=' '; int b; cout<<"输入1为人人对战,否则为人机对战:"; cin>>b; if(b==1){ /////////人人对战//////////// while(player!=WHITE && player!=BLACK) { cout<<"\n请选择执黑棋(○)(1),或执白棋(●)(-1)\t执黑棋先下:\n"; scanf("%d",&player);/////////////////////////////////////////////////////// ////// if(player!=WHITE && player!=BLACK) { cout<<"黑白设置错误.\n"; } } board.initChessboard(pBoard); /////////初始化棋盘/////////// while(step<64) /* 棋盘上未下满64子 */ { char *nowPlayerName=""; if(nowPlayer==BLACK) { nowPlayerName="黑棋(○)"; } else if(nowPlayer==WHITE)

黑白棋游戏

黑白棋游戏 摘要本课题设计一个黑白棋游戏系统,游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单上手很容易,但是它变化又非常复杂。我选择这个题目做设计,一方面是巩固和提高以前所学C语言知识,另一方面是因为这可能是我第一次完成一个软件的系统设计,选择一个中等难度且相对成熟的软件来设计既易于实现又留有一定的上升空间,符合我的实际情况。我所设计的这种黑白棋游戏有几个特点:程序短小精悍简洁明了,游戏界面美观,功能丰富容易操作,趣味性强。 关键词: 程序设计;C语言;黑白棋;两人对弈 The black and white chess (Department of electronic and Information Engineering Ankang university) Directed by Chen Shouman Abstract:This topic is to design a Reversi game system. The game flips through each other's game pieces. And last the people who has more chess pieces than the other, will win. The game rules are simple and easy to use. But It changes very complex. I choose this topic to do the design, one is the consolidation and improvement of previously learned C language knowledge, on the other hand, is because it is my first time to complete a software system design. Selection of a medium difficulty and relatively mature software design is easy to implement and have certain ascendant space. It’s fit in with my actual situation. I designed this game has several characteristics: Dappering procedures concise. The game interface aesthetics. The function is rich and easy to operate.Much interesting. Key word:Program design. C language. The black and white chess. Chess 1 引言 我国是棋文化的发祥地之一,上古的尧时代围棋就在我国诞生了,在随后的几千年长河里,我国人民不断以自己的聪明才智创造出深受人们喜爱的棋类游戏,像中国象棋、五子棋、军棋等等一直是在民间很流行的棋类项目。同时国外的棋类游戏也流传到中国,比如国际象棋、跳棋等,逐渐在国内盛行。可以说棋

黑白棋游戏设计

辽宁工业大学 C语言程序设计课程设计(论文) 题目:黑白棋游戏设计 院(系):软件学院 专业班级: 学号: 学生姓名: 指导教师:胡峰 教师职称:讲师 起止时间: 2008.12.29至2009.1.9

课程设计(报告)任务及评语

目录 第1章课程设计的目的与要求 (1) 1.1 课程设计目的 (1) 1.2 课程设计的实验环境 (1) 1.3 课程设计的预备知识 (1) 1.4 课程设计要求 (1) 第2章课程设计内容 (2) 2.1程序功能介绍 (2) 2.2程序整体设计说明 (2) 2.2.1设计思路 (2) 2.2.2数据结构设计及用法说明 (2) 2.2.3程序结构(流程图) (3) 2.2.4各模块的功能及程序说明 (3) 2.2.5程序结果 (6) 2.3程序源代码及注释 (6) 第3章课程设计总结 (18) 参考资料 (21)

第1章课程设计的目的与要求 1.1 课程设计目的 本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C语言解决实际问题的能力 1.2 课程设计的实验环境 硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。 1.3 课程设计的预备知识 熟悉C语言及C语言开发工具。 1.4 课程设计要求 1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告

五子棋可行性研究报告

多功能五子棋 的设计与实现 详细设计说明书 开发团队:Flying We are flying, but not flies!

目录 1引言 (1) 1.1编写目的 (1) 1.2背景 (1) 1.3定义 (1) 1.4参考资料 (1) 2可行性研究的前提 (2) 2.1要求 (2) 2.2目标 (2) 2.3条件、假定和限制 (2) 2.4进行可行性研究的方法 (2) 2.5评价尺度 (2) 3对现有系统的分析 (3) 4所建议的系统 (3) 4.1对所建议系统的说明 (3) 4.2处理流程和数据流程 (4) 4.3改进之处 (5) 4.4技术条件方面的可行性 (6) 5投资及效益分析 (6) 5.1支出 (6) 5.2收益 (6) 5.3收益/投资比 (6) 6社会因素方面的可行性 (6) 6.1法律方面的可行性 (6) 6.2使用方面的可行性 (7) 7结论 (7)

GB8567——88 可行性研究报告 1引言 1.1编写目的 本报告的编写目的是说明实现“多功能五子棋”项目在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能选择的各种方案;说明并论证所选定的方案。 本报告的预期读者是“多功能五子棋”项目客户(老师),以及项目开发团队(Flying 团队)。 1.2背景 本项目所开发的软件系统全称为“多功能五子棋游戏”。 本项目为《高级软件工程》课程大作业选题,由项目客户(姜明老师)提出并由Flying 团队组织开发,本项目开发主要目的为学习并熟悉软件工程项目开发流程,本项目的预期用户是中国科学技术大学软件学院软件工程专业06级(硕)嵌入式系统设计专业方向所有五子棋游戏爱好者。 本项目所开发游戏软件拟在Windows98及以上版本操作系统下运行,拟基于C/S架构提供网络对弈(二人对弈)模式在小型局域网运行。 1.3定义 多功能五子棋游戏:本项目拟开发的游戏软件。 Flying团队:“多功能五子棋游戏”项目开发团队,由中国科学技术大学软件学院软件工程专业06级(硕)嵌入式系统设计专业方向肖永春(项目组组长)、吴操威、蒋慧军、方彧、董涵等5位同学组成。 1.4参考资料 [1]唐彬, 刘超编著.Visual C++案例开发集锦.北京:电子工业出版社.2005 [2]莫建文.机器自学习博弈策略研究与实现.广西师范大学硕士学位论文.2002年3月

c++五子棋课程设计报告

福建农林大学计算机与信息学院 课程设计报告 课程名称:面向对象程序设计课程设计 课程设计题目:五子棋 姓名: 系:计算机 专业:软件工程 年级: 学号: 指导教师: 职称: 年月日

福建农林大学计算机与信息学院计算机类课程设计报告结果评定

目录 1.设计目的 (4) 2.设计要求 (4) 3.设计方案 (4) 4.设计内容 (7) 4.1系统的主要结构和类结构 (7) 4.2 (2)五子棋类的结构 (7) 4.3⑶系统工作流程介绍.................................................... 7错误!未定义书签。⑷类的介绍. (8) 4.5 (5) 各个模块的介绍 (8) 4.6 (6)程序运行图示 (14) 5.总结 (16) 参考文献 (17)

(a)1.设计目的 (1)加深我对面向对象程序基本的理解和掌握。 (2)熟练掌握基本流程图的绘制。 (3)熟练visio的一些操作方法。 (4)能够在调试程序中快速发现并排除程序中的错误。 (5)提高面向对象程序语言解决实际中的问题的能力。 (b)2.设计要求 五子棋是玩家在游戏棋盘上逐个输入黑子或白子的坐标,因此游戏要求在DOS界面生成一个可供操作的棋盘。通过输入坐标完成对应落子情况,在输入过程中判断落子是否正确、是否有一方胜利等情况。编写代码可以在VC6.0下编译通过。游戏要能实现五子棋游戏的简单操作。程序中要体现面向对象思想。 (c)3.设计方案 (必须包含系统功能说明、用例图和类图) 一、用例图 落子 基于用户的用例图

步数用例图 系统用例图 1)输出棋盘界面菜单及图像2)开始进入控制3)黑白棋正确输入格式控制4)判断黑白输赢控制5)正确计数对羿步数及下一步所要走的棋盘界面

新整理大班数学活动黑白棋大赛教案反思

大班数学活动黑白棋大赛教案反思 活动目标: 1、通过“黑白棋大赛”帮助幼儿学习6的加法。 2、初步培养孩子们的合作精神。 3、培养幼儿比较和判断的能力。 4、引导幼儿积极与材料互动,体验数学活动的乐趣。 5、发展幼儿逻辑思维能力。 活动准备: 1、大棋谱两副,黑白棋子若干。 2、红、黄、绿、紫队标志一份,每队准备一副棋谱,若干黑白子。 3、数字卡片“6”以内加减算式若干。 活动过程: 一、分队推选小队长 “分成四队,每队4个孩子,自己选出小队长” 二、黑白棋对抗赛 1、规则:每队选2名小队员先后参加比赛,第一名队员用黑子,第二名队员用白子,要求黑子和白子合起来我给你的数。 2、幼儿比赛,教师总结比赛情况。 三、合作摆“6”

1、规则:请一组的小朋友合作摆“6”,一行一种摆法列一道算式,要求算式不能重复,比比看规定时间哪一队找到的6的加法算式最多,最正确。(幼儿摆“6”) 2、相互检查 现在请你们相互检查,先看看他们列了几道算式,是否正确,如果有错错再哪?每队选一位小朋友告诉大家结果。(总结比赛情况) 3、“6子通”抢答赛 我这里有一张大棋谱,里面藏着许多6子通的6的加法算式,能能找到吗? 4、总结得分评出第一名。 四、个人竞赛:猜猜看 1、规则:我给你5个数字“ 2、5、1、 3、4”请你用三十秒的时间记住,然后我把数字翻过去,请你指出和2加起来是6的.数。 2、幼儿比赛,答对发奖。 五、延伸 刚才,我们想了许多办法使黑子和白子合起来是6,那么要他们合起来是7,该怎么摆棋子呢?我们到教室里去摆摆看好不好啊? 活动反思: 数学能为幼儿动手、动口、动脑,多种感官参与学习活动创

黑白棋课程设计

攀枝花学院课程设计 题目:黑白棋游戏 院(系):数学与计算机学院 年级专业: 2014级软件工程 姓名:田坤林 学号: 201410804095 指导教师:陈斌 二〇一五年一月十日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书

课程设计(论文)指导教师成绩评定表

摘要 黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋或翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁 的棋子多来判断胜负。 棋子:黑白棋棋子每颗由黑白两色组成,一面白,一面黑,共64个(包括棋盘中央的4个)。棋子呈圆饼形。 棋盘:黑白棋棋盘由64格的正方格组成,游戏进行时棋子要下在格内。棋盘可分为“角”、“边”以及黑白棋“中腹”。现今的棋盘多以8x8较为普遍。 棋钟:正式的比赛中可以使用棋钟对选手的时间进行限制。非正式的对局 中一般不使用棋钟。 黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不 是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。 下子的方法把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自 己的棋子。 并且,只有在可以翻转棋子的地方才可以下子。 如果玩家在棋盘上没有地方可以下子,则该玩家对手可以连下。双方都没 有棋子可以下时棋局结束,以棋子数目来计算胜负,棋子多的一方获胜。在棋 盘还没有下满时,如果一方的棋子已经被对方吃光,则棋局也结束。将对手棋 子吃光的一方获胜。 每个“翻转棋”游戏开始时,棋盘上已经交叉放好了四颗棋子。其中两颗 是黑棋,另两颗是白棋。黑棋总是先走。 当您的棋子在某一直线方向包围了对手的棋子时,就可以翻转这些棋子的 颜色,使它们成为您方的颜色。例如,如果您执黑棋,并且看到在一排白棋的

五子棋课程设计报告

单 位 分院(系) 专 业 学 号 学生姓名 指导教师 完成日期 2011 年 05 月 日 摘 要 五子棋的历史:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代 的传统黑白棋种之一.发展于日本,流行于欧美.容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性. 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏.有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的.在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵.”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”.这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子.因而规则简单的五子棋也可能出自当时,并是用石子作棋子.亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来. 程序说明:本程序是一款棋类益智游戏程序,是用WIN-TC 编写在WINDOWS 系统下运行的娱乐游戏.本程序可以实现人人对战,操作采用键盘上的上下左右键控制棋子的上下左右移动,由空格键控制下棋,双方都可通过ESC 键终止游戏. 石家庄铁道大学课程设计 五子棋 课程设计题目

游戏开始后,红、白双方轮流下棋,程序会根据双方下棋的先后顺序自动显示不同颜色的棋子,提示当前下棋的棋手,任何一方由五子连成一线时,游戏结束,结束时会显示对战双方胜负情况. 关键词:五子棋游戏应用程序,C语言,图形函数 目录 第1章选题的意义2 意义2 设计思路 2 系统的基本要求3 第1章选题的意义 意义 通过游戏过程增加编程的兴趣,提高编程水平.编制该程序我对以下的知识点进行的巩固和掌握:1.数组元素为结构体的数组应用.2.全局变量应用.3.按键的处理.4.数组元素与蛇、食物的对应关系.5.图形方式等等.加深对所学知识的理解与掌握,增强自己对所学知识解决实际问题的能力,为以后的程序开发打下基础. 设计思路 棋盘设计为18×18格,初始状态光标在棋盘的中央,玩家1先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋).当游戏一方胜利后显示胜利信息.从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表白棋,2代表黑棋.这样程序的主要工作是接收棋手按键操作,棋手用Up、Down、Left、Right控制光标移动,空格键表示落子.一旦接收到空格键,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠

五子棋教案

五子棋教育活动(一) 教学目标: 激起学生学习五子棋的兴趣,教育学生沉着冷静,有良好的棋风。 教学准备:五子棋 教学过程: 一、认识五子棋 1.出示棋盘和棋子,教师演示,让学生认识什么是五子棋。 了解:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 2.明确我们社团的活动内容:五子棋。 二、学下五子棋 1、请会下五子棋的学生说说下棋的规则及下棋的经验。 2.教师总结下棋规则: ①摆成连线的五个子后,则算赢; ②如果手中的子全摆完,则移动棋盘上的子,每次棋只走一步; ③棋盘上的子不列五个就算输。 三、找棋友,分成组 可让学生自行找棋友,拼成三人一组或两人一组,三人一组的,其中一人可当裁判。 四、学生下五子棋 1.小组内可举行比赛,采用三局两胜制,决出优胜者。 2.请小棋手介绍取胜经验 3.结合活动情况评出本次小棋手

五子棋教育活动(二) 教学目标: 在老师帮助下认识五子棋的棋具,学会正确执子下子。 教学准备:五子棋棋具、图片 教学过程: 一、结合实物、图片认识五子棋的棋具 1.棋具包括棋盘和棋子。 2. 了解棋具历史:相传中华民族的祖先轩辕黄帝无意之中画下了十七条横线十条竖线,这无意中的发明造就出了五子棋。早在公元595年古人就用瓷来烧制五子棋盘了。 千百年来,人们用各种材质来制造围棋的棋子,如:玻璃、瓷器、玉、玛瑙、铜等等。 古代五子棋棋盘与围棋棋盘是通用的。五子棋棋子亦称“棋石”分黑、白两色,形状为扁圆形,有一面凸起或两面凸起等形状,厚度不超过0.8厘米,直径为2.0~2.3厘米;一副棋子总数为225枚,其中黑子113枚,白子112枚。按质地的不同,可分为玻璃、陶瓷、塑料、智石、磁铁、蛤贝、烧料、水晶、玛瑙、玉石等棋子。 国内质量比较好的是云子,而日本常用的棋子是贝壳制作的。 3. 认识棋盘和棋子 棋盘:认识棋盘横竖线,交叉点。横向从左到右用a到o共十五个英语字母标出,竖向从下到上用1到15共十五个阿拉伯数字标出。棋盘上的横线和竖线共交叉形成了225个交叉点,棋子就落在棋盘的这些交叉点上。 棋盘上有5个比较特殊的交叉点,用小黑点标识出来,叫做星;中间的星叫天元,表示棋盘的正中心; 四周的4个星叫小星,表示棋盘的四个角落;星在棋盘上起一定的标示位置作用。 棋子:由黑白两种颜色组成。一人拿黑棋,另一个人拿白棋,黑棋先走,白棋后走。共有225个棋子,与交叉点的个数相同;其中黑棋113个,白棋112个,不过平时下棋棋子少些也是可以的。正确的拿棋子的方法是食指的指甲与中指的指肚儿夹住棋子。棋子落在棋盘的交叉点上,落下后不能移动,也不能吃子。 4.学生练习执子、下子,相互纠正。 二、学生分组下五子棋。

黑白棋的规则是什

黑白棋的规则是什么 黑白棋游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。 黑白棋的规则介绍 黑白棋的游戏人数:2人。 一人准备,第二人开始15秒倒计时,若玩家不点准备,倒计时完自动准备,2人都准备后开始游戏。 黑白棋的游戏道具: 棋子:黑白棋棋子每颗由黑白两色组成,一面白,一面黑,共64个(包括棋盘中央的4个)。棋子呈圆饼形。两个玩家各下一面棋子。 棋盘:黑白棋棋盘由64(8*8)格的正方格组成,游戏进行时棋子要下在格内。 黑白棋的玩法: 棋盘为8 8的方格布局,开局时在棋盘正中有摆好的四枚棋子,黑白各2枚,交叉放置,由执黑棋的一方先落子,双方交替下子,棋子落在方格内,一局游戏结束后双方更换执子颜色。 步合法的棋步包括:在一个空格新落下一个棋子,并且翻转对手一个或多个棋子。 下子方式:把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的对方棋子全部翻转会成为自己的棋子。夹住的位置上必须全部是对手的棋子,不能有空格。并且,只有在可以翻转棋子的地方才可以下子。

一步棋可以在数个方向上翻棋,任何被夹住的棋子都必须被翻转过来,棋手无权选择不去翻某个棋子必须是刚下的子夹对方才能够翻对方的子,因翻转对方的棋子而夹住的子是不能被翻的。 翻转棋子时,有一个棋子的翻转动画大概显示1秒左右每次下子最少必须翻转对方一个棋子,若棋局中下子都不能翻转对方棋子,则自动pass轮空,客户端界面气泡提示:您无子可下由对方继续下子,而对方气泡提示:由于对方无子可下,您可继续下子。若二个玩家都不能下子翻转对方棋子,游戏结束。 黑白棋的游戏流程: 每局由执黑色棋玩家先下子,交互下子。直到游戏结束!具体下子方式见上面下子方式。 黑白棋的游戏结束条件: 1.双方都无子可下游戏结束; 2.一方的子被翻完游戏结束; 3.棋格被全部下满; 4.有玩家提出认输(游戏开局后1分钟之内不能认输); 5.协商退出(不结算); 6.强退。 黑白棋的胜负判断: 游戏结束后(1-3方式结束),按棋盘上谁的棋子多,谁胜利,若棋数一样,则为和局; 玩家认输。认输玩家为失败,另一玩家为胜利。 黑白棋的积分计算: 胜者得2 分

相关文档
最新文档