Cykly a podmienky k nim

    Share

    QWER
    Znalec

    Posts : 60
    Join date : 28.04.2011

    Cykly a podmienky k nim

    Odoslať pre QWER za Š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
    avatar
    ylleron
    Admin

    Posts : 82
    Join date : 26.04.2011

    Re: Cykly a podmienky k nim

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

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


    _________________
    Pripravujeme SexyCity
    * Sofistikovaný Gamemode s pokrocilimi funkciami a moznostami
    * Profesionalny administracni tym, ktory je vybrany s najlepsich hracov

      Práve je Po október 22, 2018 7:52 am