人工智能实验平台-五子棋实验手册For v0.1.3

人工智能实验平台-五子棋实验手册For v0.1.3
人工智能实验平台-五子棋实验手册For v0.1.3

AIEP-五子棋实验手册

v0.1.5

For AIEP v0.1.3

快速入口“竞赛区”助手

Eclipse导出jar文件助手VS导出dll文件助手

实验目的

了解并学会使用某种A*算法,设计启发式估价函数,解决简单的问题。

实验背景

五子棋是一种两人对弈的策略性游戏。因其简单易学,老少咸宜,并且趣味横生,引人入胜,已经在各游戏平台中现其身影。传统五子棋棋盘为15X15,棋子为黑白两色,并放于棋盘线的交叉点上。游戏开始,两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。

实验要求

在AIEP中,为五子棋下子策略设计2个启发式估价函数,其中每个启发式估价函数有三个等级(以“计算时间”定义等级,具体“计算时间”由“竞赛区”或“裁判员”设定)。实验步骤

1.编写实现(继承)自FIR_AI接口(抽象类)的MyFirAI类

如果你是Java用户,请使用Eclipsev3.5.2(或更高版本)导入工程文件夹AIEP\Client-Java\AIEP-FIR-AI。如果你是C/C++用户,请使用Visual Studio 2010(或2012)打开工程文件AIEP\Client-CPP\FIR_AI\ FIR_AI.sln。如果你是Javascript(或Python)用户,请直接使用任意文本编辑器打开AIEP\Client-Javascript\MyFirAI.js(或AIEP\Client-Python\MyFirAI.py)。如果你是C#用户,请使用Visual Studio 2010(或2012)打开工程文件AIEP\Client-CSharp\FIR_AICSharp\FIR_AI.sln。如果你是https://www.360docs.net/doc/d22759882.html,用户,请使用Visual Studio 2010打开工程文件AIEP\https://www.360docs.net/doc/d22759882.html,\FIR_https://www.360docs.net/doc/d22759882.html,\FIR_AI.sln。

如果导入(打开)工程成功,那么我们可以看到MyFirAI这个类(MyFirAI.java、MyFirAI.h、MyFirAI.js、MyFirAI.py)中一共包含如下9个函数:

①public void setInningInfo(Status myStatus, int limitedTime, StudentInfo opponentInfo,Status[]

piecesArray);//Java、C#

[public]void setInningInfo(Status myStatus, int limitedTime, StudentInfo* opponentInfo,

Status piecesArray[]);//C、C++

/*void*/this.setInningInfo= function(/*Status*/myStatus,/*int*/limitedTime, /*StudentInfo*/opponentInfo, /*Status[]*/ piecesArray);//Javascript

/*void*/def setInningInfo(self, /*Status*/myStatus,/*int*/limitedTime, /*StudentInfo*/opponentInfo, /*Status[]*/ piecesArray);//Python

②public Step itsmyturn(Step opponentStep);//Java、C#

[public]Step* itsmyturn( const Step* lastStep);//C、C++

/*Step*/this.itsmyturn = function(/*Step*/ opponentStep);//Javascript

/*Step*/def itsmyturn(self, /*Step*/step);//Python

③public Step itsmyturn2(Step opponentStep);//Java、C#

[public]Step* itsmyturn2(const Step* lastStep);//C、C++

/*Step*/this.itsmyturn2 = function(/*Step*/ opponentStep);//Javascript

/*Step*/def itsmyturn2(self, /*Step*/ step);//Python

④public String getId();//Java、C#

[public]char* getId();//C、C++

/*String*/ this.getId = function();//Javascript

/*String*/def getId(self) ;//Python

⑤public String getName();//Java、C#

[public]char* getName();//C、C++

/*String*/ this.getName = function();//Javascript

/*String*/def getName (self) ;//Python

⑥public String getNickname();//Java、C#

[public]char* getNickname();//C、C++

/*String*/ this.getNickname = function();//Javascript

/*String*/def getNickname (self) ;//Python

⑦public boolean isPrintInfo();//Java、C#

[public]bool isPrintInfo();//C、C++

/*bool*/this. isPrintInfo = function();//Javascript

/*int*/ def isPrintInfo(self) ;//Python

⑧public String getVersion();//Java、C#

[public]char* getVersion();//C、C++

/*String*/ this. getVersion = function();//Javascript

/*String*/def getVersion (self) ;//Python

⑨public GameTree getLastGameTree();//Java、C#

[public] GameTree* getLastGameTree();//C、C++

/* GameTree */this. getLastGameTree = function();//Javascript

/* GameTree */def getLastGameTree(self) ;//Python

下面依次对以上函数作说明。

①setInningInfo 函数为棋局设置函数。每一局开始前系统会调用此函数。用户需要在此函

数中对自己的数据进行初始化。函数参数说明如下:

Status myStatus当前AI在本局游戏中的角色(攻方或守方);

int limitedTime本局游戏最长允许计算时间,当超出该值而itsmyturn/itsmyturn2未返回结果给系统时将会输掉本局;

StudentInfo opponentInfo对手信息,包括Id,Name,Nickname等;

Status[] piecesArray棋盘状态数组,长度为15*15。

②itsmyturn 函数为第一个启发式估价函数。每次轮到当前AI下子时系统会调用此函数。

用户需要在规定时间内返回结果。函数参数说明如下:

