内容摘要: C++语言是一种面向对象的语言,尽管在当前,可视化语言发展迅速,普及很快,但C++语言作为一种基础的语言,它的有时依然存在,甚至有时它是不可替代的,特别是和硬件接口技术相联系的软件。五子棋游戏是一种简单大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,现在流行的五子棋游戏软件大多缺乏美观的界面,和容易的操作方法,电脑的AI值也不是很高。本文通过C++语言在计算机图形方面的编程,设计了五子棋游戏软件,使该软件具有美观友好的截面,在人机对弈时,使电脑具有较高的智商。本游戏是以C++语言作为开发工具,采用搜索算法设计最优落子点开发的游戏软件。本文详细地介绍了五子棋游戏软件设计的全过程,描述了该软件的功能,以及和其它五子棋程序的一些比较。
关键词:C++语言 面向对象语言 最优落子算法
Disigned of Puzzle based on C++ Language
Abstract: The C++ language is an object oriedted 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 soft 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. The game is based on C++ language, using searching algorrithm 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 other gobang some more.
Keywords: C++ language object oriedted language best algorithm
目 录
前言 5
一、五子棋介绍及其开发环境 5
(一)五子棋介绍 6
(二)开发背景 6
(三)开发环境及运行环境 6
1.开发环境 6
2.运行环境 6
二、软件结构 7
(一)棋盘类 7
(二)游戏模式类 7
三、棋盘类--Ctable 8
(一)主要成员变量说明 8
(二)主要成员函数说明 9
1.套接字的回调处理--Accept、Connect、Receive 9
2.清空棋盘--Clear 9
3.绘制棋子--Draw 9
4.左键消息--OnLButtonUp 10
5.绘制棋盘--OnPaint 10
6.对方落子完毕--Over 10
7.设置游戏模式--SetGameMode 10
8.胜负的判断--Win 11
四、游戏模式类--CGame 11
(一)主要成员变量说明 12
1.棋盘指针--m_pTable 12
2.落子步骤--m_StepList 12
(二)主要成员函数说明 12
1.悔棋操作--Back 12
2.初始化操作--Init 12
3.接收来自对方的消息--ReceiveMsg 13
4.发送落子消息--SendStep 13
5.胜利后的处理--Win 13
五、消息机制 13
(一)消息机制的架构 13
(二)各种消息说明 14
六、主要算法 17
(一)判断胜负 17
(二)人机对弈算法 20
1.获胜组合 20
2.落子后处理 21
3.查找棋盘空位 21
4.落子打分 22
5.防守策略 24
6.选取最佳落子 25
七、补充说明 26
八、结束语 26
参考文献 27
基于C++语言的智力游戏的设计
前言
五子棋是人们喜欢的一种棋类游戏,近来,随着计算机的快速发展,以计算机作为对战平台,各种棋类游戏如雨后春笋般纷纷冒出,使得那些喜爱下棋,有常常苦于没有对手的棋迷们能随时过足棋瘾,而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的"深蓝"便是最具说服力的代表。
当我们与电脑对战对时,您知道这些软件是怎样像人脑一样进行思考的吗?总的来说(我们假定您熟悉五子棋的基本规则),要让电脑知道该在哪一点下子,就要根据盘面的形式,为每一可能落子点计算其重要程度,也就是当这子落下后会形成什么模型,然后通览全盘选出最重要的一点,这便是最基本的算法。当然,仅靠当前盘面进行判断是远远不够的,这样下棋很容易掉进玩家设下的陷阱,因为它没有考虑以后的变化。所以在此基础上我们需要使用好的算法是电脑能预测出今后几步的各种走法,以便做出最佳选择,这也是我们下棋时常说的"想了几步"。怎样才能达到这个程度呢?这是本文所要讨论的主要问题。作为一个五子棋游戏爱好者,在使用了众多的五子棋游戏软件后,发现当今大多数五子棋游戏软件中电脑的AI值不是很高,难与人脑抗衡,这是基于以上的最基本算法扩展而出的电脑最优落子算法不够优秀而造成的。本人使用C++语言作为开发工具,在吸收别人所编的五子棋游戏软件的基础上,再融入自己的创新思想(最优落子算法的改进),编写了这个五子棋游戏,软件实现了人机对弈和双人对弈的功能,游戏软件界面美观,操作容易,电脑的AI值也较高。
一、五子棋介绍及其开发环境
(一)五子棋介绍
五子棋起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为"連珠",英译为"Renju",英文称之为"Gobang"或"FIR"(Five in a Row的缩写),亦有"连五子"、"五子连"、"串珠"、"五目"、"五目碰"、"五格"等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征"短、平、快",又有古典哲学的高深学问"阴阳易理";它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有"场"的概念,亦有"点"的连接。它是中西文化的交流点,是古今哲理的结晶。
(二)开发背景
当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就是人机对战和网络对战不能够一起实现,所以我决定开发一个既能够人机对战,又能够进行网络对战的五子棋系统。
(三)开发环境及运行环境
1.开发环境
* Intel(r) Pentium(r) 4 2.0GHz,512M内存,80G硬盘
* Microsoft(r) Windows(tm) 2000 Professional
* Microsoft(r) Visual C++ 6.0
* Microsoft(r) Developer Network for Visual Studio.NET 2003
* Visual Assist X 10.1.1301.0
2.运行环境
* Intel(r) Pentium(r) 2及以上处理器,32M以上内存,4G以上硬盘
* Microsoft(r) Windows(tm) 9X/NT操作系统
* 800*600或以上的屏幕分辨率
二、软件结构
考虑到整个的下棋过程(无论对方是电脑抑或其他网络玩家)可以分为:己方落子、等待对方落子、对方落子、设置己方棋盘数据这一系列过程,因此一人游戏类、二人游戏类和棋盘类之间的关系参考了AbstractFactory(抽象工厂)模式,以实现对两个不同模块进行一般化的控制。
软件的总体架构如图1所示。
(一)棋盘类
整个架构的核心部分,类名为CTable。封装了棋盘的各种可能用到的功能,如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与CTable进行交互来完成对游戏的操作。
(二)游戏模式类
用来管理人机对弈/网络对弈两种游戏模式,类名为CGam
上一篇:
汽车修理管理系统的开发(vfp)
下一篇:
4种小菜缓解孕妈咪不适