91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 12KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-14
  • 語言: C/C++
  • 標簽: C++??面向對象??

資源簡介

1、用C++程序設計語言,面向對象程序設計風格 2、命令行形式 3、有禁手功能 4、滿足基本的五子棋規則 5、有悔棋功能 6、實現人人、人機對戰

資源截圖

代碼片段和文件信息

#include?“AI.h“
#include?
#include?


AI::AI(Chess?chess?GameRule?gamerule)
:?Player(chess)?gameRule_(gamerule)
{
}


int?Evaluate(ChessModel?model)
{
switch?(model)
{
case?DeadTwo:
case?DeadThree:
case?DeadFour:
return?-1;

case?SleepTwo:
return?5;
case?SleepThree:
return?10;

case?SleepFour:
return?3000;

case?AliveTwo:
return?50;
case?AliveThree:
return?5000;
case?AliveFour:
return?100000;
case?FiveLine:
return?10000000;
default:
break;
}
return?0;
}


int?AI::EvaluatePoint(const?Chessboard?&chessboard?Coord?coord)?const
{
std::vector?models?=?chessboard.GetChessModel(coord.x?coord.y);
int?aliveThree?=?0?four?=?0;
int?value?=?0;

for?(auto?model?:?models)
{
if?(model?==?FiveLine)
{
return?Evaluate(model);
}
else?if?(model?==?AliveThree)
{
aliveThree++;
}
else?if?(model?==?AliveFour?||?model?==?SleepFour)
{
four++;
}
else?if?(model?==?OverLine)
{
if?(gameRule_.IsEnableOverline())
{
return?Evaluate(FiveLine);
}
return?-1;
}
value?+=?Evaluate(model);
}
if?(GetChess()?==?Chess_Black)
{
if?(aliveThree?>=?2?&&?gameRule_.IsEnableDoubleThree()?==?false)
{
return?-1;
}
else?if?(four?>=?2?&&?gameRule_.IsEnableDoubleFour()?==?false)
{
return?-1;
}
}
return?value;
}



Coord?AI::GetInputCoord(const?Chessboard?&?chessboard)?const
{
Chessboard?newChessboard?=?chessboard;
if?(chessboard.GetChessCount()?==?0)
{
int?centerPos?=?chessboard.GetSize()?/?2;
return?{?centerPos?centerPos?};
}
int?bestWeight?=?INT_MIN;
Coord?bestCoord{?-1?-1?};
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
if?(chessboard.GetChess(j?i)?==?0?&&?chessboard.HasNeighbor(j?i?1))
{
Coord?coord{?j?i?};
//假設己方落子?計算進攻分數
newChessboard.SetGrid(GetChess()?j?i);
int?attackScore?=?EvaluatePoint(newChessboard?coord);

//假設敵方落子?計算防守分數
newChessboard.SetGrid(-1?*?GetChess()?j?i);
int?defenseScore?=?EvaluatePoint(newChessboard?coord)?-?1; //進攻的優先級大于防守?所以減1

//還原棋盤
newChessboard.SetGrid(0?j?i);

if?(attackScore?+?defenseScore?>?bestWeight)
{
bestWeight?=?attackScore?+?defenseScore;
bestCoord?=?coord;
}
else?if?(attackScore?+?defenseScore?==?bestWeight)
{
//如果是黑棋?優先進攻
if?(GetChess()?==?Chess_Black?&&?attackScore?>?defenseScore)
{
bestCoord?=?coord;
}
}
}
}
}
return?bestCoord;
}




?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-01?15:39??Gomoku\
?????目錄???????????0??2018-12-01?15:38??Gomoku\Gomoku\
?????文件????????1432??2018-11-28?21:14??Gomoku\Gomoku.sln
?????文件????????2689??2018-12-01?14:52??Gomoku\Gomoku\AI.cpp
?????文件?????????630??2018-12-01?13:59??Gomoku\Gomoku\AI.h
?????文件??????????57??2018-11-28?22:00??Gomoku\Gomoku\Chess.cpp
?????文件?????????417??2018-11-30?12:28??Gomoku\Gomoku\Chess.h
?????文件????????5770??2018-12-01?12:48??Gomoku\Gomoku\Chessboard.cpp
?????文件????????2576??2018-12-01?12:48??Gomoku\Gomoku\Chessboard.h
?????文件????????4112??2018-12-01?15:37??Gomoku\Gomoku\Game.cpp
?????文件????????1071??2018-12-01?15:33??Gomoku\Gomoku\Game.h
?????文件????????1472??2018-12-01?09:21??Gomoku\Gomoku\GameRule.cpp
?????文件????????1566??2018-11-30?16:06??Gomoku\Gomoku\GameRule.h
?????文件????????6443??2018-12-01?08:44??Gomoku\Gomoku\Gomoku.vcxproj
?????文件????????2046??2018-12-01?12:49??Gomoku\Gomoku\Gomoku.vcxproj.filters
?????文件?????????165??2018-11-28?21:14??Gomoku\Gomoku\Gomoku.vcxproj.user
?????文件??????????82??2018-12-01?14:01??Gomoku\Gomoku\main.cpp
?????文件?????????959??2018-12-01?15:33??Gomoku\Gomoku\Player.cpp
?????文件?????????264??2018-12-01?15:33??Gomoku\Gomoku\Player.h

評論

共有 條評論