本文整理汇总了C#中IPlayer.MakeMove方法的典型用法代码示例。如果您正苦于以下问题:C# IPlayer.MakeMove方法的具体用法?C# IPlayer.MakeMove怎么用?C# IPlayer.MakeMove使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPlayer
的用法示例。
在下文中一共展示了IPlayer.MakeMove方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MinmaxTest
public static void MinmaxTest(IPlayer white, IPlayer black)
{
int wynik = 0, wht = 0, draw = 0, blc = 0, total = 0;
int size = 100;
Move m;
for (int i = 0; i < size; i++)
{
// int now = DateTime.Now.Second;
bool kto = true;
Plansza p = new Plansza();
p.rozpoczecie();
wynik = 0;
while ((wynik = p.GameEnded()) == 2)
{
if (kto)
{
m = white.MakeMove(p, 1);
if (m == null)
{
wynik = 1;
break;
}
}
else
{
m = black.MakeMove(p, 2);
if (m == null)
{
wynik = -1;
break;
}
}
p.ExecuteMove(m);
kto = !kto;
}
switch (wynik)
{
case -1:
wht++;
break;
case 0:
draw++;
break;
case 1:
blc++;
break;
default:
break;
}
// Console.WriteLine(wynik + " \t" + (DateTime.Now.Second-now) + " sec.");
total++;
}
Console.WriteLine(white.MyName() + ":\t" + wht);// + "," + Math.Round(((double)wht/(double)total * 100.0), 2));
Console.WriteLine("remis:\t" + draw);
Console.WriteLine(black.MyName() + ":\t" + blc);// + "," + Math.Round(((double)blc / (double)total * 100.0), 2));
Console.WriteLine();
}
示例2: GameWindow
internal GameWindow(Board board)
: this()
{
this.board = board;
player0 = board.CurrentPlayer;
player1 = board.OpposingPlayer;
p0Series.ItemsSource = p0Points;
p0Series.Title = player0.Name;
p1Series.ItemsSource = p1Points;
p1Series.Title = player1.Name;
ShowBoard();
moveWatch = Stopwatch.StartNew();
if (!(board.CurrentPlayer is HumanPlayer))
player0.MakeMove(board, null, Move);
}
示例3: TestFunction
public static void TestFunction(int size, IPlayer white, IPlayer black)
{
StreamWriter sw = new StreamWriter("final_test.csv", true, System.Text.Encoding.UTF8);
int wynik = 0, wht = 0, draw = 0, blc = 0, total = 0;
Move m;
for (int i = 0; i < size; i++)
{
// int now = DateTime.Now.Second;
bool kto = true;
Plansza p = new Plansza();
p.rozpoczecie();
wynik = 0;
while ((wynik = p.GameEnded()) == 2)
{
if (kto)
{
m = white.MakeMove(p, 1);
if (m == null)
{
wynik = 1;
break;
}
}
else
{
m = black.MakeMove(p, 2);
if (m == null)
{
wynik = -1;
break;
}
}
p.ExecuteMove(m);
kto = !kto;
}
switch (wynik)
{
case -1:
wht++;
break;
case 0:
draw++;
break;
case 1:
blc++;
break;
default:
break;
}
// Console.WriteLine(wynik + " \t" + (DateTime.Now.Second-now) + " sec.");
total++;
}
sw.WriteLine(white.MyName() + "," + black.MyName() + "," + (double)wht / (double)total * 100.0 + "," + (double)draw / (double)total * 100.0 + "," + (double)blc / (double)total * 100.0 + "," + total);
sw.Close();
}
示例4: ConstructGame
void ConstructGame(Action<IGame> gameOverHandler, IPlayer someIPlayer, IPlayer someOtherIPlayer, IPlayer firstIPlayer)
{
GameOverEvent += gameOverHandler;
Board = new IPlayer[BoardWidth, BoardLength];
SomePlayer = someIPlayer;
SomeOtherPlayer = someOtherIPlayer;
NextPlayer = firstIPlayer;
NextPlayer.MakeMove(this);
}
示例5: MakeMove
private void MakeMove(IPlayer player)
{
if (delayInSeconds != 0)
{
Thread.Sleep(1000 * delayInSeconds);
}
var player1Move = player.MakeMove(board);
CheckMove(player1Move);
board.SetPosition(player1Move.Item1, player1Move.Item2, player.GetCharacterType());
CheckForWinner();
}