`
izuoyan
  • 浏览: 8908867 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

“黑白棋”技术文档

阅读更多

“黑白棋”技术文档

功能:

实现一般黑白棋的功能,实现两人对战。

黑白棋盘结构:

采用数组结构,数组由0 1 2三种状态组成,其中“0”表示没有棋子, 1”表示黑子, 而“0”表示白子。

运行过程:BWC

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:399pt; height:309.75pt'> <v:imagedata src="file:///C:\DOCUME~1\Robin\LOCALS~1\Temp\msohtml1\01\clip_image001.png" o:title="" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

<!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" alt="" style='width:24pt;height:24pt' /><![endif]--><!--[if !vml]--><!--[endif]-->

运行文件: blackWhite.cpp

运行环境: Turbo C++ 3.0

宏定义:

字段

描述

TRUE

1

表示真的情况

FALSE

0

表示假的情况

UP

0x4800

键盘箭头

DOWN

0x5000

键盘箭头

LEFT

0x4b00

键盘箭头

RIGHT

0x4d00

键盘箭头

ESC

0x011b

键盘箭头 ESC

ENTER

0x1c0d

键盘箭头 Enter

数据类型

全局变量的说明:

函数名

类型

描述

gridState

Int[][]

存储8×8的棋盘的状况

scoreBlack

Int[]

存储黑棋的分数

scoreWhite

Int[]

存储白棋的分数

keyboard

Int

键盘的相应存储

原型:

int gridState[8][8] = {0}, scoreBlack[2] = {0}, scoreWhite[2] = {0}, keyboard;

接口函数列表:

void PrintChessBoard(void);

void FillColorAgain(int coordinateX, int coordinateY);

void PlayTheResult(void);

void Minitance(void);

void SetTheFirstColor(int operation);

void FillColorAgain(int coordinateX, int coordinateY);

void PriChange(int coordinateX, int coordinateY);

void TranScore(void);

void PrintScore(int playnum);

void PlayTheResult(void);

接口函数说明:

1PrintChessBoard

1.1 功能说明:打印棋盘和LOG以及操作说明

1.2 前置条件:调用initgraph图形函数初始化(以下涉及图形操作的均需要,以下将省略,但是也是前置条件)

1.3 函数原型:

void PrintChessBoard(void);

1.4 参数说明:

void

1.5 返回值说明:

void

<!--[if !supportLists]-->1.6 <!--[endif]-->使用举例(算法描述):

void PrintChessBoard(void)

{ int clienti;

setbkcolor();

setcolor();

//打印框架

setcolor(YELLOW);

//打印线

line();

//Tip:

outtextxy();

//以实填充

setfillstyle();

//画出标志圆

fillellipse();

}

2Minitance

2.1功能说明:进入对战无穷循环

2.2前置条件:调用PrintChessBoard画战区

2.3函数原型:

void Minitance(void)

2.4参数说明:

void

2.5返回值说明:

void

2.6使用举例:

void Minitance(void)

{

int operation = 0, coordinateX, coordinateY, sum, clienti, clientj, temp, tempi, tempj, state1, state2, state3, state4, state5, state6, state7, state8;/* coordinateX, coordinateY 为坐标,sum是当前的棋子数目,其他为临时变量 */

//在中央打印一个初始的战斗状况

while(TRUE)

{temp{设置为当前鼠标所在的颜色值}/* get the first coordinate */

while(TRUE)

{

PrintScore(1)PrintScore(2);/* 打印分数 */

SetTheFirstColor(operation);/* 设置初始的的颜色 */

fillellipse(coordinateX, coordinateY, 10, 10);/* 在初始位置放置 */

keyboard = bioskey(0);/* 响应键盘 */

if (keyboard == ESC)

break;
else if (keyboard == ENTER)/* enter the ENTER to confirm */

{ state1 = state2 = state3 = state4 = state5 = state6 = state7 = state8 = 0;

/* if operation is white */

if((coordinateY != 85) && (gridState[(coordinateX - 115) / 30][(coordinateY - 115) / 30] != 1) && (gridState[(coordinateX-115) / 30][(coordinateY - 115) / 30] != 2))/* (115, 115)为初始位置 */

{/*judge the vailable of the rule */

//判断是不是复核放入棋子,在许多情况没有吃掉对手棋子的时候,是不允许放入棋子的

/* 假如state 状态成立那么就允许执行下一步,3 表示符合情况的状态 */

if (state1 == 3 || state2 == 3 || state3 == 3 || state4 == 3 || state5 == 3 || state6 == 3 || state7 == 3 || state8 == 3)

{

if ( operation % 2 == 0)

gridState[(coordinateX-115) / 30][(coordinateY-115) / 30] = 1;/* 为黑棋 */

else

gridState[(coordinateX-115) / 30][(coordinateY-115) / 30] = 2;/* 为白棋 */

/* the change of the screen moving the circle */

PriChange(coordinateX, coordinateY);/* 打印变化 */

TranScore();/* the tran of the score */

break;/* get to next step */

}

else

continue;/* continue when failed */

}

/* judge the keyboard */

//对键盘中的上下左右进行移动操作

if (keyboard == ESC)

break;

//处理sum量,处理sum的量

PlayTheResult();/* get the result to the screen */

operation++;

if (operation == 11)/* when operation achieve the 11 then to 1 */

operation = 1;

}/* END: while(TRUE) */

}

3 Display_Student

3.1功能说明:显示所有的学生信息

3.2前置条件:链表中存在学生的信息

3.3函数原型:

void DisplayStudent(LinkList lstudent)

3.4参数说明:

lstudent一个student结构体的链表。

3.5返回值说明:无

3.6使用举例:

voidDisplayStudent(LinkListlstudent)
{
while(lstudent->next)
{
printf("
学号\t姓名\t性别\t年龄\t学历\t数学\t语文\t计算机\n");
printf("%4d\t",lstudent->next->number);
printf("%7s",lstudent->next->name);
if(lstudent->next->sex==’m’)
{
printf("
\t");
}
else
{
printf("
\t");
}
printf("%4d\t",lstudent->next->age);
if(lstudent->next->sage==0)
{
printf("bachelor");
}
elseif(lstudent->next->sage==1)
{
printf("master");
}
else
{
printf("doctor");
}
printf("%4.1f\t",lstudent->next->achieve.math);
printf("%4.1f\t",lstudent->next->achieve.chinese);
printf("%4.1f\t",lstudent->next->achieve.computer);
printf("\n");

lstudent=lstudent->next;
}
}

4 InsertStudent

4.1功能说明:插入一个学生信息

4.2前置条件:无

4.3函数原型:

bool InsertStudent(LinkList &lstudent)

4.4参数说明:

lstudent一个student结构体的结点,为引用类型。

4.5返回值说明:如果函数成功调用返回TRUE。如果不成功返回FALSE,并且显示错误原因

4.6使用举例:

boolInsertStudent(LinkList&lstudent)
{
LinkListp;

CreateStudent(p);

p->next=lstudent->next;
lstudent->next=p;
returnTRUE;
}

5 DeleteStudent

5.1功能说明:删除一个学生信息,不能删除第一个记录

5.2前置条件:无

5.3函数原型:

bool DeleteStudent(LinkList &lstudent)

5.4参数说明:

lstudent一个student结构体的结点,为引用类型。

5.5返回值说明:如果函数成功调用返回TRUE。如果不成功返回FALSE,并且显示错误原因

5.6使用举例:

boolDeleteStudent(LinkList&lstudent)
{
LinkListp,q;//
定义临时表指针
intnum;//
要删除的学生的学号

printf("
请输入要删除的学生的学号:");
scanf("%d",&num);

p=lstudent;
while(p->number!=num)
{
p=p->next;
}

q=p->next;
p->next=q->next;
free(q);
returnTRUE;
}

文档说明备注:

[//] : 表示一段算法,或简单的功能说明。

[/**/ ] : 注释说明部分。

分享到:
评论

相关推荐

    C语言课程设计 黑白棋

    本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. ...

    JAVA课程设计五子棋(包含源代码和技术文档)

    本系统可以实现电脑可以自动下棋,扫描整个棋盘记录连在一起的黑白棋子数,实现人与电脑有次序的下棋,判断人与电脑的胜负,为电脑下棋提供帮助。

    c语言黑白棋ai游戏源码.rar

    资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 SpringBoot 毕业设计,SpringBoot 课程设计,基于SpringBoot+Vue开发的,含有代码注释,新手也可看懂。ssm整合开发,...

    Java五子棋设计报告.doc

    2015年6月 目录 1引言1 1.1系统开发背景2 1.1系统开发的目的和意义3 1.2完成的主要工作4 2需求分析和总体设计4 2.1需求分析与设计思路5 2.1.1关键技术说明5 2.1.2需求分析5 2.1.3系统设计方案与思路5 2.1.4系统目录...

    C语言课程设计案例

    案例一 贪吃蛇游戏 案例二 计算器 案例三 黑白棋游戏 案例四 迷宫问题 案例五 扫地雷游戏 案例六 速算24 案例七 数据结构CAI系统 案例八 进程调度 案例九 存储管理分区分配算法 案例十 ...

    Visual C++游戏开发经典案例详解Part1,2

    第11~16章详细讲解了贪吃蛇、俄罗斯方块、连连看、黑白棋、扫雷、推箱子等多款游戏的设计、项目文档编写及实例开发。这些游戏不仅涵盖多种游戏经典算》配套光盘中提供了作者专门为《Visual C++游戏开发经典案例详解...

    Visual C++游戏开发经典案例详解 Part3,4,5

    第11~16章详细讲解了贪吃蛇、俄罗斯方块、连连看、黑白棋、扫雷、推箱子等多款游戏的设计、项目文档编写及实例开发。这些游戏不仅涵盖多种游戏经典算》配套光盘中提供了作者专门为《Visual C++游戏开发经典案例详解...

    [pdf带章节书签]Visual_C++__游戏开发经典案例详解.part2

    第11~16章详细讲解了贪吃蛇、俄罗斯方块、连连看、黑白棋、扫雷、推箱子等多款游戏的设计、项目文档编写及实例开发。这些游戏不仅涵盖多种游戏经典算法,而且都是精心设计,富有代表性。每个实例项目的制作步骤都以...

    [PDF带章节书签]《Visual C++游戏开发经典案例详解》part1

    第11~16章详细讲解了贪吃蛇、俄罗斯方块、连连看、黑白棋、扫雷、推箱子等多款游戏的设计、项目文档编写及实例开发。这些游戏不仅涵盖多种游戏经典算法,而且都是精心设计,富有代表性。每个实例项目的制作步骤都以...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包3

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包4

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目源代码

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    人工智能与智能制造V2.pdf

    黑夜下只能看黑白影像? 仿制卡、借用卡、代打卡 一卡通 应用问 题 安全性与便捷性待提升 高科技体验感不强 重点区域无有效监管 访客流程自助化程度低 智慧企业园区 · 一脸通行 畅通无碍 一卡通用了这么久,面对...

    VB编程资源大全(源码 其它3)

    g011.zip 生命游戏源程序(12KB) 588,g010.zip 一个精灵游戏源程序(33KB) 589,g009.zip 翻转棋游戏(64子, 每子正反面分别为黑白两色, 两人对弈)的源程序(29) 590,g008.zip 纸牌游戏源程序(45KB)...

Global site tag (gtag.js) - Google Analytics