我正在創建一個PLayer 1 vs Player 2簡單系統,並且系統僅限於30輪,如果30輪完成並且兩個玩家都還活着,那麼它是稱爲平局。如果玩家1在30輪之前獲得0或小於0並且玩家2仍然活着,那麼玩家2贏得遊戲等等...即使我已經設置了小於或等於0的值,我仍然得到了負值
問題是爲什麼我仍然有負值什麼是我的代碼錯?我已經在那裏設置了一條if語句。任何想法對我來說都將是一個很大的幫助,因爲我仍然是一名初學者程序員,所以我很樂於改進。
<?php
//Player 1
$p1Health = 100;
$p1Attack = 5;
$p1Speed = 3;
//Player 2
$p2Health = 70;
$p2Attack = 8;
$p2Speed = 5;
//Greater speed attack first
$speed1=0;
$speed2=0;
echo '<td>'.$p1Health.'</td><td>'.$p1Attack.'</td><td>'.$p1Speed.'</td>';
echo '<td>'.$p2Health.'</td><td>'.$p2Attack.'</td><td>'.$p2Speed.'</td>';
//Compare speed
if($p1Speed<$p2Speed){
$speed1=1; //start first
$speed2=0;
}
else {
$speed1=0; //start first
$speed2=1;
}
$rounds = 30; //maximum rounds
$count = 0;
while($count<=30){
if($p1Health<=0 || $p2Health<=0){ //if any of the players health is equal or below zero loop stop and declare winner
break;
}
else if($speed1==1){
$p2Health = $p2Health - $p1Attack;
echo 'Player 2 damaged by '.$p1Attack.' points.Health points left: '.$p2Health.'<br>';
//turn to other player to attack
$speed1=0;
$speed2=1;
}
else if($speed2==1){
$p1Health = $p1Health - $p2Attack;
echo 'Player 1 damaged by '.$p2Attack.' points.Health points left: '.$p1Health.'<br>';
//turn to other player to attack
$speed1=1;
$speed2=0;
}
$count++;
}
if($p1Health>0 && $p2Health<=0){
echo 'Player 1 wins the battle';
}
else if($p2Health>0 && $p1Health<=0){
echo 'Player 2 wins the battle';
}
else if($p1Health>0 && $p2Health>0){
echo 'Battle draw';
}
?>
我不知道,如果我的代碼是正確的,但是這是基於對我的理解任何想法,以改善這將是真正對我來說是很大的幫助。
我不確定我明白你在問什麼。遊戲結束後你會得到錯誤的最終遊戲狀態嗎? – Erik
我會使用'echo'語句慷慨地檢查代碼中不同部分的所有變量的值。這樣,當這些值做了你不指望的事情時,你可以看到它發生了什麼。 – John
後續工作:看起來您已經在代碼的某些部分執行此操作。它告訴你什麼?也許在你的問題中顯示遊戲的輸出? – John