Allegro



  • Nein, du musst allegro auch compilieren. Einfach entpacken reicht nicht. Eine Beschreibung wies geht ist dabei.



  • So, ich hab das jetzt installiert 🙂
    wiso funktioniert aber der unten angegebene Code nicht?:
    keine Compilefehler.
    Es soll einfach eine BMP Datei anzeigen.
    Die BMP ist 640*480 groß und in 16bit Farbtiefe:

    #include <allegro.h> // You must include the Allegro Header file
    
    int main(int argc, char *argv[])
    {
    allegro_init();        // Initialize Allegro
    install_keyboard(); // Initialize keyboard routines
    set_color_depth(16); // Set the color depth
    set_gfx_mode(GFX_AUTODETECT, 640,480,0,0); // Change our graphics mode to 640x480
    BITMAP *my_pic; //Declare a BITMAP called my_pic
    my_pic = load_bitmap("bild1.bmp", NULL); // Load our picture
    
    acquire_screen();
    blit(my_pic, screen, 0,0,0,0,640,480);//Draw the whole bitmap to the screen at (0,0)
    release_screen();
    readkey();// Wait untill a key is pressed
    destroy_bitmap(my_pic);//Release the bitmap data
    return(0);// Exit with no errors
    }
    END_OF_MAIN(); // This must be called right after the closing bracket of your MAIN function.
                          // It is Allegro specific.
    

    Er startet das Programm, aber er zeigt mir die Bmp Datei nicht an, wenn ich dann ne Taste drücke beendet er, was er auch soll 😉
    Wenn das Thema falsch ist, bitte verschieben.



  • hallo

    der code geht einwandfrei

    überprüfe, ob das bild mit in dem ordner der exe ist.
    überprüfe es von konsole aus: starte die exe aus einer dos konsolenbox heraus.

    ansonsten win98 zeigt alles hervorragend an.

    compiliert mit djgpp, als c file.

    so long.

    ps: allegro ist eine spieleprogrammierungsbibliothek, wäre also im spieleprogrammierungsforum angebrachter zu fragen.



  • hmm, das is jetzt blöd, die BMP Datei befindet sich im Ordner der Exe, war auch nie wo anders 😉 Muss ich was beachten wenn ich das Bild anzeigen lassen will, z.B. muss die Bittiefe genauso sein wie die Bittiefe der BMP?
    Hab das alles vorher als C++ Projket compiliert, jetzt neu versucht als C Projekt aber wieder das gleiche, der Bildschirm bleibt schwarz o_O
    Auch wenn ichs über die Konsole öffne.
    Ich kompile mit MINGW32.

    Könnte das wer verschieben? oder soll ich einen neuen Thread aufmachen?

    E: Weis wer einen IRC Channel wo ich noch nachfragen könnte?



  • bist du sicher, daß dein bild ein bmp ist?

    teste dochmal die von allegro mitgelieferten beispiele.. müsste ein example ordner dabei sein.
    dort findest du eine anwendung, die .pcx öffnet, auch ein bildformat.
    allegro.pcx heißt das beispiel bild bei mir.

    schau, ob die bei dir geht, wenn ja, würde ich das bitmap mal genauer betrachten.



  • jo, meine BMP Datei hat was, wenn ich die allegro.pcx Datei lade und anzeige funktioniert alles einwandfrei.
    Muss mir noch anschauen was meine BMP Datei hat
    thx



  • Will zwar nicht, aber ich muss als Moderator eure nette Unterhaltung ein paar Foren nach unten verschieben.

    Verschoben nach Grafikprogrammierung (Reason: Pixelgrafik und Grafiklibaries gehören ins Grafikforum).

    MfG SideWinder



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Jetzt funktioniert das obige Beispiel, daraufhin hab ichs einen Freund geschickt, der konnte es aber nicht öffnen weil die allegro.dll gefehlt hat.
    Meine Frage nun, wie kann ich die allegro dll mitcompilen, oder soll ich die dll in die dat datei einbinden?



  • Viel einfacher, es reicht, wenn du die allegro.dll im Ordner der EXE mitlieferst.



  • ja, schon klar 😉
    aber bei einem anderen Spiel ist die dll auch nicht sichtbar im Ordner, die muss aber irgendwo sein.
    Nein, ist keine versteckte Datei.



  • wenn die nich im exe ordner is, dürfte die direkt im windows/system bzw. winnt/system32 (ka wie das bei xp heißt) sein...

    edit: oder es is static linked...

    mfg



  • sorry wenn ich nicht fähig bin Google zu benutzen, aber kann man 2 Bitmaps auf Kollision/Übereinstimmung prüfen oder muss ich das alles von hand machen ?
    MfG



  • allegro selbst bietet da imho keine funktion für, aber es gibt viele bibliotheken die das machen. ansonsten musstest alles von hand machen.



  • hmm, gibts wirklich keine andere Möglichkeit?, egal so würde ich das dann machen:
    Verbesserungsvorschläge sind willkommen! (Sorry für die Schlechte Quali, soll ja nur eine Skizze sein)
    http://mitglied.lycos.de/hrtcrew/abfrage.jpg
    Die schwarzen Objekte sind statisch und bewegen sich nicht, dh sie haben fixe Koordinaten. Das rote Objekt ist mein Auto, folglich bewegt es sich und hat variable Koordinaten.
    Wie beschrieben hat das schwarze Objekt eine l von 80 und eine b von 10.(Hausnummern 😉
    Ich zeichne jedes Objekt mit blit. (Eine genaue Erklärung wäre nett ;))
    blint geht ja von der rechten oberen Ecke aus, folglich nehme ich eine Hilfskoordinate und berechne mir den rechten Rand. Ich zeichne z.B. das Ojekt an Stelle 250,100. Um den rechten Rand zu ermitteln zähle ich zu die 250, 10 dazu.
    Um auch die Länge zu ermitteln zähle ich von den 100, 80 herab und erhalte folgende Koordinaten: 260, 100 u. 260, 20 -> diese Koordinaten (denke ich) sind wichig, und statisch. Nun zeichne ich mit blit mein Auto und merke mir dessen Koordinaten.

    So überprüfe ich nun mit einer If Abfrage auf Kollision:

    if ((carx==260)&&((cary<100)&&(cary>20)))
    {
    }
    

    in ähnlicher Form verfahre ich mit dem querstehenden Objekt.

    Ich hoffe ich hab das nicht allzu verwirrend geschrieben, möchte nur meinen Gedankengang sinvoll niedergeschrieben haben 🤡



  • Wenn keine allegro.dll gebraucht werden soll/wird so wurde das Programm statisch gelinkt. Die DLL-Daten befinden sich in der EXE-Datei.

    MfG


Anmelden zum Antworten