コード例 #1
0
ファイル: run.go プロジェクト: jwowillo/mancalai
// Run runs n mancala.Games where agent1 plays as player 1 against agent 2 who
// plays as player 2.
func Run(
	agent1Constructor, agent2Constructor ai.AgentConstructor,
	n int,
) *Result {
	result := NewResult(agent1Constructor(), agent2Constructor())
	for i := 0; i < n; i++ {
		result.add(
			mancala.FinishGame(
				agent1Constructor(),
				agent2Constructor(),
			),
		)
	}
	return result
}
コード例 #2
0
ファイル: example_test.go プロジェクト: jwowillo/mancalai
func Example() {
	result := mancala.FinishGame(ExamplePlayer{}, ExamplePlayer{})
	fmt.Println(result)
	// Output:
	// 5  4  3  2  1  0
	//          <----------------
	// Player 1  0  0  0  0  0  1
	//           0  0  0  0  0  5 Player 2
	//          ---------------->
	//           0  1  2  3  4  5
	//
	// Player 1 Score: 15
	// Player 2 Score: 27
	//
	// Result of last move:
	// Last move: 4
	// Move count: 84
}
コード例 #3
0
ファイル: game_test.go プロジェクト: jwowillo/mancalai
// TestFinishGame tests that mancala.FinishGame returns the mancala.Result from
// the  beginning of a mancala.Game described by a shortPlayer.
func TestFinishGame(t *testing.T) {
	t.Parallel()
	player1 := newShortPlayer(mancala.Player1)
	player2 := newShortPlayer(mancala.Player2)
	actual := mancala.FinishGame(player1, player2)
	expected := mancala.NewResult(
		player1.expectedBoard(),
		player1.expectedWinner(),
		player1.expectedMoveCount(),
		player1.expectedLastMove(),
		nil,
	)
	if actual != expected {
		t.Errorf(
			"FinishGame(\n\t%v, \n\t%v,\n) = \n%v, want \n%v",
			player1,
			player2,
			actual,
			expected,
		)
	}
}
コード例 #4
0
ファイル: benchmark_test.go プロジェクト: jwowillo/mancalai
// BenchmarkMancala runs 10000 Oware games with fastPlayers.
//
// The benchmark should be used to profile the platform. The goal after
// profiling will be to reduce memory allocations and decrease run time.
func BenchmarkMancala(b *testing.B) {
	for i := 0; i < 10000; i++ {
		mancala.FinishGame(fastPlayer{}, fastPlayer{})
	}
}