Szerző Téma: Switch használata  (Megtekintve 1886 alkalommal)

Nem elérhető Mokus

  • 608
    • Profil megtekintése
Switch használata
« Dátum: 2012. november 11. - 23:36:18 »
0 Show voters
Sziasztok szeretném kérdezni hogy hogy kell használni a switch elágazást random dolgokra például random üzenet/random pénz egy kis le írást adna valaki a használatáról stb...Elõre is köszönöm egy kis leírás/tutorialt köszönöm

Switch használata
« Válasz #1 Dátum: 2012. november 11. - 23:45:33 »
0 Show voters
SWITCH valójában nem is függvény, csak egy szelekció (elágazás), lényegében mondhatjuk, hogy IF-ek sorozatának rövidítése.
 
    switch(var){
        case 0: cmd1();
        case 1: cmd2();
        case 2: cmd3();
        default: cmd4();
    }

 
Ugyanazt jelenti, mintha ezt írtad volna:
 

    if (var == 0) cmd1();
    else if (var == 1) cmd2();
    else if (var == 2) cmd3();
    else cmd4();

 
Részletesebben:
Hogy ez mit is jelent. Tegyük fel, hogy van egy változód, például
   
new skin;

 
ebbe a változóba kérjük is le a játékos skinjét:
 

    skin = GetPlayerSkin(playerid);

 
Most ugye a skin változóban benne van egy szám, ami alapján meg tudjuk mondani a játékos kinézetét. Tegyük fel, hogy mi most le szeretnénk azt ellenõrizni, hogy a játékos a BUSZ_SKIN-el vagy a RENDOR_SKIN-el vagy a CIVIL_SKIN-el van-e.
Ilyenkor jön a \"kezdõ pawner\", hogy dicsak ez kiönnyû, van itt nekünk if-ünk! Lássuk hogy is néz ki:
 
  if(skin == BUSZ_SKIN)
    {
        // hát akkor adunk neki egy buszt
    }
    else if(skin == RENDOR_SKIN)
    {
        // hát akkor adunk neki egy jelvényt
    }
    else if(skin == CIVIL_SKIN)
    {
        // hát akkor adunk neki egy botot
    }
    else
    {
        // hát te nemtom mi vagy de kapsz egy nyalókát
    }

 
Igen ám. De kicsit sok a feltétel meg hosszú is a kód, nem? Fõleg akkor ha még hozzáadunk pár skint. Na ilyenkor jön számításba a switch..case szerkezet. Nézzük a fenti kódot átírva:
   
switch(skin)
    {
        case BUSZ_SKIN:
            // hát akkor adunk neki egy buszt
            break;
        case RENDOR_SKIN:
            // hát akkor adunk neki egy jelvényt
            break;
        case CIVIL_SKIN:
            // hát akkor adunk neki egy botot
            break;
        default:
            // hát te nemtom mi vagy de kapsz egy nyalókát
    }

 
Remélem látszik, hogy sokkal rövidebben meg lehet oldani. Minden case után írhatod az utasításokat, ám az utasítások végén egy break;-et is tenni kell, hogy ne ugorjon át a következõ case-be. A switch zárójelei közé változót tehetsz ami vagy számot vagy karaktert tárol. Tömören ennyi.

Nem elérhető Mokus

  • 608
    • Profil megtekintése
Switch használata
« Válasz #2 Dátum: 2012. november 11. - 23:50:45 »
0 Show voters
Hmm köszönöm érthetõ valaki valami hozzá fûzni való a switchrõl?

Switch használata
« Válasz #3 Dátum: 2012. november 11. - 23:54:29 »
+1 Show voters
Idézetet írta: Mokus date=1352674245\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29761\" data-ipsquote-contentclass=\"forums_Topic
Hmm köszönöm érthetõ valaki valami hozzá fûzni való a switchrõl?
 
Egy példa:
 
public OnPlayerDisconnect(playerid, reason)
{
new pName[MAX_PLAYER_NAME];
    new string[56];
    GetPlayerName(playerid, pName, sizeof(pName));
    switch(reason)
    {
        case 0: format(string, sizeof(string), \"%s elment. (Idõtúllépés)\", pName);
        case 1: format(string, sizeof(string), \"%s elment. (Kilépett)\", pName);
        case 2: format(string, sizeof(string), \"%s ki lett dobva. (Kick/Ban)\", pName);
    }
    SendClientMessageToAll(COLOR_GREEN, string);
return 1;

Nem elérhető Mokus

  • 608
    • Profil megtekintése
Switch használata
« Válasz #4 Dátum: 2012. november 12. - 00:34:51 »
0 Show voters
Értem már köszönöm adom a respectet mert szép leírást adtál nekem róla + egy példát is köszi

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal