Rock, Paper, Scissors에 대한 통계 기반 'AI'시스템은 DB를 사용하여 플레이어가 가장 일반적으로 다음에 던지는 것을 저장합니다. 특정 패턴의 던졌습니다. 아래에 표시된 방법으로 데이터베이스에 저장됩니다. (위 그림 참조)PHP 로직 어시스턴트 (배열에서 가장 높은 값 선택/일치하면 무작위로 선택)
ThrowHistory - [[Player Throws],[AI Throws]] (JSON Encoded Array) | Rock | Paper | Scissors
[["Paper","Scissors","Paper"],["Rock","Paper","Rock"]] | 4| 3| 4
DB에 표시되는 정보를 사용하여, 나는 바위, 종이, 가위 필드의 가장 높은 값을 얻고 (가장 일반적인 던져 쇼) 필드 이름을 반환해야합니다. 위의 예에서와 같이 가장 높은 값이 2/3 필드에있는 경우 무작위로 선택해야하므로이 경우 무작위로 바위와 가위를 선택해야합니다.
내가 현재 사용하는 코드는 다음과 같습니다
그러나$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