Page 1 of 1

Pagalbos [Logikos]

Posted: 2013 Jul 04 12:17
by InvIs
Sveiki, reikėtų šiokios tokios pagalbos su kodo logiškumu, galbūt kažkokį lengvesnį variantą, nes kartais ilgokai ieško ir nepataiko niekaip :D


Tarkim yra:

Code: Select all

new zinute[33][30]
Vidury, parodžius žinutę

Code: Select all

zinute[id][rnd] = true;
Toliau, prieš parodant žinutę, tokiu būdu tikrinu ar tą žinutę jau rodė:

Code: Select all

while(zinute[id][rnd] == true)  rnd = random(29)
Kartais veikia, bet kartais gana ilgai užtrunka, kol suranda, nes jei parodytos 29 žinutės, ilgokai ieško to paskutinio.

Galbūt yra koks lengvesnis variantas tikrinti kintamuosius, kurie jau kartojos? Ačiū

Re: Pagalbos [Logikos]

Posted: 2013 Jul 04 12:33
by hleV

Code: Select all

rnd = GetRandomAvailableRound(id);

Code: Select all

GetRandomAvailableRound(id){    new availableRounds[sizeof(zinute[])], roundCount;        for (new i; i < sizeof(availableRounds); i++)    {        if (!zinute[id][i])            availableRounds[roundCount++] = i;    }        switch (roundCount)    {        case 0: return -1;        case 1: return availableRounds[0];    }        return availableRounds[random(roundCount)];}

Re: Pagalbos [Logikos]

Posted: 2013 Jul 04 12:50
by InvIs
Na, sakau, neveltui HleV! AČIŪ :)