Would you like to react to this message? Create an account in a few clicks or log in to continue.

2 posters

    Cykly a podmienky k nim

    avatar
    QWER
    Znalec


    Posts : 60
    Join date : 28.04.2011

    Cykly a podmienky k nim Empty Cykly a podmienky k nim

    Odoslať pre QWER Št máj 05, 2011 7:35 am

    Veľa ľudí nevie čo to vlastne je, len to používajú. Nazívajú to "i". Je to vlastne cyklus.

    Na čo vlastne cyklus je ?

    Určite ste chceli niečo opakovať npr, 50x ? Sú dve možnosti, buď to 50x skopírujete alebo použiť cyklus. Poznáme 2 druhy cyklov a to for & while. Plnia rovnakú úlohu, len majú iné parametre. Ukážem vám pár možností...

    kód:
    for (a; b; c)
    a = premena npr. new x
    b = podmienka, do kedy sa k premene x bude pridávať hodnota ( npr. x != 10)
    c = hodnota, ktorú bude pridávať npr. x += 10

    vužitie
    kód:
    for(new a;a != 50;a++) SCMTA(color,"ASDF");
    toto pošle 50x správu "ASDF"

    Najčastejšie vidíte takéto využitie
    kód:
    for(new i;i<MAX_PLAYERS;i++)

    stále neviete ako to funguje ? Ukážem vám pwn script, ktorý je robí tú istú funkciu ako for
    kód:
    stock for(podmienka){
    new i;
    port:
    if(i < podmienka){
    i++;
    goto port;
    }
    }

    bude to do vtedy pridávať premene i hodnotu, až kým sa nesplní podmienka.
    Presne takto funguje for...

    Môžete spraviť
    kód:

    if(IsPlayerConnected(0))GivePlayerMoney(0,500);
    if(IsPlayerConnected(1))GivePlayerMoney(1,500);
    if(IsPlayerConnected(2))GivePlayerMoney(2,500);
    if(IsPlayerConnected(3))GivePlayerMoney(3,500);
    if(IsPlayerConnected(4))GivePlayerMoney(4,500);
    if(IsPlayerConnected(5))GivePlayerMoney(5,500);
    alebo
    kód:
     
    for(new i;i < 6;i++){
    if(IsPlayerConnected(i))GivePlayerMoney(i,500);
    }

    Urobí to tú istú funkciu.

    Cyklus sa dá urobiť na VŠETKO ! Úplne.
    Ďalej okrem cyklu for je aj while, while má viac využitia, npr. bool, fread,...

    Ukážem príklad.
    kód:

    new i;
    while(i < 6){
    if(IsPlayerConnected(i))GivePlayerMoney(i,500);
    i++;
    }

    To urobí to isté ako vyššie.
    kód:
     
    new bool:a = true;
    new x;
    while(a){
    SCMTA(color,"SPAAAM");
    if(x == 1000) {
    a = false;
    }
    x++;
    }
    toto pošle 1 000x SCMTA... ono to vlastne opakuje cyklus dovtedy, pokiaľ sa hodnota x (true) nezmení na false

    Tiež má neobmedzené využitie (háčik je v tom, že to brzdia 2 veci, a to predstavivosť tvorcu a to, ako vie pawn)

    Okrem cyklov máme aj funkcie ktoré sa dajú využiť pri cykloch

    break = zastaví funkciu (cyklus)
    kód:

    for(new i;i < 500;i++){
    if(i == 250){
    break;
    }
    }
    keď bude mať premena i hodnotu 250, tak sa cyklus zastaví

    continue = pokračovať (preskočiť) npr.

    kód:

    for(new i;i < 500;i++){
    if(!IsPlayerConnected(i)) continue;
    Kick(i);
    }
    npr. keď na servery nieje hráč s id 5, tak hneď na začiatku cyklu to preskočí (vráti sa na začiatok) a pridá hodnotu, čiže bude mať hodnotu 6)

    goto... ale to som tu už ukazoval...

    To je asi všetko, ak niečomu nechápete, neváhajte ma kontaktovať.
    Dúfam že ste sa niečo naučili
    QWER
    ylleron
    ylleron
    Admin


    Posts : 82
    Join date : 26.04.2011

    Cykly a podmienky k nim Empty Re: Cykly a podmienky k nim

    Odoslať pre ylleron Št máj 05, 2011 7:38 am

    krásne náučne qwetitna!!! podarilo sa ti to Very Happy

      Similar topics

      -

      Práve je So november 23, 2024 1:54 am