Poprzedni temat «» Nastêpny temat
<! Instrukcja warunkowa "switch" !>
Autor Wiadomo¶æ
Fire Dragon 
Wymiatacz



Wiek: 32
Do³±czy³: 7020 dni temu
Posty: 710
Sk±d: jeste¶ ?

Punkty: 265
Wys³any: 2009-03-07, 22:12   <! Instrukcja warunkowa "switch" !>

Wiele osób u¿ywa instrukcji warunkowej "if", w miejsu gdzie mo¿e u¿yæ "switch". "Switch" bardzo u³atwia pracê. W przedstawiê zaraz podstawowe miejsca u¿ycia "switch'a".

| Budowa ogólna |
Kod:
switch(zmienna)
{
 case 0(...): //W momencie gdy zmienna wyniesie 0 to.
 case 1(...):
   {
       //W momencie gdy zmienna wyniesie 1 to wykonuje wiêcej ni¿ jedn± akcjê
   }
}


| Zastosowanie|

Mo¿emy "switchowaæ" wiele rzeczy. Mo¿emy zastosowaæ "switch'a" w bardzo wielu miejscach. Od playerid, a¿ do obiektów.

| Przyk³ady|

Podczas pod³±czani'a siê graczy:
Kod:
public OnPlayerConnect(playerid)
{
    switch(playerid)
    {
        case 0,3,5,7,9: SetPlayerName(playerid, "Qpa_qau");
        case 1,2,4,5,8: SetPlayerName(playerid, "Kau_twardy");
    }
return 1;
}


Gdy chcemy zrobiæ kolejno pokazuj±ce siê checkpointy:
Kod:

public OnPlayerEnterRaceCheckpoint(playerid)
{
    new zmienna[MAX_PLAYERS];
    switch(zmienna[playerid])
    {
        case 0:
        {
               SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 1:
        {
             SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 2:
        {
             SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 3:
        {
             SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 4:
        {
            print("Fire Dragon i tak wygra³");
        }
    }
    return 1;
}


Lub gdy chcemy zrobiæ nazwê skina przy skinie:
Kod:
public OnPlayerRequestClass(playerid, classid)
{
    switch(classid)
    {
        case 0: GameTextForPlayer(playerid, "tekst skina 1", 500, 3);
        case 1: GameTextForPlayer(playerid, "tekst skina 2", 500, 3);
        case 2: GameTextForPlayer(playerid, "tekst skina 3", 500, 3);
    }
    return 1;
}


| Podsumowanie|

U¿ywanie "switch'a" bardzo u³atwia pracê na pojedynczych zmiennych, czy to jest menu, czy "wybiera³ka" znajomo¶æ tej instrukcji warunkowej napewno wam siê przyda :)
 
 
     
Gesior7 
Administrator
I <3 Chiquita



Wiek: 37
Do³±czy³: 7308 dni temu
Posty: 2607
Sk±d: Bia³ystok

Punkty: 39724
Wys³any: 2009-03-15, 13:41   Re: <! Instrukcja warunkowa "switch" !>

Kod:
switch(zmienna[playerid])
    {
        case 0:
        {
               SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 1:
        {
             SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 2:
        {
             SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }
        case 3:
        {
             SetPlayerRaceCheckpoint(playerid, type, x, y, z, nextx, nexty, nexz);
               ++zmienna[playerid];
        }

Przecie wszystko to jest to samo. U¿ywaj lepiej etykiety 'default'.
Ja jeszcze chcia³em wspomnieæ o ró¿nicy miêdzy PAWN, a ANSI C. W Pawn etykieta case mo¿e mieæ wiele warto¶ci, aby siê nie powtarza³y w innych miejcach instrukcji 'switch'. Pop przej¶ciu do jednej z tych etykiet program wykonuje zadanie z zakresu, i na tym koñczy dzia³anie. W jêzyku C natomiast etykiety 'case' mog± mieæ pojedyñcze warto¶ci sta³e, a skoki do etykiet s± takie, jak przy standardowych skokach. Ca³y program w instrukcji switch êdzie wykonany w C od miejsca, w którym by³a pierwsza zgodna etykieta, wiêc, je¿eli 'switch' ma etykietê case, do któej program trafi, a za t± etykiet± bêd± nastêpne, wtedy one tak¿e zostan± wywo³ane. W PAWN dzia³a to bardziej na zasadzie pojedyñczych zakresów, taj, jakby z³o¿yæ to z pojedyñczych instrukcji 'if'. Etykieta 'default' jest domy¶ln± etykiet±, do której program w C zawsze trafi, nawet, je¿eli nie bêdzie odpowiedniej etykiety 'case'. W PAWN natomiast jest to raczej zakres, który bêdzie wykonany, je¿eli po drodze nie bêdzie napotkana ina etykieta. Default zwykle jest na koñcu instrukcji 'switch', w PAWNO jest to konieczne do prawid³owego skompilowania programu.
_________________

In ancient times some random phpbb devs programed a mystic power named: Search button.
Only the chosen ones know how to use it. ツ

 
 
     
Wy¶wietl posty z ostatnich:   
Odpowiedz do tematu
Nie mo¿esz pisaæ nowych tematów
Nie mo¿esz odpowiadaæ w tematach
Nie mo¿esz zmieniaæ swoich postów
Nie mo¿esz usuwaæ swoich postów
Nie mo¿esz g³osowaæ w ankietach
Nie mo¿esz za³±czaæ plików na tym forum
Nie mo¿esz ¶ci±gaæ za³±czników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Style created by Matej from mStyles modified by Drool
statystyka