Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Peliä tekemässä

Mäpy [25.08.2003 20:35:00]

#

#include <allegro.h>
#include <stdio.h>

int valikko(int kohta)
{
BITMAP *valikko_tausta;
PALETTE paletti;
valikko_tausta=load_bitmap("valikko.bmp" , paletti);
set_palette(paletti);
blit(valikko_tausta,screen,0,0,0,0,valikko_tausta->w,valikko_tausta->h);
RGB sininen = { 80, 93, 103 };
set_color(256,&sininen);
text_mode(-1);
textout(screen, font, "This is demo version of HohdeCarRacer.", 10, 10, 10);
textout(screen, font, "The full version of the game will come soon.", 10, 22, 10);
textout(screen, font, "Press number P to play.", 10, 34, 10);
textout(screen, font, "Press number P and ESC to quit", 10, 46, 10);
while(! key[KEY_P])
kohta = 2;
return kohta;

}


int alku(int kohta)
{
BITMAP *valikko_tausta;
PALETTE paletti;
valikko_tausta=load_bitmap("valikko.bmp" , paletti);
set_palette(paletti);
blit(valikko_tausta,screen,0,0,0,0,valikko_tausta->w,valikko_tausta->h);
RGB sininen = { 80, 93, 103 };
set_color(256,&sininen);
text_mode(-1);
textout(screen, font, "Try to drive at the road!", 10, 10, 10);
textout(screen, font, "To turn left press \17", 10, 22, 10);
textout(screen, font, "Press number P and ESC to quit", 10, 46, 10);
while(! key[KEY_P])
kohta = 3;
return kohta;
}


int peli(int c)
{

}


int loppu(int d)
{

}


int main()
{
 // Alustetaan Allegro, asetetaan grafiikkatila ja näppäimet
 allegro_init();
 set_gfx_mode(GFX_SAFE, 800, 600, 0, 0);
 install_keyboard();

 // Valitaan kohta
 int kohta;
 kohta = 1;
 valinta:
  switch ( kohta ){
    case 1: valikko(kohta);
			break;
    case 2: alku(kohta);
		      break;
    case 3: peli(kohta);
		break;
    case 4: loppu(kohta);

    default: break;
}
goto valinta;

 // Odotetaan ESC-napin painallusta ja suljetaan ohjelma
 while(! key[KEY_ESC])
   poll_keyboard();
 allegro_exit();
 return 0;
}

END_OF_MAIN();

Elikkä, ongelma on, etten pääse tuohon case 2 kohtaan. Mitenkä tuo pitäisi tehdä? Haluan siis case 1 jälkeen suoritettavan valikko()-funktion jälkeen tuohon case 2:teen. Toivottavasti joku ymmärsi :p

tomaattigeeni [26.08.2003 17:02:22]

#

aika selvä ongelma, 'kohta' ei ole globaali muuttuja, etkä ole määritellyt että arvo palautettaisiin siihen.

switch(kohta)
{
  case 1: kohta = valikko(); // valikko() ei tee mitään tuolla muuttujalla
// lisäksi asetetaan paluuarvo 'kohta' muuttujaan, muuten sen arvo pysyy kokoajan ykkösenä
  break;
  case 2: kohta = alku() // sama juttu tälle
  break;
  // jne ...
}

lisäksi ellen ihan väärin lukenut koodia niin voit laittaa noihin funktioihin ( valikko() ja alku() ) tohon 'return kohta;' tilalle return 2; ja return 3; ja se ei tarvitse tuota kohtaa argumenttina, elikkä:

int valikko() // sitä int kohta ei siis tarvita :)
{
  // ....
  // kohta = 2; // tuo on turha
  return 2;
}

ja kooditagit ja sisennykset on kivoja ;)

Oippa [26.08.2003 18:54:52]

#

"Press number P to play.", <- Mikä vitun NUMBER P? Ehkä kirjain P ois parempi tai jotai..

thefox [27.08.2003 10:26:20]

#

Mjooh.. tässä on taas sitä ilmiötä ettei oikein olla perillä siitä mitä ollaan tekemässä. Suosittelisin perusrakenteiden hallitsemista ennen pelin tekoon ryhtymistä.

Mäpy [27.08.2003 14:50:45]

#

No mä joskus pari vuotta sitten opettelin c++:n ja jääny sen jälkeen kokonaan pois, että kai siinä kertauksen paikka olisi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta