Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%)
|
Witam , potrzebuję napisać pętle która przestanie się wykonywać w 3 warunkach , gdy zmienna $zycie1 lub $zycie2 osiagna wartosc mniejsza badz rowna 0 lub petla sie wykona 30 x i wtedy koniec.
prosił bym o pomoc z góry dziękuje.
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Twoja obecna poprawka prawie wyeliminowała problem (IMG:style_emoticons/default/smile.gif) Nie sprawdzałem nigdy wersji z wielokrotnym warunkiem sprawdzającym for więc nie wiem jak się zachowa ten z OR jaki zastosowałeś. Na pewno obecnie problem już rozwiązałeś ze zmniejszaniem życia. Wystawienie obu liczników życia poza for uczyni je globalnymi dla pętli, dzięki czemu będzie już odejmowało prawidłowo. Ja bym dla pewności owe 30 dał tam gdzie jest u ciebie OR, a owe sprawdzanie zycie1 i zycie2 za odejmowaniem. Będzie to przejrzystsze a co ważniejsze będziesz dokładnie wiedział kto zadał ostateczny cios (IMG:style_emoticons/default/smile.gif) Skąd? Od razu po odejmowaniu sprawdzasz to. Podam Ci dwa przykłady myślenia.
Gracze atakują się równocześnie: Zauważ, że tutaj nieważne jest kto atakuje w jakiej kolejności. Wynik jest liczony po zadaniu ciosów. Teraz wariant drugi, gdzie $zycie1 to życie atakującego, a $zycie2 to broniący się: Co to daje? Odpowiednik walki turowej (IMG:style_emoticons/default/winksmiley.jpg) Tak jakby przeciwnicy zadawali ciosy na zmianę (IMG:style_emoticons/default/winksmiley.jpg) Najpierw agresor, potem obrońca i tak w kółko. Ten któremu skończy się życie - przegrał. Zauważ, że rozwiążanie 1 ma jeden fajny dodatek... Może zaistnieć remis, jeśli po walce w tej samej turze obaj zejdą na życiu <= 0 (IMG:style_emoticons/default/winksmiley.jpg) Stąd jaki wariant wybierzesz tak będziesz potem kombinować musiał by to uwzględnić. A najważniejsze... Prawie sam rozwiązałeś problem życia. Licznik życia wewnątrz i na zewnątrz pętli (startowy) to powinny być te same zmienne. Wtedy nastąpi "nadpisanie" i dzięki temu będziesz miał stale aktualne wyniki życia graczy. Wynika to z zasięgu widoczności zmiennych. W innych językach programowania nie musi tak już być, gdyż wtedy na stosie istnieje zmienna lokalna o tej samej nazwie co zmienna globalna, ale dla kompa to dwie różne (IMG:style_emoticons/default/smile.gif) Wszystko zależy od języka. Ale w php akurat w więszości przypadków takie zagranie jak pokazałem przechodzi, dopóki są spełnione pewne warunki. Ale to sam doczytaj o zasięgu widoczności zmiennych w PHP, jako lektura dodatkowa. Ten post edytował thek 25.10.2009, 22:52:30 |
|
|
|
Ulysess [PHP]Pętla For 25.10.2009, 12:35:20
Spawnm break;
Czytaj kursy . 25.10.2009, 12:39:37
Ulysess [PHP] pobierz, plaintext for ($l_r = 1 ;... 25.10.2009, 13:36:45
thek Bezpieczniej byłoby zostawić te l_r < 30 jako
[... 25.10.2009, 13:57:30
Ulysess wiem właśnie że coś jest źle.. tylko jeszcze nie w... 25.10.2009, 14:41:16 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 17:54 |