Step opponentStep对手下子位置。Step类包含getX和getY方法,用户可以通过这两个方法获取到对应的位置。请注意,该参数可能无效,如初始棋盘攻方棋子多于守方,并且当前AI为守方。

③itsmyturn2 为第二个启发式函数,参数意义同上。

④getId 为获取当前AI的ID值函数,此处请返回用户的唯一标识(如:学号)。

⑤getName 为获取当前AI的Name值函数,此处请返回用户的姓名。

⑥getNickname 为获取当前AI的Nickname值函数,此处请返回一个绰号,该绰号在公布

结果时用到。

⑦isPrintInfo 为是否打印调试信息函数。如果该函数返回true,那么客户端每接收到一

条消息将会显示相应内容。当然,输赢信息的显示与该函数无关。

⑧getVersion 为获取当前AI的版本号。

⑨getLastGameTree 获取上一步AI产生的博弈树。

2.调试自己的启发式函数

如果你是Java用户,那么你可以在Test.java文件中找到main函数,而如果你是C/C++用户,那么你可以在Test.cpp中找到main函数。如果你是C#用户,那么你可以在Test.cs中找到main函数。如果你是https://www.360docs.net/doc/d22759882.html,用户,那么你可以在Test.vb中找到main函数。main函数很简单,创建一个MyFirAI对象,并传给FIRLoader类,由FIRLoader类对象设置连接服务器(裁判员)地址以及连接端口,并与服务器(裁判员)交互。(注意:Javascript和Python 用户不支持该调试功能,请直接转到步骤3。)

如果你需要调试自己的启发式函数,那么

(1)启动AIEP服务器(AIEP\Server\AIEP(32/64-bit).exe,注意:需要安装Java虚拟机);

(2)选择角色:【菜单】系统→选择角色→裁判员;

(3)选择实验内容:【菜单】系统→选择实验→五子棋;

(4)启动实验:【菜单】设置→(重)启动;

下一步,请运行编译生成jar文件或exe文件(或测试文件)。如果选择了机机对战模式,那么请运行两个(次)AI文件。

用户也可以通过以下步骤对实验做进一步配置:

(1)配置实验:【菜单】设置→扩展设置,此时会弹出模式设置对话框;

(2)选择对战模式:人机对战(MAN vs AI)或机机对战(AI vs AI);

(3)选择先后手:人为攻方(MAN FIRST)或AI为攻方(AI FIRST),如果选择机机对战模式,

请忽略此步骤;

(4)设置下棋者Id, Name, Nickname,如果选择机机对战模式,请忽略此步骤;

(5)选择AI所使用的启发式函数;

(6)选择游戏级别:初级(Beginner)、中级(Intermediate)或高级(Advanced);

(7)选择棋盘文件;

(8)点击“(重)启动”按钮启动服务器或点击“应用”按钮保存修改。至此,服务器端设

置完毕。

3.导出AI、调试博弈树

如果你是Java用户,那么请导出jar文件。如果你是C/C++/.NET用户,那么请导出dll 文件。

博弈树的调试过程相对有些繁琐:

