anpera.net
http://anpera.homeip.net/phpbb3/

case Anwendung
http://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=1251
Seite 1 von 1

Autor:  Garlant [ Mo 11 Apr, 2005 18:26 ]
Betreff des Beitrags:  case Anwendung

[php]switch(e_rand(1,7)){
case 1:
output("Du bekommst einen zusätzlichen Waldkampf!");
$session[user][turns]++;
break;
case 2:
case 3:
output("Du fühlst deine Sinne geschärft und bemerkst `%ZWEI`^ Edelsteine in der Nähe!");
$session[user][gems]+=2;
//debuglog("found 2 gem from a fairy");
break;
case 4:
case 5:
output("Deine maximalen Lebenspunkte sind `bpermanent`b um 1 erhöht!");
$session[user][maxhitpoints]++;
$session[user][hitpoints]++;
break;
case 6:
case 7:
increment_specialty();
break;[/php]

Das ist ein ausschnit aus fairy1.php
Daran habe ich versucht zu ersehen wie case verwendet wird.
Leider komme ich aber irgendwie durcheinander.
switch(e_rand(1,7)) das ist warscheinlich der wechsel vom case 1 bis 7(soviel verstehe ich noch).
[php]case 1:
output("Du bekommst einen zusätzlichen Waldkampf!");
$session[user][turns]++;
break;
case 2:
case 3:[/php]
Aber wieso wird nicht bei case 2 weitergemacht, sondern noch ein case und dann der nächste Fall? :???:

Autor:  Meteora [ Mo 11 Apr, 2005 18:33 ]
Betreff des Beitrags: 

mal angenommen switch(e_rand()) ist 1,3:

case 1:
case 2:
[bla]
break;
case 3:
[bla]
break;
}

das heisst genausoviel wie:
$rand=e_rand(1,3);
if($rand == 1 && $rand == 2) [...]
else [...]

mfg

ansonsten: RFTM!
http://ch2.php.net/manual/de/control-st ... switch.php

Autor:  Garlant [ Mo 11 Apr, 2005 18:44 ]
Betreff des Beitrags: 

Ahh, gut danke.
Ich denke nun habe ich so ein wenig verstanden.
Der Rest kommt dann von selbst :wink:

Autor:  Eliwood [ Mo 11 Apr, 2005 18:59 ]
Betreff des Beitrags:  Re: case Anwendung

[php]switch ()
[/php]

In die Klammer kommt, wie oder nach was er switchen soll, z.B.
[php]switch (e_rand(1,7))
oder
switch ($_GET['op'])
oder, oder....
[/php]


Dann kommen die cases, die Fälle.
das kann so aussehen:
[php]case 1:[/php]
oder so:
[php]case "1":[/php]
oder so:
[php]case "drin":[/php]

Man kann nun ein Zufall bestimmen, wenn man kein break; macht.
D.h.
wenn e_rand 2 ist, dann "schaltet" er auf case 2:
Dann fählt er durch, weiter bis zu einem break;

HOffen konnte helfen :wink:


EDIT: Jetzt wart ihr wieder mal schneller :(

Autor:  Chaosmaker [ Mo 11 Apr, 2005 19:03 ]
Betreff des Beitrags: 

Meteora hat geschrieben:
if($rand == 1 && $rand == 2)

:nene:
||
:baeh: :D

Autor:  Garlant [ Mo 11 Apr, 2005 19:28 ]
Betreff des Beitrags: 

[php]switch (e_rand(1,10)) [/php]

also wenn ich das(die) break(s) zwischen den 10 mal case weglasse, wird es per Zufall bestimmt, habe ich das jetzt richtig verstanden?

Autor:  Meteora [ Mo 11 Apr, 2005 19:38 ]
Betreff des Beitrags: 

wagh natürlich ||

* :zack: *

Autor:  Chaosmaker [ Mo 11 Apr, 2005 20:11 ]
Betreff des Beitrags: 

Garlant hat geschrieben:
also wenn ich das(die) break(s) zwischen den 10 mal case weglasse, wird es per Zufall bestimmt, habe ich das jetzt richtig verstanden?

Nein. Dann werden nur ab dem zutreffenden case auch alle weiteren durchlaufen und nicht beim nächsten abgebrochen.

Autor:  Amerilion [ Mo 11 Apr, 2005 20:43 ]
Betreff des Beitrags: 

switch(e_rand(1,10)){
case 1:
case 2:
case 3:
case 4:
case 5:
output("Dies passier nun in 5 von 10 Fällen");
break;
case 6:
case 7:
output("Dies in 2 von 10");
break;
case 8:
case 9:
case 10:
output("Dies in 3 von 10, verstanden?");
break;
}

Autor:  Garlant [ Mo 11 Apr, 2005 20:53 ]
Betreff des Beitrags: 

Ich denke schon das ich nun verstanden habe, wie der Zufall funktioniert.
Wenn ich jetzt irgendetwas nicht weiß kann ich ja wieder fragen, aber soweit ist bei mir nun alles klar.

Autor:  Chaosmaker [ Mo 11 Apr, 2005 22:03 ]
Betreff des Beitrags: 

Vllt. nochmal als kleine "Hilfe": switch-case-Anweisungen kennen keinen Zufall. Dort wird im switch ein fester werd übergeben, der dann der Reihe nach auf Übereinstimmung mit den cases geprüft wird.
Für den Zufall sorgt ausschließlich die LoGD-eigene Funktion e_rand, die ja eine Zufallszahl liefert.

Autor:  bibir [ Sa 16 Apr, 2005 12:09 ]
Betreff des Beitrags: 

switches sind sehr maechtig...

im gegensatz zu if/elseif/else bilden sie eine sprungmarke mittels 'case'
ausserdem ist es ein block...
und bloecke werden solange durchlaufen, bis dass ihr ende erreicht wird, oder ein abbruchkommando (wie brake) kommt

[php]switch($wert){
case 1:
break;
case 2:
case 3:
break;
default:
}[/php]
sind zwar gaengig, aber moeglich ist auch folgendes:

[php]switch($wert){
case 4711:
anweisung1();
case 0815:
anweisung 2();
break;
.
.
.
}[/php]

das heisst,d ass im fall von 4711 erst die erste anweisung, dann bei 0815 die 2. anweisung durchlaufen wird...beim 2. aber nur die 2. anweisung..
udn bei allen anderen faell - aehm - ja, halt alles andere *G*


ein switch ist einem kleinen begrenzten gotos aehnlich *duck und renn*

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/