我无法创建一个适合我地图的窗口。 Allegro 4.2只显示了我地图的70%;我已经尝试更改窗口的大小,但它停止在我的地图大小上工作,我还在FULLSCREEN
中尝试了set_gfx_mode
。这是我正在使用的代码:
BITMAP* buffer;
BITMAP* rock;
char map[30][30] {-- -the map-- -};
void draw_map() {
int row, col;
for(row = 0; row < 30; row++) {
for(col = 0; col < 30; col++) {
if(mapa[row][col] == 'X') {
draw_sprite(buffer, rock, col * 30, row * 30) ;
}
}
}
}
void onscreen() {
blit(buffer, screen, 0, 0, 0, 0, 640, 480);
}
int main() {
//allegro default code
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
buffer = create_bitmap(640, 480);
rock = load_bitmap("rock.bmp", NULL);
while(!key[KEY_ESC]) {
draw_map();
onscreen();
}
}
答案 0 :(得分:0)
据我所知,您的地图比屏幕大,并且您尝试将其放在屏幕上。至少有两种可能的解决方案:
解决方案二的实现非常具体,所以我无法向您展示任何示例代码,但一个提示是您将所有地图写入缓冲区大小然后,使用相机X和Y只是blit该地图的一部分到显示位图。祝你好运!
答案 1 :(得分:0)
您的地图比屏幕大。你用这个绘制岩石:
draw_sprite(buffer, rock, col * 30, row * 30) ;
这意味着地图的每个图块都是30x30像素。
由于您的地图被声明为:
char map[30][30]
你需要一个30 * 30乘30 * 30 = 900乘900像素来保持它,但你的缓冲区只有640,480。
所以要么你的地图更小(使用当前缓冲区的char map [21] [16]),要么更大的缓冲区(当前地图为900乘900)。