(1)启动AIEP服务器(AIEP\Server\AIEP(32/64-bit).exe。

(2)选择角色:【菜单】系统→选择角色→裁判员;

(3)选择实验内容:【菜单】系统→选择实验→五子棋;

(4)启动实验:【菜单】设置→(重)启动;

(5)再启动一个AIEP服务器(AIEP\Server\AIEP(32/64-bit).exe。

(6)选择角色:【菜单】系统→选择角色→站点;

(7)选择实验内容:【菜单】系统→选择实验→五子棋;

(8)配置:【菜单】设置→基本设置,在弹出的对话框中,选择“连接到裁判员”,填写“裁

判员”IP以及端口,选择AI文件(Javascript用户和Python用户请直接使用源文件)。

(9)点击“(重)启动”来连接“裁判员”。此时,主界面会显示用户的博弈树。

4.对战与上传AI

导出AI文件后,首先,Java用户和.NET用户每一上传版本必须使用唯一的类名。同时.NET 用户需要将上传的文件名(不含扩展名)设置为类名。而Javascript用户以及Python请勿修改类名。可以通过以下步骤与其他用户进行对战:

(1)启动AIEP服务器(AIEP\Server\AIEP(32/64-bit).exe);

(2)选择“站点”角色:【菜单】系统→选择角色→站点;

(3)选择“五子棋”实验:【菜单】系统→选择实验→五子棋;

(4)设置远程竞赛区信息:【菜单】设置→基本设置,此时弹出“AI站点基本设置”对话框;

在此对话框中,选择“连接到竞赛区”,填写“竞赛区”IP以及“在线”(对战)端口,选择AI文件(Javascript用户和Python用户请直接使用源文件)。

(5)点击“(重)启动”来进入对战区。(注意,每次程序启动只能选择一个AI文件,如果需

要更换AI文件,请重启程序)。

(6)如果一切正常,那么主界面会以表格的形式展示桌面信息,用户可以通过“双击”某一

个对战桌面或“右键”→“进入”来选择对战桌面。第一个进入对战桌面的用户需要等待其他用户,并作为先手下子。当第二个用户进入桌面时,游戏立即开始。游戏结束时,桌面信息将会被清空以允许其他用户选择。

或者通过以下步骤上传AI文件:

(1)启动AIEP服务器(AIEP\Server\AIEP(32/64-bit).exe);

(2)选择“站点”角色:【菜单】系统→选择角色→站点;

(3)选择“五子棋”实验:【菜单】系统→选择实验→五子棋;

(4)设置远程竞赛区信息:【菜单】设置→基本设置,此时弹出“AI站点基本设置”对话框;

在此对话框中,选择“连接到竞赛区”,填写竞赛区IP以及发布(结果)端口,选择AI 文件。

(5)点击“上传”按钮将AI文件上传到“竞赛区”。

用户可以继续通过【菜单】①设置→(重)启动,②视图→窗口→竞赛区排名,来查看竞赛排名,也可以继续通过【菜单】视图→窗口→竞赛区状态,来查看竞赛区的基本信息。

实验说明

1.Status为enum枚举类型,值OFFENSIVE表示攻方,DEFENSIVE表示守方,EMPTY表示

空;

2.棋盘横向为X轴,正方向水平向右;纵向为Y轴,正方向为垂直向下;

3.用户需要自己维护棋局状态,当前AI角色(攻方或守方),限定时间等;

4.用户可以直接运行Java版本的测试AI(AIEP\Client-Java\start.bat),以及C/C++版本的

测试AI(AIEP\Client-CPP\FIR_AI.exe),测试AI默认在对方右方一格下子;

5.用户可以通过【菜单】视图→窗口→提示信息窗口,来调试自己的AI;

6.五子棋“裁判员”配置文件为AIEP\Server\fir_conf.txt,该文件为键值对表。LimitedTime

表示限制时间,依次为C/C++的初中高级、Java初中高级,之间用逗号隔开。RemotePort 表示棋盘信息端口。

7.当前服务器(裁判员)一共有2种模式:人机对战模式和机机对战模式。两种对战模

式都需要选择AI的启发式函数,以及游戏级别(Level)。并且两种模式都可以导入指定的棋盘文件(棋盘文件为文本文件,一共15行,每行一共15个数字,之间用逗号隔开,每个数字代表棋盘中的每个交叉点的属性:数字0表示该位置为空,1表示该位置为攻方棋子白子,-1表示该位置为守方棋子黑子)。当选择人机对战模式时,可以选择AI先行或MAN先行,同时需要填写MAN信息。

8.如果AIEP(32/64-bit).exe运行出现问题,请使用同目录下的start(32/64-bit).bat进行相

同操作。

9.如果遇到未知错误,请查看error.log以获取更多信息。结稿时AIEP版本为0.1.3,如果

该系统出现任何问题或者您有任何建议,请发邮件至njucs_aiep@https://www.360docs.net/doc/d22759882.html,。

“竞赛区”助手

如果你需要创建一个“竞赛区”,那么请执行以下步骤:

1.启动AIEP服务器(aiep(32/64-bit).bat);

2.选择“竞赛区”角色:【菜单】系统→选择角色→“竞赛区”;

3.选择“五子棋”实验:【菜单】系统→选择实验→“五子棋”,此时,主界面会显示当前

所有上传的AI;

4.设置“竞赛区”基本信息:【菜单】设置→基本设置,此时会弹出“AI竞赛区基本设置”

对话框,请依次设置“竞赛区”发布端口、上传AI端口、裁判员回复结果端口、模式、是否发布信息,然后点击“(重)启动”按钮(或通过步骤5),来启动“竞赛区”。其中,“模式”分为“在线模式”和“上传”模式。“在线模式”下,“站点”可以查看当前对战桌面,并选择某一桌等待或与另一位正在等待的选手进行PK;“上传模式”下,“站点”

可以上传自己的AI文件(.jar/.dll/.js/.py),并在一段时间之后获取AI的排名情况。

5.运行“竞赛区”:【菜单】设置→(重)启动;

你可以通过【菜单】视图→窗口→排名,来查看当前竞赛区的排名,或通过【菜单】视图→竞赛区状态,来了解竞赛区当前的每场比赛的信息。

使用VS2012注意事项[C/C++]

1.打开.sln文件后,如果提示需要更新,请点击“确定”。

2.请在std.h头文件中,宏定义一个“VS2012”,即取消第22行的注释。

使用Eclipse注意事项

导入工程后,可能会因为无法找到外部jar文件而导致无法编译。此时,请在工程文件夹上右键→构建路径(Build Path)→配置构建路径(Configure Build Path),在弹出的对话框的右边,选择选项卡“库(Library)”,编辑(Edit)列表框的3个jar文件路径,修改为工程目录下的jar文件夹下的对应名称的.jar文件。

Eclipse导出jar文件

在工程目录上“右键”→“导出(Export)”,在弹出的导出对话框中选择“Java”→“Jar 文件”,然后点击“下一步(Next)”,填写输出文件名,最后点击“完成(Finish)”即可。

Visual Studio导出dll文件

[C/C++]首先,使工程的任意一个文件在编辑器中获取焦点,然后选择【菜单】“项目”→“[项目名称]属性”。在弹出的对话框中,“配置”下拉框选择“所有配置”,“平台”下拉框选择“Win32”,然后依次展开左边的树形结构图:“配置属性”→“常规”。此时,将右边的“项目默认值”区的“配置属性”更改为“动态库(.dll)”,如下图所示:

点击“确定”完成设置,然后通过【菜单】“调试”→“启动调试”来生成dll文件,此时会提示“无法启动……dll”,这是因为没有给这个dll设置启动程序所致,这里请忽略之。如果输出窗口提示“生成成功”,那么会在(项目根目录下的)Debug或Release文件夹中生成对应的dll文件。

[C#/https://www.360docs.net/doc/d22759882.html,]首先,使工程的任意一个文件在编辑器中获取焦点,然后选择【菜单】“项目”→“[项目名称]属性”。在弹出的窗口中,选择“应用程序”选项卡,在“输出类型”下拉框中选择“类库”,如下图所示:

按下“Ctrl+S”保存设置,然后通过【菜单】“调试”→“启动调试”来生成dll文件,此时会提示“无法直接启动带有‘类库输出类型’的项目”,这是因为没有给这个dll设置启动程序所致,这里请忽略之。如果输出窗口提示“生成成功”,那么会在(项目根目录下的)bin/Debug或bin/Release文件夹中生成对应的dll文件。

64位Java虚拟机使用注意事项[C/C++]

如果C/C++用户在64位Java虚拟机上运行本平台,那么请先安装x64服务:以管理员身份运行AIEP/Server/install.bat。

该服务将会在开机时自动启动,所以用户只需运行以上脚本一次。注销服务请以管理员身份运行AIEP/Server/uninstall.bat。

注意:1. 非C/C++用户不需要执行以上操作。2. 直到AIEPv0.1.3,64位Java虚拟机暂不支持博弈树输出。

.NET用户注意事项

.NET用户在AIEP.exe中调用.NET DLL需要注册.NET(仅支持v4.0. 30319)服务:以管理员身份运行AIEP/Server/res/fir/dotnet/reg.bat;

该服务将会在开机时自动启动,所以用户只需运行以上脚本一次。注销服务请以管理员身份运行AIEP/Server/res/fir/dotnet/unreg.bat。

v0.1版本更新内容

1.添加两个AI函数(获取版本号、获取上一步博弈树),使之支持博弈树图形界面输出,

并修改一个函数(设置棋局信息)。

2.原“服务器”角色更名为“裁判员”,并添加“裁判员”提示信息查窗口。

3.原“客户端”角色更名为“站点”。

4.代码中,原“Client”更改为“AILoader”。

5.添加无法连接“裁判员”提示信息,以及“裁判员”命令重新开始操作(AI不需要重启)。

6.添加“AI竞赛区”,AI之间可以对战,用户可以上传自己的AI,查看自己的AI情况。

v0.1.1版本更新内容

1.修正边缘五子连珠不判胜问题。

2.修正博弈树显示重叠问题。

3.添加Javascript以及Python版本。

v0.1.2beta版本更新内容

1.完善上传模式,支持Java/Javascript/Python,尚未支持C/C++;

2.改善DLL路径问题,启动DLL直接使用绝对地址。

v0.1.2版本更新内容

1.进一步完善“上传”模式,支持C/C++;

2.修正服务器路径包含空格无法创建比赛的问题;

v0.1.2fixed版本更新内容

1.修复64位Java虚拟机无法启动问题;

2.修复FIR-AI返回空博弈树出现异常问题。

3.Arena角色类名重复出现提示窗口。

v0.1.3版本更新内容

1.修复v0.1.2fixedServer目录下无安装文件(install.bat、uninstall.bat)问题。

2.添加C#以及https://www.360docs.net/doc/d22759882.html,(非官方)版本。

by ygsx

2013年7月8日

截图见下页

AIEPv0.1.3-五子棋“裁判”设置截图:

AIEPv0.1.3-五子棋AI实现截图:

AIEPv0.1.3支持语言:

AIEPv0.1.3 Server内容:

五子棋Java实验报告

五子棋JAVA实验报告 目录 五子棋JA V A实验报告 (1) 一、实验目的和要求 (2) 二、五子棋的基本常识与原理 (2) 三、五子棋的系统设计 (3) 四、五子棋的实现与测试 (7) 五、分析与总结 (10) 六、附录 (12)

一、实验目的和要求 1、能够用编程语言实现一个简单的五子棋程序 2、在实际系统中使用、实现人工智能的相关算法 3、进一步加深对人工智能算法的理解 二、五子棋的基本常识与原理 1、五子棋的起源 五子棋,是一种两人对弈的纯策略型棋类游戏,亦称“串珠”、“连五子”;是中国民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历史还要悠久。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。 五子棋发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为19X19,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。 2、五子棋的基本常识 与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局。 五子棋的开始阶段称为开局,或称布局。其开局阶段是十分短暂的,大约在七着与十几着之间。在这一阶段的争夺中,双方的布局,应对将对以后的胜负起着极为关键的作用。在开局阶段取得的形势好坏,主动与被动,先手与后手的优劣程度,往往直接影响中局的战斗。因此积极处理好开局和开局向中局的过渡十分重要。 五子棋是从一至五,逐渐布子,发展连系,同时运用限制和反限制的智慧,在连子的过程中为自己的棋子争得相对的主动权和优势,逐步扩展优势,或者从劣势转化为优势,击溃对方的防线,最后连五取胜或抓禁手取胜或迫使对方投子认负。 3、五子棋比赛的相关规定 (1) 职业连珠规则 a. 黑方先下子,白后下,从天元开始相互顺序落子。 b. 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。 c. 黑棋禁手判负,白棋无禁手。黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、

人工智能实验一指导

实验1: Prolog语言程序设计 人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。 Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。 尽管Prolog语言有许多版本,但它们的核心部分都是一样的。Prolog的基本语句仅有三种,即事实、规则和目标三种类型的语句,且都用谓词表示,因而程序逻辑性强,方法简捷,清晰易懂。另一方面,Prolog是陈述性语言,一旦给它提交必要的事实和规则之后,Prolog就使用内部的演绎推理机制自动求解程序给定的目标,而不需要在程序中列出详细的求解步骤。 一、实验目的 1、加深学生对逻辑程序运行机理的理解。 2、掌握Prolog语言的特点、熟悉其编程环境。 3、为今后人工智能程序设计做好准备。 二、实验内容 1、编写一个描述亲属关系的Prolog程序,然后再给予出一些事实数据,建立一个小型演绎数据库。 提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。 2、编写一个路径查询程序,使其能输出图中所有路径。 提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。 e

3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。 (a)用Prolog规则表述这个雇主的选择准则。 (b)用Prolog事实描述下列申请者的情况: 史密斯住在剑桥,会开车但不会打字。 布朗住在伦敦,会开车也会打字。 简住在格拉斯哥,不会开车但会打字。 埃文斯住在伦敦,会开车也会打字。 格林住在卢顿,会开车也会打字。 (c)要求Prolog提供一个候选人名单。 4、实现递归谓词remove(X,Y,Z),它用于从表Y中除去所有整型数X的倍数值后得到新表Z。例如,对于询问 remove(2,[3,4,5,6,7,8,9,10],Z). 的回答为: Z=[3,5,7,9] 三、实验建议 1、首先运行Prolog安装目录中PROGRAM目录下的示例程序,对Prolog功能有一个感性认识。 (1)HANOI.PRO 实现汉诺塔演示的程序。 程序运行界面如图所示。

五子棋实训报告

五子棋实训报告 五子棋实训报告 篇一: (3)棋子的绘制与存储棋子的绘制用实心圆模式,颜色为黑色及 白色两种。 棋子在内存中的存储方式: 因为表示各个棋子的数据类型都相同,所以考虑用数组存储,因 为棋盘是二维的,因此棋子用二维数组a存储。 a{ setTitle{ Objet obj = e.getSoure } toolbar = ne JPanel{ } publi int getX{ } publi int getY{ } publi Color getColor{ } return olor; return ; return x; this.x = x; this. = ; this.olor = olor;篇 四: 实习报告-五子棋 信息工程学院 201X年毕业实习报告 班级: 计科XX 姓名: XXX 实习地点: XXXXXX 实习12周-19周

一、实习目的 1. 夯实专业基础,提高动手能力。 把专业知识应用于实践,找出专业薄弱环节加强巩固。 3. 了解就业单位的计算机技术的应用情况、需求情况和发展方向及前景,培养实践能力、分析问题和解决问题的能力以及综合运用所学基础知识和基本技能的能力,同时也增强了适应社会的能力和就业竞争力。 4. 挖掘自身潜力,寻找自身不足,通过实践对未来做出合理规划。 二、实习任务 在MElipse的平台上运用java语言,学习开发一个常用小游戏:五子棋。 三、实习计划 5. 基础夯实,联系实践。 在信息高速发展的今天,计算机科学技术的重要性也在人们的日常生活中日益突显。不管是从事理论教学还是从事软件的设计和开发,基础都是最有力的保障。思想决定行动,认识决定成败。没有正确的思想作为指导,行动就会陷入盲目和被动。缺乏正确的认识基础,前途就会迷茫,方向就会迷失,机会就会丧失。所以说,理论学习是我增强行动自觉的重要保证。人常说:“经济基础决定上层建筑”专业基础对我来说就是经济基础,而上层建筑就是我们所从事的相关工作。但是只拥有专业基础还是不行的,所以,我必须要把理论应用于实践。这也是此次实习课程的重要所在,以专业基础知识为重要依托,以专

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 20119050 日期 2016年月日

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (25) 第五章后记 (30)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

五子棋游戏实验报告

五子棋游戏实验报告 课程名称计算机程序设计(VB) 学号______________________ 姓名______________________ 班级______________________ 提交时间 五子棋软件设计 一、实验目的 1?通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提岀自己的想法及设计方案。 2?通过开发一个较大的系统,增强软件开发能力。 3?通过调试系统,增强逻辑思维能力。 二、实验内容 1.基本要求: (1)输入两个对手名字,然后进入游戏界面。 (2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15 ) (3)可以悔棋。 (4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。 (5)能够将棋局的结果保存,保存该棋局

结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。

因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息 用文件技术进行棋局保存,思路相同。 (7)五子棋恢复棋局 思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。 窗体启动事件应该完成的事情: 组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最 后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据 这个特点编程序取出表中不同的棋局名。 具体算法: 用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合 框中,一直到表中最后一个记录 因为要从数据库中取岀相关数据到a数组中,因此要将a数组所有数据清零。 要建立一个data控件,与数据库连接起来,而后识别棋局(即表中的棋局名字段与在列表框中选择的棋 局名比较),将数据库该棋局中所有信息都赋值给a数组及相关变量。 刚才仅仅是数据的恢复,即将数据库中已经保存过的数据恢复到内存中,下一步应该根据内存中的数据重新绘制棋盘以及棋子。 重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下: 清屏一绘制棋盘一根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是 2来决定在该位置绘制何颜色的棋子。 决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。 因此设置了一个变量做计数器,每走一步棋计数器的值加一。 用文件技术实现棋局恢复,思路相同。 (8)悔棋 悔一步棋:用几个变量来表示关于一步棋的几个信息,每次下子都将该子的信息赋值给那几个变量,悔 一步棋即将那几个变量所表示的点的a数组信息清零。而后调用paint ()过程重画。 以上是教师带着学生完成的软件功能。 遗留问题:保存棋手姓名和棋局名并在恢复棋局的时候显示。(需要同学们自己完成)思路:在数据表中多建立两个字段,分别表示两个棋手姓名,同其它数据的保存类似。 三、设计日期 十二月 四、完成日期 十二月 五、实验体会 其实,一开始学习vb我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课

人工智能小型专家系统的设计与实现解读

人工智能技术基础实验报告 指导老师:朱力 任课教师:张勇

实验三小型专家系统设计与实现 一、实验目的 (1)增加学生对人工智能课程的兴趣; (2)使学生进一步理解并掌握人工智能prolog语言; (3)使学生加强对专家系统课程内容的理解和掌握,并培养学生综合运用所学知识开发智能系统的初步能力。 二、实验要求 (1)用产生式规则作为知识表示,用产生系统实现该专家系统。 (2)可使用本实验指导书中给出的示例程序,此时只需理解该程序,并增加自己感兴趣的修改即可;也可以参考该程序,然后用PROLOG语言或其他语言另行编写。 (3)程序运行时,应能在屏幕上显示程序运行结果。 三、实验环境 在Turbo PROLOG或Visual Prolog集成环境下调试运行简单的PROLOG程序。 四、实验内容 建造一个小型专家系统(如分类、诊断、预测等类型),具体应用领域由学生自选,具体系统名称由学生自定。 五、实验步骤 1、专家系统: 1.1建造一个完整的专家系统设计需完成的内容: 1.用户界面:可采用菜单方式或问答方式。

2.知识库(规则库):存放产生式规则,库中的规则可以增删。 3.数据库:用来存放用户回答的问题、已知事实、推理得到的中 间事实。 4.推理机:如何运用知识库中的规则进行问题的推理控制,建议 用正向推理。 5.知识库中的规则可以随意增减。 1.2推理策略 推理策略包括:正向(数据驱动),反向(目标驱动),双向 2、动物分类实验规则集 (1)若某动物有奶,则它是哺乳动物。 (2)若某动物有毛发,则它是哺乳动物。 (3)若某动物有羽毛,则它是鸟。 (4)若某动物会飞且生蛋,则它是鸟。 (5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。(6)若某动物是哺乳动物且吃肉,则它是食肉动物。 (7)若某动物是哺乳动物且有蹄,则它是有蹄动物。 (8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。 (9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。 (10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是猎豹。 (11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。 (12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。 (13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

五子棋C++实验报告

(此文档为word格式,下载后您可任意编辑修改!)

一、需求分析 1.1开发背景 电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版游戏固定、呆板、与机器对话的状况。网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一。 网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念但随着科技的发展,游戏娱乐产业也在成长目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代。第二,网络游戏加强了人与人的沟通。第三,网络游戏具有一定的教育意义。网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。网络无国界,游戏在网络文化产业世界的发展中地位会越来越高。 目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同。其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。同时,这也涉及到一个企业开发的能力。娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者。 就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所开发或代理的网络游戏更是不胜枚举。以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。去年在美国洛杉矶所举行的 E3(Electronic Entertainment Exposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列。 近几年来,由于 3D 硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且3D遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D 游戏已经逐渐取代2D游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向3D化。然而游戏3D化将会带来的游戏开发上的困难等问题,这些问题以后都需要逐步解决。 人们面对电脑的时间越来越多,面对身边的人的时间越来越少,所以我们游戏所要达到的目的就是加大人们之间的沟通,让大家随时随地都可以体验到玩游戏的乐趣。而三子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。同样的,通过这个游戏,既能在休闲时刻娱乐一下,也能在压力面临的时候放松一刻。

《人工智能及其应用》实验指导书Word版

《人工智能及其应用》 实验指导书 浙江工业大学计算机科学与技术学院—人工智能课程组 2011年9月

前言 本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。 全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。 本实验指导书包括两个部分。第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。 由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。 人工智能课程组 2011年9月

目录 实验教学大纲 (1) 实验一产生式系统实验 (3) 实验二模糊推理系统实验 (5) 实验三A*算法实验I (9) 实验四A*算法实验II (12) 实验五遗传算法实验I (14) 实验六遗传算法实验II (18) 实验七基于神经网络的模式识别实验 (20) 实验八基于神经网络的优化计算实验 (24)

实验教学大纲 一、学时:16学时,一般安排在第9周至第16周。 二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。 三、实验项目及教学安排 序号实验名称实验 平台实验内容学 时 类型教学 要求 1产生式系统应用VC++设计知识库,实现系统识别或 分类等。 2设计课内 2模糊推理系统应用Matlab1)设计洗衣机的模糊控制器; 2)设计两车追赶的模糊控制 器。 2验证课内 3A*算法应用I VC++设计与实现求解N数码问题的 A*算法。 2综合课内4A*算法应用II VC++设计与实现求解迷宫问题的A* 算法。 2综合课内5遗传算法应用I Matlab1)求某一函数的最小值; 2)求某一函数的最大值。 2验证课内6遗传算法应用II VC++设计与实现求解不同城市规模 的TSP问题的遗传算法。 2综合课内 7基于神经网络的模式识别Matlab1)基于BP神经网络的数字识 别设计; 2)基于离散Hopfiel神经网络 的联想记忆设计。 2验证课内 8基于神经网络的 优化计算 VC++设计与实现求解TSP问题的连2综合课内 四、实验成绩评定 实验课成绩单独按五分制评定。凡实验成绩不及格者,该门课程就不及格。学生的实验成绩应以平时考查为主,一般应占课程总成绩的50%,其平时成绩又要以实验实际操作的优劣作为主要考核依据。对于实验课成绩,无论采取何种方式进行考核,都必须按实验课的目的要求,以实际实验工作能力的强弱作为评定成绩的主要依据。

五子棋系统实验报告

湖南工业大学 课程设计任务书 2015—2016学年第2 学期 计算机与通信学院(系、部)计算机科学与技术专业计算机1502班级课程名称:面向对象程序设计 设计题目:五子棋 完成期限:自2016年6月13日至2016年6月19日共1周

指导教师(签字):年月日 系(教研室)主任(签字):年月日

面向对象程序设计课程设计 设计说明书 五子棋 起止日期: 2016年6月13日至 2016年6月18日 学生姓名王回 班级计算机1502学号15408100209成绩 指导教师(签字) 计算机与通信学院 2016年 6 月 18日

五子棋 一、课题的介绍和课题的任务 设计的课题名称:五子棋 实现以下功能: 功能1、模拟真实棋盘棋子 功能2、模拟人与人对战下棋 功能3、模拟实时胜负判断 功能4、模拟棋局的存储与读取 二、设计的要求 具有动画功能(即图像能即时移动),能实现人与人进行简单的对玩,能实现简单的胜负判断 三、系统的分析和系统中类的设计 CWZQApp类作用:初始化应用程序及运行该程序的所需要的成员函数CWZQDoc类作用:存放应用程序的数据以及实现文件的保存,加载功能 CMainFrame类作用:管理应用程序的窗口,显示标题栏,状态栏,工具栏等,同时处理针对窗口操作的信息 CAboutDlg类作用:向导自动生成对话框类 CWZQView类作用:管理视图窗口,在框架窗口中实现用户数据的显示和打印,存放添加的功能模块

CWZQView类中的成员函数与数据成员: void Save(); //**** //保存文件 void OnOpen() //打开文件 void over(CPoint point);//**** //检查是否结束voidOnDraw(CDC* pDC) //画棋盘函数 void OnLButtonUp(UINT nFlags, CPoint point)//模拟下棋函数 HCURSOR hcursorwhite; //**** //两个鼠标 HCURSOR hcursorblack; //**** intwzq[19][19]; //**** //棋盘数组 boolcolorwhite; //**** // colorwhite TRUE时白棋下, 否则黑棋下 CBitmapm_bmblack; //**** //棋子位图 CBitmapm_bmwhite; //**** void CWZQView::OnDraw(CDC* pDC) //构造棋盘,显示白棋以及黑棋 GetDocument() //获取文档指针,在视图中显示文档内容 CBrush //用于构造CBrush对象,然后传给需要画 刷的CDC成员函数 pDC->FillRect(myrect1,&mybrush1) // 画黑框线 四、系统的实现及调试 添加的功能: 1.图标,光标以及位图的绘制 程序运行开始鼠标在进入棋盘界面未放下棋子时变为类似棋子光标,此处需要描绘2种棋子光标: 黑白鼠标Cursor以替换当前鼠标: IDC_CURSOR1 黑棋子 IDC_CURSOR2 白棋子 说明: 由于下棋时我们必须把鼠标热点设置在中间,点击下图(图3-1-3)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。

《人工智能及其应用》实验指导书上课讲义

《人工智能及其应用》实验指导书

《人工智能及其应用》 实验指导书 浙江工业大学计算机科学与技术学院—人工智能课程组 2011年9月

前言 本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。 全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。 本实验指导书包括两个部分。第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。 由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。 人工智能课程组 2011年9月

目录 实验教学大纲 (1) 实验一产生式系统实验 (4) 实验二模糊推理系统实验 (6) 实验三 A*算法实验I (11) 实验四 A*算法实验II (14) 实验五遗传算法实验I (16) 实验六遗传算法实验II (21) 实验七基于神经网络的模式识别实验 (24) 实验八基于神经网络的优化计算实验 (28)

实验教学大纲 一、学时:16学时,一般安排在第9周至第16周。 二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。 三、实验项目及教学安排 序号实验名称实验 平台 实验内容学 时 类型教学 要求 1 产生式系统应 用VC++ 设计知识库,实现系统识 别或分类等。 2 设计课内 2 模糊推理系统 应用Matlab 1)设计洗衣机的模糊控制 器; 2)设计两车追赶的模糊控 制器。 2 验证课内 3 A*算法应用I VC++ 设计与实现求解N数码问 题的A*算法。 2 综合课内4 A*算法应用II VC++ 设计与实现求解迷宫问题 的A*算法。 2 综合课内 5 遗传算法应用 I Matlab 1)求某一函数的最小值; 2)求某一函数的最大值。 2 验证课内 6 遗传算法应用 II VC++ 设计与实现求解不同城市 规模的TSP问题的遗传算 法。 2 综合课内 7 基于神经网络 的模式识别Matlab 1)基于BP神经网络的数 字识别设计; 2)基于离散Hopfiel神经 网络的联想记忆设计。 2 验证课内 8 基于神经网络 的优化计算VC++ 设计与实现求解TSP问题 的连续Hopfield神经网 络。 2 综合课内 四、实验成绩评定

《人工智能及其应用》实验指导书

《人工智能及其应用》 实验指导书

浙江工业大学计算机科学与技术学院—人工智能课程组 2011年9月

前言 本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。 全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。 本实验指导书包括两个部分。第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。 由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。 人工智能课程组 2011年9月

目录 实验教学大纲 (1) 实验一产生式系统实验 (4) 实验二模糊推理系统实验 (7)

实验三A*算法实验I (13) 实验四A*算法实验II (17) 实验五遗传算法实验I (19) 实验六遗传算法实验II (26) 实验七基于神经网络的模式识别实验 (29) 实验八基于神经网络的优化计算实验 (35)

实验教学大纲 一、学时:16学时,一般安排在第9周至第16周。 二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。 三、实验项目及教学安排 序号实验名称实验 平台实验内容学 时 类型教学 要求 1 产生式系统应用VC++ 设计知识库,实现系统识别或 分类等。 2 设计课内 2 模糊推理系统应 用Matla b 1)设计洗衣机的模糊控制器; 2)设计两车追赶的模糊控制 器。 2 验证课内 3 A*算法应用I VC++ 设计与实现求解N数码问题的 A*算法。 2 综合课内 4 A*算法应用II VC++ 设计与实现求解迷宫问题的A* 算法。 2 综合课内 5 遗传算法应用I Matla b 1)求某一函数的最小值; 2)求某一函数的最大值。 2 验证课内 6 遗传算法应用II VC++ 设计与实现求解不同城市规模 的TSP问题的遗传算法。 2 综合课内7 基于神经网络的Matla1)基于BP神经网络的数字识 2 验证课内

