RE: Kleines Raumschiff Spiel



  • "Man braucht keine globalen Variablen" ist echt das coolste Argument für C++ das ich je gehört hab 😃



  • Definitiv kein C, er ist eben noch ein Anfänger...



  • Hab mal ne frage an dich star_rock_games:

    diese libary "winalleg.h" find ich nicht. ich hab allegro 5 und die undeklarierten befehle kann ich nur mit "gl_ext.h" deklarieren. doch beim debugging gibt es mindestens 50 fehlermeldungen; z.b. "GLclampf" nicht deklariert ist, oder "GLenum"...

    wie hast du das gemacht?

    tortorios



  • hat sich schon erledigt, danke. das problem war, dass ich allegro 5 habe und die befehle noch von allegro 4 sind ^^



  • sry für den dripple post! ich wollte nicht extra ein thread aufmachen, deswegen frag ich hier:

    ich benutze allegro 4 und wenn ich die libary inlcude und nichtmal einen code schreibe(!), gibt es fehlermeldungen.

    #include <allegro.h>
    #include <winalleg.h>
    
    int main()
    {
    
    }
    

    //fehlermeldung
    error C4716: '_mangled_main': Muss einen Wert zurückgeben

    ich hab auch schon "return 0;" in den code eingesetzt, doch dann kommen wieder fehler

    #include <allegro.h>
    #include <winalleg.h>
    
    int main()
    {
        return 0;
    }
    

    //fehlermeldung
    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".
    fatal error LNK1120: 1 nicht aufgelöste externe Verweise.



  • - du muss am ende

    END_OF_MAIN();

    eingeben 😉 warum weis ich auch nicht ^^

    und ich benutzte allegro 4.2.2, weil es die einzigste version ist
    die man in dev c++ runterladen kann OHNE fehlermeldungen

    okey man könnte jetzt erst alles runterladen und einzelnd einlinken aber ich war zu faul ...



  • sry das ich erst jetzt wieder antworte.
    wenn ich

    END_OF_MAIN()
    

    schreibe kommen nochmehr fehlermeldungen, und ich verstehe noch weniger.

    #include <allegro.h>
    #include <winalleg.h>
    
    int main()
    {
    	return 0;
    }
    END_OF_MAIN()
    

    Fehlermeldung:

    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___WinMain" in Funktion "_WinMain@16".

    fatal error LNK1120: 1 nicht aufgelöste externe Verweise.



  • Semikolon hinter END_OF_MAIN() vergessen?

    Scheint mir ein bisschen dubios zu sein, mit dem "END_OF_MAIN". Bist du dir sicher, dass du auch eine Windows-Anwendung erstellst und nicht etwa eine Konsolenanwendung?



  • hat sich schon erledigt, danke.
    nun hab ich wieder ein neues problem und weiß wieder nicht wo ich danach suchen soll :D.

    ich hab allegro 5 und möchte einfach nur einen wert ausgeben:

    #include <allegro5\allegro.h>
    #include <iostream>
    
    int main()
    {
    	int izahl = 500;
    
    	while(1)
    	{
    		if(ALLEGRO_KEY_UP)
    		{
    			izahl++;
    		}
    
    		if(ALLEGRO_KEY_DOWN)
    		{
    			izahl--;
    		}
    
    		cout << izahl;
    
    		Sleep(50);
    	}
    }
    

    so, nur kann ich leider kein "cout" verwenden; warum weiß ich nicht. ich will nur die anzahl von "izahl" irgendwie ausgeben. hat jemand ne andere lösung?



  • cout liegt im Namensbereich std .

    Das gehört zu den Grundlagen.



  • Läuft Allegro wirklich in der Konsole? Ich dachte, dass man damit auch komplexere Dinge zeichnen kann...



  • Jochen S. schrieb:

    Läuft Allegro wirklich in der Konsole?

    Natürlich nicht!



  • EOutOfResources schrieb:

    Jochen S. schrieb:

    Läuft Allegro wirklich in der Konsole?

    Natürlich nicht!

    Dann ist cout fehl am Platze. Es sei denn, er programmiert eine Konsolenanwendung. Dann ist aber Allegro fehl am Platze.



  • Jochen S. schrieb:

    Dann ist cout fehl am Platze. Es sei denn, er programmiert eine Konsolenanwendung. Dann ist aber Allegro fehl am Platze.

    So manches Spiel hat eine Konsole und ein Fenster...



  • EOutOfResources schrieb:

    Jochen S. schrieb:

    Dann ist cout fehl am Platze. Es sei denn, er programmiert eine Konsolenanwendung. Dann ist aber Allegro fehl am Platze.

    So manches Spiel hat eine Konsole und ein Fenster...

    Das ist doch Murks. Dann kann man den Vollbildmodus gleich über Bord werfen.



  • Jochen S. schrieb:

    Dann kann man den Vollbildmodus gleich über Bord werfen.

    Wieso? 😕



  • EOutOfResources schrieb:

    Jochen S. schrieb:

    Dann kann man den Vollbildmodus gleich über Bord werfen.

    Wieso? 😕

    Weil die Konsole dann weg ist. Und wenn ich dann Texte in der Konsole ausgebe und das Spiel im Vordergrund läuft kann man auf der Konsole nichts mehr lesen. Und wenn sowiso nur Staatusinformationen auf der Konsole ausgegeben werden, kann man gleich ein Logbuch implementieren. Und so Dinge wie ein eigenes Fenster für das Spiel, eine Konsole für das Hauptmenü sind doch sehr unschön...



  • Jochen S. schrieb:

    Und wenn ich dann Texte in der Konsole ausgebe

    Jetzt verstehe ich, was du meinst. Für das ist es natürlich absoluter Quatsch!



  • ok, das warn dummer fehler namespace wegzulassen 😣 sry.

    naja, jetz wird das programm zwar ausgeführt aber irgendwie funktioniert es immernoch nicht 😞

    #include <allegro5\allegro.h>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int izahl = 500;
    
        while(1)
        {
            if(ALLEGRO_KEY_DOWN)
    		{
    			izahl--;
    		}
    
    		if(ALLEGRO_KEY_UP)
    		{
    			izahl++;
    		}
    
            cout << izahl;
            Sleep(200);
    		system("cls");
        }
    }
    

    wenn ich es starte, bleibt die zahl immer auf 500, egal ob ich die pfeiltaste nach oben oder nach unten drücke. wenn ich den part :
    if(ALLEGRO_KEY_UP)
    {
    izahl++;
    }
    weglasse, zählt er nach unten, egal ob ich was drücke oder nicht und genauso ist es wenn ich den ALLEGRO_KEY_DOWN part weglasse; nur dass er eben nach oben zählt.

    hat vielleicht dafür jmd ne lösung? 😕

    und hier noch die seite mit den befehlen:
    http://www.allegro.cc/manual/5/keyboard.html


Anmelden zum Antworten