0
我爲Rock,Paper,Scissors創建了一個基於統計的'AI'系統,它使用數據庫來存儲下一個最常拋出的玩家投擲的具體模式。它們以下面顯示的方式存儲在數據庫中。PHP邏輯協助(選擇陣列中的最高值/隨機選擇是否匹配)
ThrowHistory - [[Player Throws],[AI Throws]] (JSON Encoded Array) | Rock | Paper | Scissors
[["Paper","Scissors","Paper"],["Rock","Paper","Rock"]] | 4| 3| 4
使用在數據庫中顯示的信息(如上圖所示),我需要得到的,石頭,剪刀領域的最高值,並返回字段名(以顯示最常用的擲)。如果像上面的例子那樣,最高值是在兩個/三個字段中,它們需要在它們之間隨機選擇,所以在這種情況下,它必須在Rock和Scissors之間隨機選擇。
我目前使用的代碼是:
$StrQuery = "SELECT Rock, Paper, Scissors FROM tblThrows WHERE ThrowHistory = ?";
$StrThrowHistory = json_encode($_SESSION["ThrowHistory"]);
if ($statement = TF_Core::$MySQLi->DB->prepare($StrQuery)) {
$statement->bind_param('s', $StrThrowHistory);
$statement->execute();
$results = $statement->get_result();
$row = $results->fetch_assoc();
$LstThrowNumbers = array("Rock" => $row["Rock"], "Paper" => $row["Paper"], "Scissors" => $row["Scissors"]);
}
if(count(array_unique($LstThrowNumbers)) != 1){
return array_search(max($LstThrowNumbers), $LstThrowNumbers);
}
else{
$LstOutcomes = array("Rock", "Paper", "Scissors");
$IntPredictedThrow = rand(0, 2);
return $LstOutcomes[$IntPredictedThrow];
}
然而,這段代碼似乎沒有工作(沒有錯誤只是跳到別的),這樣即使它沒有它不是一個完美的解決方案,因爲它會在所有3個選項中隨機選擇,而不是兩個最高值。所以我需要找出一個新的解決方案,但是這是我擺脫了簡單的想法。有什麼建議麼?謝謝。
謝謝,已經完美。 –
@ThomasSmyth沒問題,很高興我能幫到你 – Steve