资源简介
中国科学院大学c++五子棋程序课程设计,杨老师的课程,包含人人对战和人机对战
代码片段和文件信息
#include “AIgame.h“
#include
Position AIgame::getPosition(ChessPad &cspdint color) {//计算下一步棋子的位置
Position position;
int chesspadstate[15][15] = { 0 };
//旗手和棋子的标志 + 1 = 棋盘的标志
int mychesspadcolor = color + 1;//棋盘标志
int hischesspadcolor;
int myscore[15][15] = { 0 };//我的分数
int hisscore[15][15] = { 0 };//对手的分数
int tempstate[15][15] = { 0 };//临时标志
for (int i = 0; i < cspd.getRow(); i++)
{
for (int j = 0; j < cspd.getCol(); j++)
{
if (cspd.getChess(i j).getShow() == 1)
{
chesspadstate[i][j] = 1;
}
}
}
//int chesspadstate[x][y] = { 0 };
//判断是否第一次下
int flag = 0;
int k = 0 h = 0;
for (k = 0; k < 15; k++) {
for (h = 0; h < 15; h++) {
if (chesspadstate[k][h]>0) {
flag = 1;
break;
}
}
if (flag)
break;
}
if (k == 15 && h == 15) {//第一次下棋
Position position = { 77 };//默认最中间
return position;
}
//把最后一步标志还原
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
if (chesspadstate[i][j]>2)
tempstate[i][j] = chesspadstate[i][j] - 2;
else
tempstate[i][j] = chesspadstate[i][j];
}
}
//打分
for (int i = 0; i < 15; i++)
for (int j = 0; j < 15; j++) {
Position position;
int score;
position.x = i;
position.y = j;
//我的分数
score = judgeChessSituation(tempstate position mychesspadcolor);//返回当前形势分数
myscore[i][j] = score;
if (mychesspadcolor == BLACKFLAG)
hischesspadcolor = WHITEFLAG;
else
hischesspadcolor = BLACKFLAG;
//对手分数
score = judgeChessSituation(tempstate position hischesspadcolor);//返回当前形势分数
hisscore[i][j] = score;
}
//根据分数,给出位置
position=maxScore(myscore hisscore);
return position;
}
int AIgame::judgeChessSituation(const int state[15][15] Position position int color) {
Situation situation = { 0 };//记录当前形势变量
if (state[position.x][position.y])
return LevelFiveteen;//有子不能下,返回0分
for (int direction = 0; direction < 4; direction++) {//四个方向0横,1竖,2左上右下,3右上左下
int type;
type = getType(state position color direction);//取得类型(死四,活四等)
switch (type) {//根据类型对situation设置
case WIN5:
situation.win5++;
break;
case ALIVE4:
situation.alive4++;
break;
case DIE4:
situation.die4++;
break;
case LOWDIE4:
situation.lowdie4++;
break;
case ALIVE3:
situation.alive3++;
break;
case TIAO3:
situation.tiao3++;
break;
case DIE3:
situation.die3++;
break;
case ALIVE2:
situation.alive2++;
break;
case LOWALIVE2:
situation.lowalive2++;
break;
case DIE2:
situation.die2++;
break;
case NOTHREAT:
situation.nothreat++;
break;
default:
//差错控制
break;
}
}
return giveScore(situation);//根据形势得出分数
}
int AIgame::giveScore(Situation situation) {
int die4 = situation.die4 + situation.lowdie4;
int alive3 = situation.alive3 + situation.tiao3;
int alive2 = situation.aliv
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 76288 2017-11-30 14:07 FiveChess03\.vs\FiveChess03\v14\.suo
文件 103936 2017-11-30 08:52 FiveChess03\Debug\FiveChess03.exe
文件 470960 2017-11-30 08:52 FiveChess03\Debug\FiveChess03.ilk
文件 1445888 2017-11-30 08:52 FiveChess03\Debug\FiveChess03.pdb
文件 16585 2017-11-29 21:10 FiveChess03\FiveChess03\AIgame.cpp
文件 2503 2017-11-30 14:07 FiveChess03\FiveChess03\AIgame.h
文件 627 2017-11-30 14:07 FiveChess03\FiveChess03\Chess.h
文件 1975 2017-11-30 14:07 FiveChess03\FiveChess03\ChessPad.cpp
文件 739 2017-11-30 14:07 FiveChess03\FiveChess03\ChessPad.h
文件 359 2017-11-30 14:07 FiveChess03\FiveChess03\ComputerChesser.cpp
文件 224 2017-11-29 21:49 FiveChess03\FiveChess03\ComputerChesser.h
文件 197654 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\AIgame.obj
文件 201602 2017-11-29 19:16 FiveChess03\FiveChess03\Debug\ArtificialIntelligence.obj
文件 29834 2017-11-29 13:55 FiveChess03\FiveChess03\Debug\chesser.obj
文件 63302 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\ChessPad.obj
文件 30593 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\ComputerChesser.obj
文件 483 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.log
文件 6030 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\CL.command.1.tlog
文件 65074 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\CL.read.1.tlog
文件 16914 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\CL.write.1.tlog
文件 197 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\FiveChess03.lastbuildstate
文件 1966 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\li
文件 4088 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\li
文件 1080 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\FiveChess03.tlog\li
文件 35441 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\Judge.obj
文件 84350 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\main.obj
文件 116192 2017-11-29 18:16 FiveChess03\FiveChess03\Debug\main.obj.enc
文件 48502 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\PeopleChesser.obj
文件 535552 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\vc140.idb
文件 479232 2017-11-30 08:52 FiveChess03\FiveChess03\Debug\vc140.pdb
............此处省略27个文件信息
- 上一篇:VC打开多种图像格式bmpjpggiftifraw
- 下一篇:c++实现自我删除
相关资源
- c++实现自我删除
- C++控制台小游戏《突破重围》,有所
- 基于C++的虚拟串口通讯
- USB双向通信上位机VC++程序
- 台球游戏源代码
- C++ 实现IP端口扫描
- 宾馆管理系统(C++MFC)数据库课程设
- 小游戏开发教程 c++版
- 谭浩强C++程序设计源代码.rar
- 模拟生态系统
- c++标准库STL手册
- sniffer 源码
- C++可视化MFC课设_五子棋带报告
- 高级语言C++程序设计实验指导
- 图书馆管理系统C++243872
- 用C++实现的一个学生信息管理系统
- VC++6.0 双人五子棋游戏
- Borland C/C++ 3.1精简版
- 经典的图书管理系统c++源代码
- Boost Graph Library:The User Guide and Referen
- BT协议实现c++
- VC6.0中缺少VC98\\\\CRT\\\\SRC文件夹的--
- 学生成绩管理系统C++源码
- VC++运用OpenSSL实现对文件加密
- MFC_跑酷游戏小Demo
- 三维重建VC++
- 用C++实现的聊天程序
- VC++ 对话框 滚轮 计算器
- C++语言释难解惑
- 基于UDP的简单可视化界面聊天程序c
评论
共有 条评论