Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> skrypty atakow typu gry ogae, potrzebuje wprowadzic ataki do gierki podobnej do ogame
Masakrator
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.06.2007

Ostrzeżenie: (0%)
-----


elo (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) mam problem nie wiem jak wprowadzic ataki w gierce potrzebowl bym gotowego skryptu do gry takiego typu www.ogame.pl jak ktos by cos na ten temat wiedzial prosil bym o kontakt na gg 5810292 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) z gory dziekuje (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
L_Devil
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


"XGame"
"Uni1"
"Ochrona ciot"
(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Jestem pod wrażeniem (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)

Żeby napisać skrypt ataku, musisz po pierwsze zdać sobie sprawę czym on jest - a jest niczym innym jak matematycznym wzorem, które przyjmuje pewne dane wejściowe (np. siłę dwóch flot) i wypluwa dane wyjściowe (która strona wygrała, jakie poniosła straty). Nikt tego nie zrobi za ciebie, musisz sam wykombinować tzw. algorytm. Kiedyś podszedłem do tego problemu czysto teoretycznie (chciałem komuś wyjaśnić na przykładzie bitwy kosmicznej projektowanie obiektowe (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) i wymyśliłem takie coś: (Oczywiście jest to przerost formy nad treścią (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )
  1. <?php
  2.  
  3. /* Statek kosmiczny: */
  4.  
  5. class starship
  6. {
  7. var $health;
  8. var $weapon_power;
  9. };
  10.  
  11. /* Pole bitwy: */
  12.  
  13. class battlefield
  14. {
  15. var $starships; // wszystkie zaangażowane statki kosmiczne
  16. function add_starship($starship, $side)
  17. {
  18. $this->starships[$side][] = $starship;
  19. }
  20. function do_battle()
  21. {
  22. $current_ship = array(); // do oznaczania, który z nich się aktualnie rusza
  23. $count = 0;
  24. $total_sides = count($this->starships);
  25. while(true)
  26. {
  27. $count ++ ;
  28. if($count>100)
  29. return "Bitwa nieroztrzygnięta";
  30. print "Początek rundy<br />";
  31. for($i=0; $i<$total_sides; $i++)
  32. {
  33. if(!isset($this->starships[$i]))
  34. continue;
  35. if(count($this->starships)==1)
  36. {
  37. return "Raport z bitwy. Zwycięzka strona: " . $i . ", ocalało " . count($this->starships[$i]) . " statków";
  38. }
  39. print "Tura " . $i . '<br />';
  40. $current_ship[$i]++;
  41. if(!isset($this->starships[$i][$current_ship[$i]]))
  42. {
  43. $current_ship[$i] = 0;
  44. }
  45. $rand = $i;
  46. while($rand==$i && isset($this->starships[$rand]))
  47. $rand = rand(0, count($this->starships)-); // wybieramy losową cudzą floty
  48. $id = rand(0, count($this->starship[$rand])-1); // losowy cel z określonej wyżej cudzej floty
  49. $this->starships[$rand][$id]->health -= ($this->starships[$i][$current_ship[$i]]->weapon_power*rand(50, 150)/100); // dodamy trochę losowości
  50. echo "Celem jest flota " . $rand . " i statek o id " . $id . ", który ma jeszcze " . $this->starships[$rand][$id]->health . " punktów życia<br />";
  51. if($this->starships[$rand][$id]->health<=0)
  52. { 
  53. echo "Statek zestrzelony<br />";
  54. unset($this->starships[$rand][$id]);
  55. if(count($this->starships[$rand])==0)
  56. {
  57. unset($this->starships[$rand]);
  58. }
  59. else
  60. {
  61. $temp = array();
  62. foreach($this->starships[$rand] as $key => $value)
  63. {
  64. $temp[] = $value;
  65. }
  66. $this->starships[$rand] = $temp;
  67. }
  68. }
  69. }
  70. }
  71. }
  72. };
  73.  
  74. /* Jakieś przykładowe dane: */
  75.  
  76. $battlefield = new battlefield;
  77. $enterprise = new starship;
  78. $enterprise->health = 500;
  79. $enterprise->weapon_power = 150;
  80. $battlefield->add_starship($enterprise, 0);
  81. $borg_sphere = new starship;
  82. $borg_sphere->health = 750;
  83. $borg_sphere->weapon_power = 125;
  84. $battlefield->add_starship($borg_sphere, 1);
  85. $result_of_battle = $battlefield->do_battle();
  86. die($result_of_battle);
  87.  
  88. ?>


Wynik tego skryptu wygląda podobnie do tego:

Kod
Początek rundy
Tura 0
Celem jest flota 1 i statek o id 0, który ma jeszcze 607.5 punktów życia
Tura 1
Celem jest flota 0 i statek o id 0, który ma jeszcze 430 punktów życia
Początek rundy
Tura 0
Celem jest flota 1 i statek o id 0, który ma jeszcze 525 punktów życia
Tura 1
Celem jest flota 0 i statek o id 0, który ma jeszcze 295 punktów życia
Początek rundy
Tura 0
Celem jest flota 1 i statek o id 0, który ma jeszcze 412.5 punktów życia
Tura 1
Celem jest flota 0 i statek o id 0, który ma jeszcze 142.5 punktów życia
Początek rundy
Tura 0
Celem jest flota 1 i statek o id 0, który ma jeszcze 237 punktów życia
Tura 1
Celem jest flota 0 i statek o id 0, który ma jeszcze -8.75 punktów życia
Statek zestrzelony
Początek rundy
Raport z bitwy. Zwycięzka strona: 1, ocalało 1 statków
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 17:45