五子棋课程设计实验报告

C语言程序设计报告 题目: 五子棋 班级: 电气Q1041班 人数: 3人 小组成员: 周啸天、万广富、黄山奇

指导老师:桂超 时间: 2011.11.30

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (22) 第五章后记 (27)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

java五子棋小游戏实验报告(附源代码)

手机五子棋游戏的设计与实 现 专业: 姓名: 班级: 学号: 指导教师:

J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。它因其“write once,run anywhere”的Java特性而提高了开发的效率。随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。棋类游戏规则单一,比较适合在手机等便携终端推广。 由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。 游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。 关键词:J2ME;CLDC;MIDP

J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand,I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words: J2ME;CLDC;MIDP

数据结构课程设计实验报告五子棋

湖南科技学院实验报告 系部:计算机与通信工程系 专业:软件工程 姓名:范清文 学号:201008003113 班级:软件1001班 课程名称:数据结构程序课程设计 指导老师:卿武明 实验项目:制作简单的五子棋 课程设计目的:1:对本学期所学的专业知识进行实践运用 2:制作五子棋并实现它的图示化 实验环境:Visual C++6.0 实验内容(算法、程序、步骤和方法): #include #include using namespace std; int x,y,Step=0; bool flag=0; char Switch; char map[20][20][3]={ {"┌","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┐"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"└","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┘"}}; char copymap[20][20][2]; float Player[20][20][1]; int Table[20][20] ,Showboard(),Play(),Interface(),Initboard(),Judgewin(),Deuce() ,Initdata(); bool legal(),Overflow(); int Interface() { char a; cout << "\n\n五子棋\n \t\t─\n 制作人:范清文(201008003113)\n\t\t────\n"; cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl; cout << " ~~ ~~" << endl; cout << " ~~ 1:人人对战~~" << endl; cout << " ~~ ~~" << endl; cout << " ~~ 2:退出~~" << endl; cout << " ~~ ~~" << endl; cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl; cout << "\n 请选择:"; cin >> a; if(a=='2') {

五子棋实验报告——李寒雪

电子科技大学数学科学学院 2018-2019-2学期 实验报告 (实验)课程名称程序设计基础综合实验 学生姓名:李寒雪学号:2015060101029 报告评分:指导教师:胡科 实验地点:基础实验大楼227 电子科技大学教务处制表

实验报告1 一、项目名称:主界面与棋盘设计 二、实验学时:6 (3~4周) 三、算法描述: c语言字符界面,菜单选项有: 0.人人对弈 1.人机对弈 2.退出游戏 3.游戏说明 四、核心代码: int main() { int temp; while(1){ std::cout << "0.人人对弈\n1.人机对弈\n2.退出游戏\n3.游戏说明\n"; std::cin >> temp; if (temp == 0){

PVP(); } else if (temp == 1){ PVC(); } else if(temp == 2){ break; } else if(temp == 3){ std::cout << "五子棋游戏:率先连成五颗方为赢家\n"; } else std::cout << "无此选项"; } } 五、实验结果(含运行界面截图): 1、运行程序进入菜单选项界面

2、选择0.人人对弈或者1.人机对弈进入对弈的字符棋盘界面,通过选择行列号来下子 3、选择3.游戏说明展示游戏规则 4、选择2.退出游戏,成功退出程序

六、总结及体会: 若用户在使用中出现其他选项应给与一定的提示信息。 实验报告2 一、项目名称:移位与胜负判定 二、实验学时:6 (4~5周) 三、算法描述: 在价值判定类中的成员函数isWin实现,对给定的参数当前落子坐标和棋盘对象进行判定,每次落子判定一次,每次判定需要遍历8个方向,由函数PVP和PVC调用,返回布尔量是否赢。 四、核心代码: bool Evaluator::isWin(int x, int y, ChessBoard::State state) {

相关文档
最新文档