C++ 快板中al_draw_line()的失败
当我想用C++ 快板中al_draw_line()的失败,c++,c,allegro,allegro5,C++,C,Allegro,Allegro5,当我想用al_-draw_-line(100100400400,al_-map_-rgb(255255,0),5)画一条线时,myALLEGRO_DISPLAY自动关闭,此行后的语句不执行。我的节目暂停了 #include<allegro5/allegro.h> #include<allegro5/allegro_primitives.h> int main(){ ALLEGRO_DISPLAY *display=NULL; if(!al_init()){
al_-draw_-line(100100400400,al_-map_-rgb(255255,0),5)画一条线时代码>,myALLEGRO_DISPLAY
自动关闭,此行后的语句不执行。我的节目暂停了
#include<allegro5/allegro.h>
#include<allegro5/allegro_primitives.h>
int main(){
ALLEGRO_DISPLAY *display=NULL;
if(!al_init()){
return -1;
}
if(!al_init_primitives_addon()){
return -1;
}
display=al_create_display(600,600);
al_draw_line(100,100,400,400,al_map_rgb(0,0,0),3);
al_clear_to_color(al_map_rgb(0,0,0));
al_flip_display();
al_rest(20.0);
al_destroy_display(display);
return 0;
}
#包括
#包括
int main(){
快板显示*显示=NULL;
如果(!al_init()){
返回-1;
}
if(!al_init_primitives_addon()){
返回-1;
}
显示=al_创建_显示(600600);
al_绘制线(100100400400,al_地图_rgb(0,0,0),3);
al_clear_to_color(al_map_rgb(0,0,0));
al_flip_display();
al_rest(20.0);
铝显示器(显示器);
返回0;
}
如果不检查al\u create\u display
的返回值,则可能会失败。无论如何:我不知道为什么你的程序显然崩溃了(除了不检查显示之外,你的代码没有做任何应该崩溃的事情),但是你不会看到任何东西,因为你:
- A) 用相同的颜色(黑色)绘制线条和背景
- B) 绘制线条后清除背景色(从而使其过度绘制)
在进行一些更改后,您的代码:
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include <stdio.h>
int main(){
ALLEGRO_DISPLAY *display=NULL;
if(!al_init()){
fprintf(stderr,"Couldn't initialize allegro!\n");
return -1;
}
if(!al_init_primitives_addon()){
fprintf(stderr,"Couldn't initialize primitives addon!\n");
return -1;
}
display=al_create_display(600,600);
if(!display) {
fprintf(stderr,"Couldn't create allegro display!\n");
return -1;
}
al_clear_to_color(al_map_rgb(0,0,0));
al_draw_line(100,100,400,400,al_map_rgb(255,0,0),3);
al_flip_display();
al_rest(1.0);
al_destroy_display(display);
return 0;
}
#包括
#包括
#包括
int main(){
快板显示*显示=NULL;
如果(!al_init()){
fprintf(stderr,“无法初始化快板!\n”);
返回-1;
}
if(!al_init_primitives_addon()){
fprintf(stderr,“无法初始化基本体加载项!\n”);
返回-1;
}
显示=al_创建_显示(600600);
如果(!显示){
fprintf(stderr,“无法创建快板显示!\n”);
返回-1;
}
al_clear_to_color(al_map_rgb(0,0,0));
al_绘制线(100100400400,al_地图rgb(255,0,0),3);
al_flip_display();
al_rest(1.0);
铝显示器(显示器);
返回0;
}
如果实际上是您的显示器坏了,您现在至少应该得到一条错误消息。不过,这对我来说是可行的,我不明白为什么它不适合你(除非你尝试在全屏模式下创建它,这是行不通的)
这两条线是反向的。在绘制线后,您正在清除(擦除)显示。所以你从来没有真正看到这条线 你能给我们看更多的代码吗?你自己制作了Allegro吗?如果不是,可能二进制软件包与编译器不兼容。除非未创建显示,否则上述代码不应崩溃,但这种情况永远不会发生除非你有一个非常小的屏幕,我使用DeV C++。我成功地创建了显示,并且能够创建定时器,但是All DRAGHORLY失败了。你每一个TYMEDD都自己创建快板。如果使用DEV-C++,你可能使用GCC。如果你下载了一个预成版本的AlelGro,那么它必须精确地匹配你的GCC版本。如果没有,期待崩溃。e添加了这一行,但我的allegro显示器自动崩溃。
al_draw_line(100,100,400,400,al_map_rgb(0,0,0),3);
al_clear_to_color(al_map_rgb(0,0,0));