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

[c++ allegro]Problem

Ostatnio zmodyfikowano 2011-06-07 23:38
Autor Wiadomość
poldek
Temat założony przez niniejszego użytkownika
[c++ allegro]Problem
» 2011-06-07 22:55:36
Najpierw kod:

#include <allegro.h>
using namespace std;

void Camera ( int playerposX, int playerposY, int &cameraX, int &cameraY) {
 
  cameraX = playerposX - 320;
  cameraY = playerposY - 240;
 
  if(cameraX < 0)
    cameraX = 0;
 
  if(cameraY < 0)
    cameraY = 0;
}

int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};

int main () {
 
  allegro_init ();
  install_keyboard ();
  install_mouse ();

  set_color_depth (16);
  set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
 
  BITMAP *kafel01 = NULL;
  BITMAP *kafel02 = NULL;
  BITMAP *kafel03 = NULL;
  BITMAP *kafel04 = NULL;
  BITMAP *kafel05 = NULL;
  BITMAP *kafel06 = NULL;
  BITMAP *bufor   = NULL;
  BITMAP *ludek   = NULL;
 
  bufor = create_bitmap(640, 480);
 
  kafel01 = load_bmp(".image/kafel01.bmp", default_palette);
  kafel02 = load_bmp(".image/kafel02.bmp", default_palette);
  kafel03 = load_bmp(".image/kafel03.bmp", default_palette);
  kafel04 = load_bmp(".image/kafel04.bmp", default_palette);
  kafel05 = load_bmp(".image/kafel05.bmp", default_palette);
  kafel06 = load_bmp(".image/kafel06.bmp", default_palette);
  ludek   = load_bmp(".image/ludek.bmp",   default_palette);
 
  if((!kafel01) || (!kafel02) || (!kafel03) || (!kafel04) || (!kafel05) || (!kafel06) || (!ludek)) {
    
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message("Popsules jakis obrazek/bufora");

    allegro_exit();
     return 0;
  }
 
  int mapa[12][40] = {
    0, 0, 0, 0, 4, 5, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
    0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 4, 5, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 4, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 4, 5, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 4, 5, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
   
  };
 
  int x = 10;
  int y = 10;
  int dir = 360;
  bool done = false;
  int cameraX , cameraY;
  cameraX = cameraY = 0;
 
  int map_x = -50;
  int map_y = 1;
  int kloceky, klocekx;
 
  while (!done) {
    if (key[KEY_ESC])
      done = true;
   
    if (key[KEY_LEFT]) {
      x -= 10;
      dir = 360;
    }
   
    else if (key[KEY_RIGHT]) {
      x += 10;
      dir = 180;
    }
   
    else if (key[KEY_UP]) {
      y -= 10;
      dir = 90;
    }
    else if (key[KEY_DOWN]) {
      y += 10;
      dir = 270;
    }
   
    show_mouse( screen );
   
    kloceky = my / 40;
    klocekx = (map_x - map_x * 2) / 39.9 + mx / 39.9;
   
    for(y = 0; y < 12; y++) {
       for(x = 0; x < 40; x++) {
  
if (mapa[kloceky][klocekx] == 3) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "NIE ZIEMIA");
         else if (mapa[kloceky][klocekx] == 1) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "NIE ZNAK");
         else if (mapa[kloceky][klocekx] == 0) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "TAK POWIETRZE");
         else if (mapa[kloceky][klocekx] == 4) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "TAK CHMURA");
         else if (mapa[kloceky][klocekx] == 5) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "TAK CHMURA");
        
if (mapa[y][x] == 0) blit(kafel04,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
         else if (mapa[y][x] == 1) blit(kafel03,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
         else if (mapa[y][x] == 2) blit(kafel02,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
         else if (mapa[y][x] == 3) blit(kafel01,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
         else if (mapa[y][x] == 4) blit(kafel05,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
         else if (mapa[y][x] == 5) blit(kafel06,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
       }
     }
    
     textprintf_ex( bufor, font, 20, 430, makecol( 0, 0, 0 ), - 1, "Klocek y = %d Klocek x = %d", kloceky, klocekx );
     textprintf_ex( bufor, font, 20, 20, makecol( 0, 0, 0 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
    
     blit( ludek, bufor , 0, 0, x, y, ludek->w, ludek->h);
     blit( bufor, screen, cameraX, cameraY, 0, 0, 640, 480 );
     clear_to_color( bufor, makecol( 150, 150, 150 ) );
  }
 
   destroy_bitmap(kafel01);
   destroy_bitmap(kafel02);
   destroy_bitmap(kafel03);
   destroy_bitmap(kafel04);
   destroy_bitmap(kafel05);
   destroy_bitmap(kafel06);
   destroy_bitmap(bufor  );
   destroy_bitmap(ludek  );
  
   allegro_exit();
   return 0;
}
END_OF_MAIN();
Problem polega na tym że po uruchomienu go nic nie można nic zrobić ,ale program się nie zawiesza działa jedynie przycisk ESC wyjścia może ktoś mi pomoże znaleźć błąd ?
P-33953
malan
» 2011-06-07 23:38:45
» KursyKurs STC kurs  =>  » Kurs STC » Kolorowanie składniKolorowanie składni języka C++ lekcja

C/C++
if( key[ KEY_LEFT ] ) {
    x -= 10;
    //...
}

else if( key[ KEY_RIGHT ] ) {
    x += 10;
    //...
}

else if( key[ KEY_UP ] ) {
    y -= 10;
    //...
}
else if( key[ KEY_DOWN ] ) {
    y += 10;
    //...
}
//...
for( y = 0; y < 12; y++ )
{
    for( x = 0; x < 40; x++ )
    {
    }
}
Widzisz błąd?
P-33954
« 1 »
  Strona 1 z 1