Mitenkähän saisi lukitusnapit toimimaan siten, että kehittelemässäni hedelmäpelissä jo arvotut paikat saisi pysymään kiinni. Eli ettei kysyseiseen paikkaan enää tulisi arvotuksi uutta kuvion arvoa randomina. Paikkoja on kolme ja ainakaan Tag-ominaisuudella lukitus ei toimi toivotulla tavalla. Lopputuloksena olevien kuvioiden tarkistus perustuu satunnaislukuun joka kuitenkin muuttuu kahden jälkimmmäisen kuvion kohdalla. Vaikka lukitus toimii osittain ja kuva ei muutu niin arvottuun paikkaan tulee kuitenkin uusi random-luku. Ohessa yrittämääni koodia:
srand((unsigned)time(NULL)); { for (int i=1;i<300;i++) { if(Lukitse1->Tag ==0 && Lukitse2->Tag ==0 && Lukitse3->Tag ==0) { //kaikki lukittu niin voi lunastaa voitot tai tuplata } else if(Lukitse1->Tag ==0 && Lukitse2->Tag ==0) { card3=random(i); } else if(Lukitse1->Tag ==0 && Lukitse3->Tag ==0) { card2=random(i); } else if(Lukitse2->Tag ==0 && Lukitse3->Tag ==0) { card1=random(i); } else if(Lukitse1->Tag ==0) { card2=random(i); card3=random(i); } else if(Lukitse2->Tag ==0) { card1=random(i); card3=random(i); } else if(Lukitse3->Tag ==0) { card1=random(i); card2=random(i); } else { card1=random(i); card2=random(i); card3=random(i); } }
Auttakaa nyt joku ketä on rakennellut vastaavia pelejä c++:lla.
Ensinnäkin, kooditagia kannattaa käyttää (https://www.ohjelmointiputka.net/ohje.php?tunnus=kohjeet). Toinen asia, joka on pakko mainita on se, että "ketä"-sanaa ei pidä käyttää "kuka"-sanan korvikkeena.
Itse koodista sen verran että tuo on aika räkäinen viritelmä.. nuo "cardit" kannatanee pitää taulukossa. Jotain tähän tyyliin:
class Card { public: Card() { locked = false; value = rand() % 5; } void lock() { locked = true; } void set(int v) { value = v; } bool is_locked() { return locked; } private: bool locked; int value; }; int main() { srand(time(0)); Card cards[3]; // tässä olisi itse peli, eli lukitsemisen kyselyt // yms. toiminnot. // arvotaan lukitsemattomiin arvot int not_locked = 0; for(int n=0; n<3; ++n) if(!cards[n].is_locked()) { cards[n].set(rand() % 5); ++not_locked; // lasketaan lukitsemattomien määrä } if(not_locked == 0) { // kaikki lukittu } return 0; }
Tuon i-laskurin tarkoitus jäi minulle hieman epäselväksi, siis, _onko_ sillä joku tarkoitus? ;-) Tuo ylläoleva ei siis oleva toimiva implementaatio, pikainen viritelmä vain. Noin se kuitenkin olisi paljon järkevämpi toteuttaa niin pääset eroon tuosta if-rykelmästä.
EDIT: laaksosen kooditagi punkittelee niin muutin tuon silmukan muuttujan n:ksi. Alunperin oli c, jostain syystä lopullisessa viestissä se näkyi tähän tyyliin:
if(!cards[koodic].is_locked())
Outoa? ;-)
lainaus:
EDIT: laaksosen kooditagi punkittelee niin muutin tuon silmukan muuttujan n:ksi. Alunperin oli c, jostain syystä lopullisessa viestissä se näkyi tähän tyyliin:
Hmm...olin laittanut koodic-tagin aliakseksi pelkän c-tagin, joka sitten sekoittui tuohon taulukkoon. Kun tagille ei löytynyt vastaparia, skripti tyytyi muuttamaan sen "oikeaksi". Outo tapaus muttei selittämätön. ;) Nyt tämä alias on kuitenkin otettu pois käytöstä vastaavien ongelmien välttämiseksi.
lainaus:
Toinen asia, joka on pakko mainita on se, että "ketä"-sanaa ei pidä käyttää "kuka"-sanan korvikkeena.
Itse koodista sen verran että tuo on aika räkäinen viritelmä..
Kaikki nyt eivät ole guruja jo syntyessään, joten jostain se on kai aloitettava..Ja kieliopillisiin kommentteihin en viitsi edes ottaa kantaa..Kiitos kuitenkin ;)
lainaus:
Kaikki nyt eivät ole guruja jo syntyessään, joten jostain se on kai aloitettava..
Saaneen korjata: kukaan ei ole guru syntyessään. Älä toki ota tuota räkäistä viritelmää loukkauksena, tuollaisiahan meistä jokainen on joskus vääntänyt ;-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.