gpt4 book ai didi

c++ - 快板 C++;闪烁位图

转载 作者:行者123 更新时间:2023-11-28 08:17:08 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的程序,其中包含一个作为“背景”的 BITMAP 和另一个我可以移动的 BITMAP,我尝试了不同的方法,比如将背景直接绘制到屏幕上,尝试制作两个缓冲区,我尝试将两者都放入一个缓冲区中的位图。现在我正在运行程序,同时在缓冲区中循环调用两次。但可移动的 BITMAP 会闪烁。

#include <allegro.h> 


int main(int argc, char *argv[])


{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT, 640,480,0,0);



BITMAP *my_pic = NULL;
my_pic = load_bitmap("image.bmp", NULL);
BITMAP *my_pics;
my_pics = load_bitmap("picture.bmp", NULL);
BITMAP *buffer = NULL;
buffer = create_bitmap(640,480);
BITMAP *bitty=NULL;
bitty = create_bitmap(640,480);





int my_pic_x = 0;
int my_pic_y = 0;
int my_pics_x=0;
int my_pics_y=0;

while(!key[KEY_ESC])
{


if(key[KEY_RIGHT])
{
my_pic_x ++;
}
else if(key[KEY_LEFT])
{
my_pic_x --;
}
else if(key[KEY_UP])
{
my_pic_y --;
}
else if(key[KEY_DOWN])
{
my_pic_y ++;
}

draw_sprite(bitty,my_pic,my_pic_x,my_pic_y);
//draw_sprite( screen, my_pic, 0, 0);
blit(bitty, screen, 0,0,0,0,640,480);
clear_bitmap(bitty);

draw_sprite(buffer,my_pics,my_pics_x,my_pics_y);
blit(buffer, screen, 0,0,0,0,640,480);
clear_bitmap(buffer);




}


destroy_bitmap(my_pic);
destroy_bitmap(my_pics);
destroy_bitmap(buffer);
destroy_bitmap(bitty);
return 0;
}
END_OF_MAIN()

最佳答案

你的代码是这样工作的:

// draw the my_pic sprite to bitty
draw_sprite(bitty,my_pic,my_pic_x,my_pic_y);
// status now: bitty contains my_pic

// draw bitty to the screen
blit(bitty, screen, 0,0,0,0,640,480);
// status now: screen contains my_pic by way of bitty

// clear bitty
clear_bitmap(bitty);
// status now: screen contains my_pic by way of a former
// version of bitty, bitty is now empty

// draw my_pics to buffer
draw_sprite(buffer,my_pics,my_pics_x,my_pics_y);
// status now: screen contains my_pic, bitty is empty,
// buffer contains my_pics

// draw buffer to the screen
blit(buffer, screen, 0,0,0,0,640,480);
// status now: screen and buffer both contain my_pics,
// bitty is empty

// clear the buffer
clear_bitmap(buffer);
// status now:
//
// screen contains my_pics
// bitty and buffer are empty

我想你会想要更像的东西:

// clear buffer
clear_bitmap(buffer);
// status now: buffer is empty

// draw my_pic to buffer
draw_sprite(buffer,my_pic,my_pic_x,my_pic_y);
// status now: buffer contains my_pic

// draw my_pics to buffer
draw_sprite(buffer,my_pics,my_pics_x,my_pics_y);
// status now: buffer contains my_pic, with my_pics on top

// copy buffer to the screen
blit(buffer, screen, 0,0,0,0,640,480);
// status now: buffer and screen contain my_pic, with my_pics on top

关于c++ - 快板 C++;闪烁位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7328389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com