Allegro, Black Jack, neki bagovi

Allegro, Black Jack, neki bagovi

offline
  • Pridružio: 27 Nov 2010
  • Poruke: 37

Napravio sam igricu Black Jack u C jeziku koristeci Allegro biblioteke. Programiran u Ubuntu 10.10 koristeci CodeBlock 10.05.
Citav mehanizam radi kako treba. Sad postoji par bagova koje ne znam da otklonim.

1. Trokiranje misa.
Mis zablokira samo onda kada na redu dodju da se izvrsavaju komande readkey() i wait(1).
readkey() koristim za unos broja (odgovarajuce sume novca sa kojom zelim da se kladim).
newkey = readkey(); newkey = (newkey >> 8) - 27; if((newkey >= 0) && (newkey <= 9)) {      numarray[k] = newkey;      textprintf_ex(buffer,font,num_x,380,makecol(255,255,0), -1, "%d", numarray[k]);      blit(buffer, screen, 0, 0, 0, 0, wX, wY);      num_x += 8;      k++;     } Ovo radi tako da reaguje samo na brojeve od 0 - 9. Kada pritisnem bilo koji taster program uzima vrijednost toga tastera preko readkey() i smjesta u varijablu newkey. Taj broj koji ja dobijem je 7000 i nesto (programiram na Ubuntu 10.10 pa su mozda zbog toga ovi brojevi), uglavnom ja sam provalio foru da mogu pomocu newkey >> 8 - 27 da taj broj smanjim  tacno na broj tastera koji stisnem ,ako stisnem 1, taj broj se smanji na 1 a zatim taj broj memorisem u nekom nizu (array) i taj niz kasnije pretovrim u broj od cifri koje on sadrzi... (nije toliko bitno kako radi, bitno je da vidite za sta koristim readkey();)

Kada porkenem program i kada dodje do dijela kada se dijele 2 karte meni i 2 karte dileru, tada sam stavio da izmedju svakog dijeljenja karte protekne jedna sekunda pomocu komande wait(1). Znaci dobijem jednu kartu, prodje jedan sekund dobijem drugu kartu... Nekako realnije izgleda nego da se odjednom stvore obje karte... Evo funkcije wait();
void wait ( int seconds ) {     clock_t endwait;     endwait = clock () + seconds * CLOCKS_PER_SEC ;     while (clock() < endwait) {} }

Da li postoji neki drugi nacin da programu kazem sacekaj jednu sekundu.

Kako mis trokira?
Kada pokrenem igru, prvo dolazi dio za unos svote novca, tada misa nema bas zbog te readkey() komande, kada zavrsim sa unosom, dolazi do dijljenja karti, u tom periodu mis samo blicne kada se zavrsi komanda wait(1); i sve tako dok se ne podijeli zadnja karta. Tada mis normalno radi, moze se vidjeti na ekranu i sve to. Kada pritisnem lijevi klik (njega sam stavio za HIT opciju - dodaj kartu) tada on zablokira jer tada isto postoji funkcija wait(1); Bez nje kada bih kliknuo pojavilo bi se milion karata, kao da sam kliknuo 1000 puta... Cim dobijem kartu, mis ponovo funkcionise kako treba... i sve tako. Kada kliknem desni klik (opcija STAY - ne zelim vise karata) dolazi na red diler, e tada stalno sve dok neko ne pobjedi se pojavljuje funkcija wait(1) i tada misa nema, zatrokira.

Ovako nesto izgleda kod:
DealCard(); wait(1); DealCard(); wait(1); DealCard(); wait(1); DealCard();   // 2 karte meni 2 dileru if(mouse & 1) { // HIT wait(1) DealCard(); ] if(mouse & 2)  { // STAY while (dealer_total < player_total) DealCard(); wait(1); }

(Samo dio koda, skracen, bez mnogo komandi, samo da se vidi na sta ciljam i kako radi mehanizam)

2. Close button in titlebar.
Takodje dok traju ove funkcije gore navedene, ne mogu da zatvorim igru na X dugme koje se nalazi u titlebar-u. U slucaju da sam ga kliknuo za vrijeme izvrsavanja ovih komandi, cim se one zavrse igrica se zatvara...

Dobro readkey mi i ne predstavlja neki problem.... Tad mi mis i nije potreban, tada unosim samo broj. Medjutim jako me nervira ovaj dio sa wait() komadnom. Da li postoji neki drugi nacin da sredim ove bagove??


To bi bilo to od bagova... (za sad).
U naprijed Hvala!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 1031 korisnika na forumu :: 41 registrovanih, 4 sakrivenih i 986 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Apok, Ben Roj, Bobrock1, BORUTUS, Centauro, Denaya, Dorcolac, draganca, dushan, esx66, Frunze, goxin, hatman, HrcAk47, kunktator, laganini123, ljuba, Lucije Kvint, mercedesamg, Metanoja, MiG-29M2, MrNo, ostoja, pein, Pohovani_00, Rakenica, RJ, ruma, sasa87, Srle993, stalja, stegonosa, vathra, virked, Vlajman1957, voja64, vukovi, YugoSlav, Zikapk, zixmix, 1107