Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

PHP Algorytm walki


Rekomendowane odpowiedzi

Opublikowano

Witam. Tworzę prosty algorytm walki.

W pętli chciałbym to jakoś zrobić, by przestało "atakować" gdy będzie zero.

Warunek pętli mam, algorytm ataku też. Ale jak zrobić w pętli by jakoś wykonywało te działanie dopóki nie będzie 0.

 

Próbowałem coś typu $user_walka - 10 ale nie idzie

 

 

$user1_walka = - $user1_atak * 10/$user1_zrecznosc + $user2_obrona + $user2_zycie;
$user2_walka = - $user2_atak * 10/$user2_zrecznosc + $user1_obrona + $user1_zycie;


while($user1_walka <= 0) {


}

Opublikowano

Nie. W user walka mam uwzględnione życie. Jeśli z działania walki będzie 0 to wtedy zabraknie życia.

<?php

session_start();

ob_start();

include "connect.php";

 

if($_SESSION['login']) {

 

 

//Moja postać

$user = $_SESSION['login'];

 

$zapytanie = mysql_query("SELECT * from users WHERE login = '$user'");

while($uti = mysql_fetch_assoc($zapytanie)) {

 

$user1_zycie = $uti['zycie'];

$user1_atak = $uti['atak'];

$user1_obrona = $uti['obrona'];

$user1_zrecznosc = $uti['zrecznosc'];

 

 

 

}

 

 

 

$formularz = '

<form action="?uti=attack" method="post">

<label>Login: </label><input type="text" name="login"><br />

<input type="submit" name="submit" value="Atakuj!"><br />

</form>';

 

$login = htmlspecialchars(addslashes($_POST['login']));

 

 

 

if(isset($_POST['submit'])) {

 

if($login == $user) {

echo 'Nie możesz atakować samego siebie..';

} else {

 

 

 

//Przeciwnik

$zapytanie = mysql_query("SELECT * from users WHERE login = '$login'");

while($uti = mysql_fetch_assoc($zapytanie)) {

 

//Statystyki przeciwnika

$user2_zycie = $uti['zycie'];

$user2_atak = $uti['atak'];

$user2_obrona = $uti['atak'];

$user2_zrecznosc = $uti['atak'];

 

}

 

$user1_walka = - $user1_atak * 10/$user1_zrecznosc + $user2_obrona + $user2_zycie;

$user2_walka = - $user2_atak * 10/$user2_zrecznosc + $user1_obrona + $user1_zycie;

 

 

while($user1_walka <= 0) {

 

 

}

 

echo $user1_walka.'<br>';

echo $user2_walka.'<br>';

 

 

}//Nie możesz atakować

 

} else {

echo $formularz;

}

 

 

 

 

 

 

 

 

 

 

//Wyświetlanie użytkowników

$zapytanie = mysql_query("SELECT * from users ORDER BY id DESC");

while ($uti = mysql_fetch_assoc($zapytanie)) {

echo 'Nick: '.$uti['login'].'<br />';

}

 

 

 

 

 

 

//Jeśli nie zalogowany

} else {

header("Location: login.php");

}

 

 

?>

Opublikowano

Nie za dobrze wiem tu co i jak ,ale powiem ci co masz zrobić :

1. Stwórz nieskończoną pętlę :

$i = 1;
for($i>0;$i <=2;) {
//Kod walki
}

2. W pętli rób atak. i wszystkie obliczania itd.

3. Na końcu pętli sprawdzasz czy ,któryś z nich ma HP poniżej lub równe 0

4. Jeśli tak to rób co chcesz tylko na końcu tego ifa sprawdzającego HP daj :

break;

Bo ci upłynie czas i nic się nie stanie. A tak to skończy się pętla i będzie okey ;)

Opublikowano

Wole używać while. Zaraz spróbuję tak jak mówisz. Na razie dzięki.

 

Nie śmiga

 

 

while($user1_walka <= 0) {

$user1_walka = - $user_atak * 100/$user_zrecznosc + $user2_obrona + $user2_zycie;
$user2_walka = - $user2_atak * 100/$user2_zrecznosc + $user_obrona + $user_zycie;

if($user1_walka <= 0) {
echo $user1_walka;

} else {
echo 'nie';
}
break;

}

Opublikowano

A wyświetla ci ciągle 'nie' ta ?

Jak ciągle nie to błąd jest tu :

$user1_walka -= $user_atak * 100/$user_zrecznosc + $user2_obrona + $user2_zycie;
$user2_walka -=  $user2_atak * 100/$user2_zrecznosc + $user_obrona + $user_zycie;

Ew. spróbuj taki zapis.

Opublikowano

Ok, teraz śmiga. Tylko nie do końca. Dziwny wynik: -1418 -1700

Czyli jest wynik tylko na minusie

 

A może jakoś inaczej da się to zrobić?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...