Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, SDL] Menu w grze

Ostatnio zmodyfikowano 2012-11-06 16:49
Autor Wiadomość
JategoNwM
Temat założony przez niniejszego użytkownika
[C++, SDL] Menu w grze
» 2012-11-04 14:57:37
Witam! wczoraj zaczełem uczyć się biblioteki SDL i na samym początku pisania mojej gierki mam problem. Napisałem menu gry, mam obrazki, wskaźnik i co teraz?? Chce, aby po wciśnięciu ENTER'a rozpoczeła się rogrywka, tylko gdzie ją umieścić??

Mam coś takiego:
C/C++
#include <SDL/SDL.h>

SDL_Surface * ekran = NULL;
SDL_Surface * tlo = NULL;
SDL_Surface * wskaznik = NULL;
SDL_Surface * gracz = NULL;

SDL_Event zdarzenie;

SDL_Rect WskaznikNamiary;

void gra()
{
    <<<<<< Teoretycznie tu ma by ć gra
}

bool wyjscie = false;

int main( int argc, char * args[] )
{
    ekran = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
    SDL_WM_SetCaption( "King of the world", NULL );
    tlo = SDL_LoadBMP( "TloMenu.bmp" );
    wskaznik = SDL_LoadBMP( "Strzalka.bmp" );
    WskaznikNamiary.x = 100;
    WskaznikNamiary.y = 130;
    while( !wyjscie )
    {
        while( SDL_PollEvent( & zdarzenie ) )
        {
            if( zdarzenie.type == SDL_QUIT )
            {
                wyjscie = true;
            }
            if( zdarzenie.type == SDL_KEYDOWN )
            {
                switch( zdarzenie.key.keysym.sym )
                {
                case SDLK_DOWN:
                    WskaznikNamiary.y++;
                    break;
                   
                case SDLK_UP:
                    WskaznikNamiary.y--;
                    break;
                   
                case SDLK_RETURN:
                    if( WskaznikNamiary.y = 130 ) {
                        gra(); <<<< Niby tu si ę wczytuje ale jako ś nie wida ć zmian
                        break;
                       
                    }
                    if( WskaznikNamiary.y = 200 ) {
                       
                        break;
                    }
                    if( WskaznikNamiary.y = 270 ) {
                       
                        break;
                    }
                    if( WskaznikNamiary.y = 340 ) {
                        SDL_FreeSurface( tlo );
                        SDL_FreeSurface( wskaznik );
                        wyjscie = true;
                        SDL_Quit();
                        return 0;
                    }
                    break;
                   
                   
                }
            }
           
        }
       
        SDL_BlitSurface( tlo, NULL, ekran, NULL );
        SDL_BlitSurface( wskaznik, NULL, ekran, & WskaznikNamiary );
        SDL_Flip( ekran );
    }
   
    SDL_FreeSurface( tlo );
    SDL_FreeSurface( wskaznik );
    SDL_Quit();
    return 0;
   
}
P-68447
SeaMonster131
» 2012-11-04 18:13:51
C/C++
enum GameMode { menu, gameplay } gamemode;

...

if( gamemode == menu )
     wyswietl_menu();

if( gamemode == gameplay )
     wyswietl_gameplay();

P-68474
JategoNwM
Temat założony przez niniejszego użytkownika
» 2012-11-05 16:11:28
A gdzie to do mojego kodu wrzucić?? Sorki ale tyle mi w szkole zadają, że ciężko się myśli.
P-68546
DejaVu
» 2012-11-05 22:39:45
Nie napiszemy za Ciebie gry, a skoro nie wiesz gdzie wstawić podany kod to znaczy, że nie znasz podstaw programowania. W kodzie który podałeś nawet operacje porównania wykonujesz źle...
P-68588
JategoNwM
Temat założony przez niniejszego użytkownika
» 2012-11-06 16:36:42
Ten kod jest pisany na wzorze twojego kursu :P
P-68623
ridic14
» 2012-11-06 16:44:39
W kursie operacje porównania są poprawnie u ciebie nie...

przykład dla nieprzytomnych ...
C/C++
int a = b; // =  to przypisanie
if( a == b ) // == to !porównanie!

np
C/C++
/*zamiast*/ if( WskaznikNamiary.y = 270 )
/*musi być*/ if( WskaznikNamiary.y == 270 )
P-68627
m4tx
» 2012-11-06 16:49:15
Ten kod jest pisany na wzorze twojego kursu :P
Jeśli mówisz o kursie C++, no to cóż - widocznie źle coś zrozumiałeś. Jestem tego samego zdania co DejaVu - powinieneś wrócić do podstaw.

Sorki ale tyle mi w szkole zadają, że ciężko się myśli.
Tja... Żadne wytłumaczenie powiem Ci. W poniedziałki mam 9 lekcji, w ten czwartek mam 3 sprawdziany (o zadaniu domowym już nic nie wspominając) i jakoś nie zrzucam na kogoś obowiązku pisania mojej gry. :)
P-68628
« 1 »
  Strona 1 z 1