Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kod jednostavne igrice

[es] :: C/C++ programiranje :: C/C++ za početnike :: Kod jednostavne igrice

[ Pregleda: 2573 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Pwnage
Nista

Član broj: 244973
Poruke: 18
*.dsl.optinet.hr.



Profil

icon Kod jednostavne igrice29.01.2010. u 13:34 - pre 173 meseci
Uglavnom igrica treba biti da se odozgore spustaju kvadratici tkz. bombeu rpogramu , a da se dole kvadratic izmice...
Nekuzim zasto nece , po meni cijeli kod valja...

Code:
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
#include <ctime>


using namespace std;

class objekt
{
  private:
  int x;  
  char kretanje;
  public:
     objekt()
     {
        x=290;
     }
     void pomak(char);
     void crtaj();
  };
   void objekt::pomak(char tipka)
    {
        kretanje=tipka;
        if(kretanje==75)
        {
          setcolor(WHITE);
          rectangle(x,432,x+60,438);
          setcolor(BLACK);
          x=x-5;    
         }
        if(kretanje==77)
        {
          setcolor(WHITE);
          rectangle(x,432,x+60,438);
          setcolor(BLACK);
          x=x+5;
          }
    }
     void objekt::crtaj() 
     {
      rectangle(x,432,x+60,438);
     }             
   class bomba
   {
    private:
         int x,y;
    public:
     bomba()
     {        
       x=(static_cast<float>(rand())/RAND_MAX)*620;
       y=-((static_cast<float>(rand())/RAND_MAX)*480);
     }
     void crtanje();
     void brisanje();
 };
void bomba::crtanje()
 {
     rectangle(x,y,(x+20),(y+5));
 }    
 void bomba::brisanje()
 {
      setcolor(WHITE);
      rectangle(x,y,(x+20),(y+5));
      setcolor(BLACK);
      y=y+5;  
      if(y>490)
      {
               y=-((static_cast<float>(rand())/RAND_MAX)*480);
               x=(static_cast<float>(rand())/RAND_MAX)*620;
      }
  }
  int main()
  {
      int gdriver=9;
      int gmode=2;
      initgraph(&gdriver,&gmode,"");
      setbkcolor(WHITE);
      setcolor(BLACK);
      cleardevice();
      
      char odgovor='d';
      srand(time(NULL));
      bomba bomba1,bomba2,bomba3;
      objekt brod;
      brod.crtaj();
      
      do
      {
           bomba1.brisanje();
           bomba2.brisanje();
           bomba3.brisanje();
           bomba1.crtanje();
           bomba2.crtanje();
           bomba3.crtanje();
           
           delay(100);
           
       if(kbhit())
       {
                  odgovor=getch();
                  
                  brod.pomak(odgovor);
       }               
        brod.crtaj();
       }
       while(odgovor!='k');
  return 0;
}


podijelim ja klase na dijelove i to ali ovako se cijeli vidi... Nekuzim kjoi dio mi promice....


[Ovu poruku je menjao Mihajlo Cvetanović dana 29.01.2010. u 15:13 GMT+1]

[Ovu poruku je menjao Pwnage dana 29.01.2010. u 16:51 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Kod jednostavne igrice29.01.2010. u 14:17 - pre 173 meseci
A kako to neće? Opiši problem.
 
Odgovor na temu

Pwnage
Nista

Član broj: 244973
Poruke: 18
*.dsl.optinet.hr.



Profil

icon Re: Kod jednostavne igrice29.01.2010. u 14:36 - pre 173 meseci
dobijem samo pravokutnik kojim mogu ici lijevo desno , navode "bombe"(kvadratici/pravokutnici) se nespustaju odozgo prema dole , pokreni program pa ces vidit...
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Kod jednostavne igrice29.01.2010. u 14:50 - pre 173 meseci
Nemam na čemu da pokrenem. Moj Microsoft Visual C++ 2003 nema funkcije initgraph, cleardevice, rectangle, setcolor, setbkcolor.

Uzgred, u konstruktoru bombe članica y dobija negativnu vrednost, a treba pozitivnu. Takođe, u funkciji bomba::brisanje ispituješ da li je y<490, a treba >. Takođe, u istoj funkciji setcolor je valjda višak, jer želiš da obrišeš pravougaonik, a ne da ga nacrtaš.
 
Odgovor na temu

Pwnage
Nista

Član broj: 244973
Poruke: 18
*.dsl.optinet.hr.



Profil

icon Re: Kod jednostavne igrice29.01.2010. u 16:05 - pre 173 meseci
Yep </> sam zeznio kod if nisam ni skuzio , thx bro... Treba setclolor , nije višak bez njega ostaje kao duplo izgleda , ovako ga stavlja u bijelo i nevidi se dupli...

Sad sam taman na zavšetku ove knjige iz koje ucim , velicinom smo ucili sve sto je u tom programu pa je to jedan veliki mix(normalno i naredbe druge kao sto je switch...)...

btw. kako bi mogao napravi neko odbrojavanje? kao od 100 do 0 ili obrnuto to nigdje nije bilo nesto takvo...
i imas neku preporuku za neku knjigu zeljan sam ucenja , nabavio sam jos jednu e-book i tu cu procitat ima samo oko 100 stranica , ova je imama oko 306...

da i promijenio sam kod u oprginalu btw

[Ovu poruku je menjao Pwnage dana 29.01.2010. u 17:33 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Kod jednostavne igrice29.01.2010. u 16:29 - pre 173 meseci
Hmm, menjao si kod u originalnom tekstu (vratio na staro, sa samo promenjenim znakom >), i pokvario ono što sam ja promenio. Baš sam ti lepo bio nazubio kod, a vidi ga sad :-).

Jedna stvar mi nije jasna. Pozadina je bela, bombe su crne, ali pravougaonik koga igrač pomera je opet beo. Kako se onda vidi?

Ne mogu da ti pomognem za odbrojavanje, sad idem s posla kući, a tamo mi je pokvaren kompjuter.
 
Odgovor na temu

Pwnage
Nista

Član broj: 244973
Poruke: 18
*.dsl.optinet.hr.



Profil

icon Re: Kod jednostavne igrice29.01.2010. u 16:35 - pre 173 meseci
sry nisam ni vidio da si mijenjao...pozadina bijela,bombe crne i pravokutnik kojeg igrac pomjera je crn...
 
Odgovor na temu

Wajda.W
Vladimir Vajda
Zrenjanin

Član broj: 127039
Poruke: 323
*.dynamic.isp.telekom.rs.



+101 Profil

icon Re: Kod jednostavne igrice21.03.2010. u 09:09 - pre 171 meseci
Stvarno ne znam zasto ne radi, sve mi deluje ok sem tog minusa u konstruktoru klase bomba i u metodi brisanje.
Ja sam radio nesto s odbrojavanjem, mogu ti dati ideju kako to da realizujes.
Vidim da imas delay(100), ne bih ti savetovao da koristis delay() jer ti onda na to vreme ubijas tastaturu, tj korisnik ne moze da odgovori.
Ja sam to radio ovako:
Nadji f-ju koja ti vraca sistemsko vreme, i u svakom prolazu while petlje ponovo iscitas sistemsko vreme i oduzmes staro od novog i onda vidis koliko je vremena proslo, ako je proslo onoliko koliko tebi treba onda npr pomeris bombu na dole, ili smanjis neki brojas koji ce ti sluziti za odbrojavanje, ili oba.
A sto se tice bombi, pa vidi koje su ti granice ekrana, mozda ih iscrtava negde "van" ekrana, probaj sa debugerom da nadjes problem.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Kod jednostavne igrice

[ Pregleda: 2573 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.