Anonymní profil Nayram – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Nayram – Programujte.comAnonymní profil Nayram – Programujte.com

 

Příspěvky odeslané z IP adresy 62.197.243.–

Nayram
PHP › Problém s array a while loopom
12. 2. 2015   #199196

Ja sa snažím pochopiť len ako má fungovať ten script a ako by to malo byť naprogramované, tieto moderné záležitosti momentálne idú bokom aj keď viem že ma časom dobehnú taktiež

Nayram
PHP › Problém s array a while loopom
12. 2. 2015   #199194

Zdravím, robím si vo volnom čase menší bojový skript ktorý vyberie z databazy jednotky ktoré su schopné bojovať a vykoná boj.
Jedna sa o jednoduchu tabulku /id/populacia jednotiek/hp jednotky/obrana/rychlost/sila
Pokiaľ sa jednalo o boj hráč vs hráč, bolo to naprogramovanie jednoduché, avšak pri vačšom počte jednotiek mi to robí problém a neviem prísť na správne riešenie. Niečo čo mám hotové je ukázane dole. V podstate sa jedná o to že chcem vypísať do pola všetky priradené jednotky, a vypísať ich tolko krát kolko je daná populácia v tabulke. To isté aj u protivníka, a potom vykonať útok pomocou rand_array ktorý vyberie nahodnu jednotku z jedneho pola, a nasledne z druhého a začne sa "súboj" avšak na som na to prikrátky. Bol by som rád za nejaké nasmerovanie alebo aspoň malú radu ako na to lebo dochádzajú mi nápady...
(kvalitu kodu samozrejem nehodnotiť, je to len čisto koncept)
 

$query_units_info = mysql_query("SELECT * FROM game_army_units_attacking WHERE army_attack = '".$_GET['id']."' AND army_enabled = 1");
   while (($unitsinfo = mysql_fetch_assoc($query_units_info)) != NULL) {
   $query_unit_info = mysql_query("SELECT * FROM game_army_class WHERE army_class_id = '".$unitsinfo['army_class_id']."' ");
   $unit = mysql_fetch_assoc($query_unit_info);
   $x = 1;
   while($x <= $unitsinfo['army_population']) {
   $players_attacker = array(array('attack' => $unitsinfo['army_power'], 'defense' => $unitsinfo['army_def'], 'health' => $unitsinfo['army_power']));
   $x++;
     
} 
  } 



   $query_units_info = mysql_query("SELECT * FROM game_army_units WHERE street_user = '".$row_street['attack_defender']."' AND army_enabled = 1");
   while (($unitsinfo = mysql_fetch_assoc($query_units_info)) != NULL) {
   $query_unit_info = mysql_query("SELECT * FROM game_army_class WHERE army_class_id = '".$unitsinfo['army_class_id']."' ");
   $unit = mysql_fetch_assoc($query_unit_info);
   $x = 1;
   while($x <= $unitsinfo['army_population']) {
   $players_defender =  array(array('attack' => $unitsinfo['army_power'], 'defense' => $unitsinfo['army_def'], 'health' => $unitsinfo['army_power']));
   $x++;
} 
  } 



$count = 0;
while (true) {
  $count++;
  $players_temp = $players;
  $attacker_key = array_rand($players);
  $attacker     =& $players[$attacker_key];
  unset($players_temp[$attacker_key]);
  $defender_key = array_rand($players_temp);
  $defender     =& $players[$defender_key];

  $hit = ($attacker['attack']/$defender['defense']) + rand(1, $attacker['level']);
  echo "{$count}. Jednotka {$defender_key} ({$defender['health']} hp) bola zranená a dostala {$hit} zranenia jednotkou {$attacker_key} ({$attacker['health']} hp)\n";
  $defender['health'] = $defender['health'] - $hit;

  if ($defender['health'] <= 0) {
    echo "Jednotka {$defender_key} umrela, jednotka {$attacker_key} vyhrala!\n";
    break;
  }

}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý