簡體   English   中英

Allegro 5中的Allegro 4功能

[英]Functions of Allegro 4 in Allegro 5

我有一個用Allegro 4編寫的代碼,正在將其轉換為Allegro 5,但是我遇到了嚴重的問題,這些功能在Allegro 5中不再存在,其中之一是“ blit”

BITMAP *bTile; // Bitmap do tile;
BITMAP *bMapa; // Bitmap do mapa;
BITMAP *bTexturas[20]; // Vetor de bitmap das texturas;
BITMAP *bChar; // Bitmap do personagem;
BITMAP *bMario[3];
// ##########################################################

int main()
{
    int vResolucao_x = 640;
    int vResolucao_y = 480;

    init(vResolucao_x, vResolucao_y);

    BITMAP *buffer = create_bitmap(vResolucao_x, vResolucao_y);

    bTile = load_bitmap("Tiles/tile.bmp", NULL);
    bChar = load_bitmap("Tiles/mario.bmp", NULL);
    bMapa = create_bitmap(vResolucao_x, vResolucao_y);

// ############# - Carrega imagens do mario - ############
    bMario[0] = create_bitmap(vTile,vTile);
    bMario[1] = create_bitmap(vTile,vTile);
    bMario[2] = create_bitmap(vTile,vTile);
    blit(bChar, bMario[0],  0, 0, 0, 0, vTile, vTile);
    blit(bChar, bMario[1],  33, 0, 0, 0, vTile, vTile);
    blit(bChar, bMario[2],  66, 0, 0, 0, vTile, vTile);
// #######################################################

    install_int(fGravidade,5);

    fCarrega_Sprites_Mapa();
    fCarrega_Mapa();
    fMostra_Mapa();

    draw_sprite(screen, bMapa, 0, 0 );

    while (!key[KEY_ESC]) {

我的舊代碼幾乎沒有任何內容可用於Allegro 5,因此我正在學習轉換,但是此blit函數無法在allegro 5中找到它,另一個找不到模擬對象的函數是:install_int (......)

Allegro 5本質上是一個全新的庫。 這是最好的逐行翻譯。 請注意,Allegro 5使用了根本不同的概念(事件循環),在嘗試轉換代碼之前,您應該花些時間來學習它的工作原理。

ALLEGRO_BITMAP *bMario[3];
// ##########################################################

int main()
{
    int vResolucao_x = 640;
    int vResolucao_y = 480;

    init(vResolucao_x, vResolucao_y);

    ALLEGRO_BITMAP *buffer = al_create_bitmap(vResolucao_x, vResolucao_y);

    bTile = al_load_bitmap("Tiles/tile.bmp");
    bChar = al_load_bitmap("Tiles/mario.bmp");
    bMapa = al_create_bitmap(vResolucao_x, vResolucao_y);

// ############# - Carrega imagens do mario - ############
    bMario[0] = al_create_bitmap(vTile,vTile);
    bMario[1] = al_create_bitmap(vTile,vTile);
    bMario[2] = al_create_bitmap(vTile,vTile);

    al_set_target_bitmap(bMario[0]);
    al_draw_bitmap(bchar, 0, 0, 0);

    al_set_target_bitmap(bMario[1]);
    al_draw_bitmap(bchar, 33, 0, 0);

    al_set_target_bitmap(bMario[2]);
    al_draw_bitmap(bchar, 66, 0, 0);

    al_set_target_backbuffer(display);
// #######################################################

    fGravidade = al_create_timer(5 / 1000.0); // ALLEGRO_TIMER*

    ALLEGRO_EVENT_QUEUE *queue = al_create_event_queue();
    al_register_event_source(queue, al_get_timer_event_source(gfGravidade));
    al_register_event_source(queue, al_get_keyboard_event_source());

    fCarrega_Sprites_Mapa();
    fCarrega_Mapa();
    fMostra_Mapa();

    al_draw_bitmap(bMapa, 0, 0, 0);
    al_flip_display();

    while (true) {
      ALLEGRO_EVENT event;
      al_wait_for_event(queue, &event);

      if (event.type == ALLEGRO_EVENT_TIMER) {
        // fGravidade ticked
      }
      else if (event.type == ALLEGRO_EVENT_KEY_CHAR) {
        if (event.keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
          break;
        }
      }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM