论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
目录
前言…………………………………………………………………………………………………………1
1.预备知识 ………………………………………………………………………………………………2
1.1.计算机图形学方面的知识 ……………………………………………………………………2
1.1.1.基本的C作图方法及主循环控制模块 ………………………………………………2
1.1.2.图形模式下的文本输出 ………………………………………………………………2
1.2.5子棋基本数据结构 …………………………………………………………………………3
1.2.1.栈 ………………………………………………………………………………………3
1.2.2.树 ………………………………………………………………………………………4
2.单人游戏 ………………………………………………………………………………………………7
2.1开发的基本步骤 …………………………………………………………………………………7
2.1.1.系统流程图 ……………………………………………………………………………7
2.1.2.建立棋盘 ………………………………………………………………………………8
2.2.电脑最优落子点的算法 ………………………………………………………………………8
2.2.1.最大值点法 ……………………………………………………………………………9
2.2.2.最优落点方法………………………………………………………………………… 10
2.2.3.搜索算法及其改进算法 ………………………………………………………………17 本文来自中国科教评价网
2.2.4.3种算法的比较与选择…………………………………………………………………25
2.3.编程实现……………………………………………………………………………………… 25
3.双人游戏 ………………………………………………………………………………………………26
参考文献……………………………………………………………………………………………………28
致谢…………………………………………………………………………………………………………29
附录:部分源代码…………………………………………………………………………………………30
摘要
C语言是1种结构化语言,尽管在当前,可视化语言发展迅速,普及很快,但C语言作为1种基础的语言,它的优势依然存在,甚至有时它是不可替代的,特别是和硬件接口技术相联系的软件。5子棋游戏是1种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,但是现在流行的5子棋游戏软件大多缺乏美观的界面,和容易的操作方法,电脑的AI值也不是很高。本文通过C语言在计算机图形学方面的编程,设计了5子棋游戏软件,使该软件具有美观友好的界面,在人机对弈时,使电脑具有较高的智商。
本游戏是以Turbo C 2.0语言作为开发工具,采用搜索及其改进的α-β剪枝算法设计最优落子点开发的游戏软件。本文详细地介绍了5子棋游戏软件设计的全过程,描述了该软件的功能,以及和其他5子棋程序的1些比较。
关键词:结构化语言;最优落子点算法;搜索算法;α-β剪枝算法。
Abstract
C language is a structured language, although in the current visualization language rapidly, and spread quickly, but the C language as a basis for language, its advantages still exist, and sometimes it is irreplaceable, particularly hardware and software interfaces are linked. Gobang game is a simple and popular game, since the computer to achieve, by the love of computer players, but now most popular game software Gobang lack aesthetic interface, and easy method of operation, the value of the computer AI is not high. The adoption of the C programming language in computer Graphics, designed Gobang game software to enable the software with a beautiful and friendly interface in both game, the computer has a higher IQ. (转载自中国科教评价网www.nseac.com )
The game is based on turbo c 2.0 language, using searching algorithm and α-βcut algorithm to design best Gobang. The detailed presentation of the whole process of Gobang game software design, describes the software functions and procedures and other Gobang some more.
Keywords : structured language;best algorithm;searching algorithm;α-βcut algorithm.
前言
5子棋是人们喜欢的1种棋类游戏,近来,随着计算机的快速发展,以计算机作为游戏对战平台,各种棋类游戏如雨后春笋般纷纷冒出,使得那些喜爱下棋,又常常苦于没有对手的棋迷们能随时
过足棋瘾,而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表。
当我们与电脑对战时,您知道这些软件是怎样象人脑1样进行思考的吗?总的来说(我们假定您熟悉5子棋的基本规则),要让电脑知道该在哪1点下子,就要根据盘面的形势,为每1可能落子的点计算其重要程度,也就是当这子落下后会形成什么棋型,然后通览全盘选出最重要的1点,这便是最基本的算法。当然,仅靠当前盘面进行判断是远远不够的,这样下棋很容易掉进玩家设下的陷阱,因为它没有考虑以后的变化。所以在此基础上我们需要使用好的算法使电脑能预测出今后几步的各种
走法,以便作出最佳选择,这也是我们下棋时常说的“想了几步”。怎样才能达到这个程度呢?这是本文所要讨论的主要问题。
作为1个5子棋游戏爱好者,在使用了众多的5子棋游戏软件后,发现当今大多数5子棋游戏软件中电脑的AI值不是很高,难与人脑抗衡,这是基于以上的最基本算法扩展而出的电脑最优落子算法不够优秀而造成的。本人使用Turbo C 2.0语言作为开发工具,在吸收别人所编的5子棋游戏软件的基础上,再融入自己的创新思想(最优落子算法的改进),编写了这个5子棋游戏,软件实现了人机对弈和双人对弈的功能,游戏软件界面美观,操作容易,电脑的AI值也较高。 (科教作文网http://zw.ΝsΕAc.com发布)
本文分为3个部分,首先介绍了开发5子棋游戏所需要的1些背景知识,包括C语言在计算机图形学方面的知识和数据结构方面的知识,然后详细介绍了单人游戏和双人游戏的开发步骤,在单人游戏设计中讨论了3种提高电脑智商的最优落子点算法,并对其中的搜索算法及其改进的α-β剪枝算法进行了详细的分析,最后绘出了部分关键代码。
1.预备知识
1. 1计算机图形学方面的知识
1.1.1基本的C作图方法及主循环控制模块
Turbo C提供了非常丰富的图形函数,所有的图形函数的原型均建立在graphics.h中,在使用图形函数时要确保有显示器图形驱动程序*.BGI,同时将集成开发环境Options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。
这个程序调用1个EGA、VGA显示器下能独立图形运行的函数。所谓独立图形运行程序,就是在编译和连接时将相应的驱动程序(*.BGI)直接装入到执行程序,从而能在独立的计算机上运行,避免需要重新编译连接才能运行。Turbo C进行画点、画线、封闭图形填充以及图形下文本输出只需要调用graphics.h中相关的函数。
主循环控制模块:控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当1个调度者的角色。这个5子棋程序是用键盘控制下棋,所以要用到Turbo C中的bios.h。在1个循环块中等待键盘信息,判断键盘所输入的信息是否需要响应,调用相关的代码进行下棋。
1.1.2图形模式下的文本输出 (转载自http://zw.nseac.coM科教作文网)
在C语言的图形模式下,只能用标准输出函数,如printf(),puts(),putchar()函数输出文本到屏幕。除此之外,其它输出函数(如窗口输出函数)不能使用,即是可以输出的标准函数,也只以前景色为白色,按80列,25行的文本方式输出。
Turbo C2.0也提供了1些专门用于在图形显示模式下的文本输出函数。下面将分别进行介绍。
1、文本输出函数 void far outtext(char far *textstring);
该函数输出字符串指针textstring所指的文本在现行位置。
void far outtextxy(int x, int y, char far *textstring);该函数输出字符串指针textstring所指的文本在规定的(x, y)位置。其中x和y为象元坐标。
说明: 这两个函数都是输出字符串,但经常会遇到输出数值或其它类型的数据,此时就必须使用格式化输出函数sprintf()。sprintf()函数的调用格式为:
int sprintf(char *str, char *format, variable-list); 它与printf()函数不同之处是将按格式化规定的内容写入str 指向的字符串中,返回值等于写入的字符个数。
例如: C110F1sprintf(s, "your TOEFL score is %d", mark);这里s应是字符串指针或数组,mark为整型变量。