黑白棋课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

攀枝花学院课程设计

题目:黑白棋游戏

院(系):数学与计算机学院

年级专业: 2014级软件工程

*名:***

学号: ************ 指导教师:**

二〇一五年一月十日

攀枝花学院教务处制

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

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

摘要

黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋或翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁

的棋子多来判断胜负。

棋子:黑白棋棋子每颗由黑白两色组成,一面白,一面黑,共64个(包括棋盘中央的4个)。棋子呈圆饼形。

棋盘:黑白棋棋盘由64格的正方格组成,游戏进行时棋子要下在格内。棋盘可分为“角”、“边”以及黑白棋“中腹”。现今的棋盘多以8x8较为普遍。

棋钟:正式的比赛中可以使用棋钟对选手的时间进行限制。非正式的对局

中一般不使用棋钟。

黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不

是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。

下子的方法把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自

己的棋子。

并且,只有在可以翻转棋子的地方才可以下子。

如果玩家在棋盘上没有地方可以下子,则该玩家对手可以连下。双方都没

有棋子可以下时棋局结束,以棋子数目来计算胜负,棋子多的一方获胜。在棋

盘还没有下满时,如果一方的棋子已经被对方吃光,则棋局也结束。将对手棋

子吃光的一方获胜。

每个“翻转棋”游戏开始时,棋盘上已经交叉放好了四颗棋子。其中两颗

是黑棋,另两颗是白棋。黑棋总是先走。

当您的棋子在某一直线方向包围了对手的棋子时,就可以翻转这些棋子的

颜色,使它们成为您方的颜色。例如,如果您执黑棋,并且看到在一排白棋的

某一端是一颗黑棋,那么当您将一颗黑棋放在这一排的另一端时,所有的白棋都将翻转并变为黑棋!所有的直线方向均有效:水平、垂直和斜线方向。

走棋的唯一规则是只能走包围并翻转对手的棋子。每一回合都必须至少翻转一颗对手的棋子。

按规则不能再走棋时,这一回合弃权。计算机会自动将控制权交给对方。关键词黑白棋反棋(Reversi)奥赛罗棋(Othello)苹果棋翻转棋

目录

摘要 .......................................................................................................................................... I

1 需求分析 (1)

1.1 需求概述 (1)

1.2 需求环境 (1)

1.3 功能描述 (1)

2 概要设计 (2)

2.1 程序设计思路 (2)

2.2 程序流程图 (2)

3 详细设计 (3)

3.1 程序源代码 (3)

3.1.1代码功能 (3)

3.1.2 所有源代码 (3)

4 测试与运行 (11)

结束语 (16)

1 需求分析

1.1 需求概述

(1)收集资料,全面分析课题,分解问题,形成中体编程思路;

(2)深入分析各个小问题,编写个部分程序模块;

(3)对于设计中用到的关键函数,要联系实际问题进行具体介绍;

(4)上机调试,确保程序能正确运行;

(5)设计完成后提交课程设计报告;

1.2 需求环境

本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:

①硬件要求:一台计算机。

②软件配置:WINDOWS、C/VC++6.0。

1.3 功能描述

编写一个《黑白棋游戏》的C程序,包括以下功能:

初始状态:在一个8*8的棋盘中央交叉排放黑白棋子各两枚,白棋先走。

(1)每个棋手下棋时,摆子的位置必须是以自己的棋子能包围住对方一个或多个棋子,被包围住的对方棋子将成为自己的棋子。包围的方向可以是上下左右以及斜线8个方向,只要能连成一线即可。

(2)当轮到某一个棋手下子,但是他没有可以包围对方棋子的位置时,他必须停步,让对方走棋,直到他可以走为止。

(3)当棋盘上一方的棋子为0或者下满64格,游戏结束,棋子少者输。

2 概要设计

2.1 程序设计思路

(1)首先设计程序进入界面。

(2)在说明玩家和电脑各自的棋子。

(3)详细说明黑白棋的规则。并指引玩家开始游戏。(4)初始棋盘。

(5)设计黑白棋程序的主体。

2.2 程序流程图

3 详细设计

3.1 程序源代码

3.1.1 代码功能

#include

#include //定义了一批C语言字符分类函数//

#define SIZE 8 //定义SIZE的值为8//

void display(char board[][SIZE]); //显示,输出函数//

int valid_moves(char board[][SIZE],int moves[][SIZE],char player); //该函数将前一数组各项复制到后一数组当中。主要用于黑白棋的人工智能。//

void make_move(char board[][SIZE],int row,int col,char player); //该函数用于玩家的下棋位置行列的输入//

void computer_move(char board[][SIZE],int moves[][SIZE],char player);

int get_score(char board[][SIZE],char player); //计算比赛结果//

int best_move(char board[][SIZE],int moves[][SIZE],char player);

3.1.2 所有源代码

#include

相关文档
最新文档