五子棋对弈系统设计

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

南京理工大学

毕业设计说明书(论文)

作者: 李国防准考证号:014910253063

教学点: 南京信息职业技术学院

专业: 电子工程专业

题目: 五子棋对弈系统设计

徐小平副教授

指导者:

(姓名) (专业技术职务)

评阅者:

(姓名) (专业技术职务)

2012年 05 月

毕业设计说明书(论文)中文摘要

毕业设计说明书(论文)外文摘要

本科毕业设计说明书(论文)第I共I页

目次

1引言 (1)

2五子棋概述 (2)

2.1五子棋背景及规则 (2)

2.2开发工具下图形界面函数的介绍 (2)

3设计思想 (4)

3.1总体模版的设计 (4)

3.2五子棋程序框架总图 (4)

4模块介绍 (5)

4.1初始化模块 (5)

4.2接收处理信息模块 (8)

4.3走棋控制模块 (9)

5数据测试 (15)

6 对人工智能对弈模式的设想 (17)

6.1棋型的定义 (17)

6.2棋型价值的定义及计算 (19)

结论 (21)

致谢 (22)

参考文献 (23)

附录(源程序) (24)

1 引言

随着人工智能的发展,越来越多的软件游戏应运而生,伴随着其庞大功能的同时,给出了各种越来越多的规则限制,更多的局限于游戏的竞技能力,逐步忽略了其原始为大众所追捧的趣味性,简单性。因此,富有各种规则的棋类游戏渐渐淡出,而让我们迷恋追捧的却是那些简简单单,无太多章法,却趣味十足的软件游戏,如:“愤怒地小鸟”、“汤姆猫”等。而本文则摆脱了棋类游戏的各种附带限制,将传统的五子棋游戏,通过DOXBOX系统给大家展示,将规则交给玩家,可塑性强。与此同时,本文尽管基于TC工具来实现,但却别开生面,遗弃了复杂模糊的字符界面,完全体现了图形库函数的应用,呈现了简洁、大方的图形界面。

在论文的进展过程中,首先遇到的最大的难题就是对于图形库函数的认知不够全面,一些细致的东西,没抓到点的要求,从而导致程序一次次的编译失败。在经过多次研究,比对和尝试后,最终才得以成功。其次,因在win7下无法实现win-tc的全屏显示,多次失败后选择更换XP系统来完成,最后论文的书写过程中,因为全屏后无法剪切图片,而导致无法顺利完成论文,后经查询,确定用DOXBOX来实现,才得以成功完成。

本设计将程序分为3个主要模块,针对每一模块为实现其预期功能,而分开去构思研究,确定其在整个程序中的位置,最后完善。另外,在实现本文设计内容之余,还展示了个人对人工智能实现人机对战的构想。

2 五子棋的概述

五子棋是一种两人对弈的纯决策谋略型棋类游戏,是起源于中国古代的传统黑白棋种类之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富有哲理,有助于修身养性。

2.1五子棋的背景及规则

五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。

五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

五子棋的规则如下:棋盘:采用同围棋盘一样的15 路或19 路线的棋盘,为了实现传统的五子棋棋盘,本系统将采用19路线的棋盘。下法:两人分别执黑白两色棋子,轮流在棋盘上选择一个无子的交叉点落子。无子的交叉点又被称为空点。输赢判断:黑、白双方有一方的5个棋子在横、竖或斜方向上连接成一线即为该方赢。

2.2开发工具下图形界面函数的介绍

应用Turbo C工具中的库函数graphics.h图形界面的画法,可以实现各种基本图形的绘制,比如说:圆、椭圆、方框、线、点、文本框等,本文主要介绍设计中会用到的一些图形界面函数的应用方法。

2.2.1画线函数

这类函数提供了从一个点到另一个点用设定的颜色画一条直线的功能,起始点的设定方法不同,因而有下面不同的画线函数。

1)两点之间画线函数。

void far line(int x0,int y0,int x1,int y1);

从(x0,y0)点到(x1,y1)点画一直线。

2)从现行画笔位置到某点画线函数。

void far lineto(int x,int y);

将从现行画笔位置到(x,y)点画一直线。

3)从现行画笔位置到一增量位置画线函数

void far linerel(int dx,int dy);

2.2.2画(椭)圆函数

在画图的函数中,有关于角的概念。在Turbo C 中是这样规定的:屏的x 轴方向为0 度,当半径从此处逆时针方向旋转时,则依次是90 度、180 度、270 度,当360 度时,则和x轴正向重合,即旋转了一周。

1)画椭圆函数

void ellipse(int x,int y,int stangle,int endangel,int xradius,int yradius);

该函数将以(x,y)为中心,以xradius 和yradius 为x 轴和y 轴半径,从起始角stangle开始到endangle 角结束,画一椭圆线。当stangle=0,endangle=360 时,则画出的是一个完整的椭圆,否则画出的将是椭圆弧。当然,满足一定条件的椭圆也就是圆,应用椭圆的画法可以实现棋子的画法。

2)画圆函数

void far circle(int x,int y,int radius);

该函数将以(x,y)为圆心,radius 为半径画个圆。

2.2.3颜色设置函数

象素的显示颜色,或者说画线、填充面的颜色既可采用缺省值,也可用一些函数来设置。与文本方式一样,图形方式下,象素也有前景色和背景色。按照CGA、EGA、VGA 图形适配器的硬件结构,颜色可以通过对其内部相应的寄存器进行编程来改变。

1)前景色设置函数

void far setcolor(int color);

该函数将使得前景以所选color 颜色进行显示,对CGA,当为中分辨模式

相关文档
最新文档