围棋C语言程序的设计

时间:2022-07-15 11:15:23 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


围棋C语言程序的设计

功能模块设计 2.1.1系统模块

本程序分为四个子模块,分别是程序初始化模块、程序功能控制模块、弈棋操作模块和其他模块。

1 程序初始化模块。这个模块主要用于屏幕信息初始化,包括显示欢迎信息、

操作信息和棋盘初始化。

2 程序功能控制模块。这个模块是各个功能函数的集合,主要是被其他模块

调用,包括画棋子、胜负判断和行棋转换等功能。 3 弈棋操作模块。这个模块主要用于执行下棋操作。

4 其他模块。这个模块主要用于显示帮助信息,提示轮到哪方下棋等。

2.2 数据结构设计

2.2.1 定义数组

定义了一个数组status[N][N],这数组存储整数类型的值,至多可以存储status[19][19]数组status存储给定坐标的状态。状态有三个,分别是0120表示给定坐标映射的位置上没有棋子,1表示给定坐标映射的位置上是Player1的棋子,2表示给定坐标映射的位置上是Player2的棋子。

2.2.2 全局变量 1step_xstep_y

定义两个变量,这两个变量是整型类型的变量,表示行走时棋子处的坐标,step_xstep_y分别表示xy坐标。 2Key

定义一个变量,这变量是整型类型的,表示按下的键盘的键值,本程序中可以获取的值有0x4b00(LEFT)0x4d00(RIGHT)0x4800(UP)0x011b(ESC)0x3920(SPACE) 3flag

定义一个变量,这变量是整型类型的,用以表示是哪个玩家。Flag1的时候是表示Player1,2的时候是表示Player2 2.2.3坐标位置偏移

坐标位置偏移主要是用在函数DrawBoard()和函数DrawCircle()中。在此定义了OFFSET_x(大小为4OFFEST_y(大小为3)OFFSET(大小为20)三个偏移量,分别表示xy坐标偏移和放大倍数。








2.3 函数功能描述

1DrawBoard()

函数的原型是void DrawBoard()

DrawBoard()函数用来画棋盘的。棋盘是由19条横线和19条纵线交叉组成的。这个函数主要是通过调用系统函数line()来实现的,同时也输出一些提示性的文字,例如按键操作。

2DrawCircle()

函数的原型是void DrawCircle(int x,int y,int color)

DrawCircle()函数用于在指定的坐标位置、用指定的颜色种类下画圆圈。本程序中,可以用小圆圈表示棋子的,不同颜色表示不用的下棋方下的棋子。在这里xy指明所画圆圈的圆心位置,半径大小则在函数中设定;color用于表示所画圆圈的颜色的,分别为白色和红色(现实中是为黑白双方,但本程序为了方便颜色差异,改为了白红两种)白色小圆圈表示的是Player1下的棋子,红色小圆圈表示的是Player2下的棋子。该函数主要是调用系统里面的函数circle()来实现的。 3Alternation()

函数的原型是void Alternation()

Alternation()用于在两个下棋者之间交换两个人下棋的顺序,如果当前是Player1刚下棋,则转换后变成下一步由Player2来下;反之亦然。通过用全局变量flag来标识。 4JudgePlayer()

函数的原型是void JudgePlayer(int x,int y)

JudgePlayer()函数主要是根据不同的下棋方来画不同颜色的小圆圈,对下flagDrawCircle()函数来实现的。 5Done()

函数的原型是void Done()

Done()函数是这个程序的最关键的函数,主要是用来实现下棋的各种操作。这个函数首先得到的是下棋方在键盘上面按下的键值,这么几个键值可能是LEFTRIGHTDOWNUPSPACEESC其中的一种,根据键入操作中得到的键值,然后再作相对应的一个操作。对于不同类型的操作,都是要先通过判定下棋的人下的棋子的位置范围是不是对了,也就是说,落下来的棋子是不是在棋盘里面,如果不在棋盘里面的棋子的话,就可以不再在管它;如果落






下的棋子是在棋盘里面的各种操作,就要根据定义的数组status[i][j]i,j)表示当前棋子位置的坐标)中保存的当前的这个棋子的位置的状态来进行,一种情况是状态值是0的话,就可以按照下棋者的要求移动棋子位置,并且在移动棋子后,i,j位置的状态值记录到flag1或者是flag21表示Player1,2代表Player2;一种情况是获取的键值是ESC的话,则表示退出程序。 6)Get_QI()

函数原型:int Get_QI(int x,int y)

Get_QI()函数用于检查在(xy)位置上的棋子的气的函数,通过函数检查出这个棋子四周是否存在气。 7)WelcomeInfo()

函数的原型是void WelcomeInfo()

WelcomeInfo()函数用于输出屏幕上面显示的欢迎信息和一些提示类的信息,如按键操作等。 8)ShowMessage()

函数的原型是void ShowMessage()

ShowMessage()函数用于显示当前下棋方,表示该轮到哪一方下棋了。






本文来源:https://www.wddqw.com/doc/af93f9586337ee06eff9aef8941ea76e59fa4a6b.html