Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.04.2014, 10:20

Allegro 4 c++ Platformer, Hilfe Grafiken und Auflösung

Hallo Leute,
bin neu hier und brauche dringend eure Hilfe, ich weiss jetzt nicht ob ich diesen Thread hier richtig angelegt habe, wenn nicht tut mir das leid, kann gerne verschoben werden.

Ich habe mit Hilfe des Tutorials von codingmadeeasy(https://www.youtube.com/watch?v=J9vRVMZl…2B63CC836DCB7C8)
ein Jump n Run "programmiert", brauche das für die Schule(programmiert steht in Anführungszeichen da der sich Code von mir und dem Tutorial nicht groß unterscheidet)
Jetzt habe ich 3 Probleme:
1. ist die Auflösung
das Spiel muss über dem Beamer gestartet werden stürtzt dann aber dort ab, habe die Auflösung im Spiel schon auf die entsprechende Auflösung geändert( 1280 x 768), doch es funktioniert nicht! da zeigt mir der Compiler einen Fehler beim compilieren an(aber es sind jetzt keine Syntaxfehler oder so)
2. ich möchte anstatt der Rechtecke, .bmp Dateien einfügen, jedoch wenn ich dass so mache wie das im Quelcode steht, flimmert das Bild nur und wenn die Kamera mit der Figur mitfährt kommt das Bild mit.
Hier dazu ein Quelltextauszug:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void Map::Draw(BITMAP *Buffer)
{
for(int i = 0; i < mapSizeX[level]; i++)
{
for (int j = 0; j < mapSizeX[level]; j++)
{
if (MapFile[level][i][j] == 1)
{
rectfill (Buffer , i*BlockSize, j*BlockSize, i*BlockSize + BlockSize, j*BlockSize + BlockSize,makecol(139, 139, 139) );
}
else if (MapFile[level][i][j] == 2)
{
rectfill (Buffer, i*BlockSize, j*BlockSize, i*BlockSize + BlockSize, j*BlockSize + BlockSize, makecol(250, 250, 250));
}
else if(MapFile [level][i][j] == 3)
{
BITMAP *tile;
tile = load_bitmap("block1.bmp", NULL);
draw_sprite(screen, tiles, i*BlockSize, j*BlockSize);
}
else if(MapFile [level][i][j] == 4)
{
rectfill (Buffer, i*BlockSize, j*BlockSize, i*BlockSize + BlockSize, j*BlockSize + BlockSize, makecol(0, 238, 0));
}
}
}
}


3. Ich möchte für meine Figur ein Sprite haben, habe nur wirklich keine Ahnung wie das geht.
Hier dazu auch ein Queltext auszug:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void Player::Draw(BITMAP *Buffer)
{
rectfill(Buffer, x, y, x2, y2, makecol(255, 0, 0));
}

void Player::Controls()
{
if (key[KEY_RIGHT])
{
velx = speed;
hDir = 1;
}
else if (key[KEY_LEFT])
{
velx = -speed;
hDir = 2;
}
else
{
velx = 0;
hDir = 0;
}
if (key[KEY_UP] && Jump == true)
{
vely = jumpspeed;
Platform = false;
Jump = false;
vDir = 1;
}
}


Danke jetzt schon für eure Hilfe :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (07.04.2014, 10:53)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

07.04.2014, 10:53

da zeigt mir der Compiler einen Fehler beim compilieren an(aber es sind jetzt keine Syntaxfehler oder so)
Das ist spannend, denn der Compiler prüft nur die Syntax. Folglich kann es also nur ein Syntax-Fehler sein. Wäre vermutlich hilfreich, wenn Du uns auch sagst, wie er denn genau lautet.
Bitte verwende beim nächsten Mal auch das [cpp]...[/cpp] Tag. Dafür gibt es auch einen Button in der Menü-Leiste.

Du solltest ein Bitmap übrigens nicht immer erst laden, wenn Du es anzeigen willst, sondern EINMAL vorher laden und dann immer dieses verwenden. Zugriffe auf Dateien und die Festplatte sind nach online-Zugriffen mit das langsamste, was man an einem PC tun kann. Noch schlimmer ist allerdings, dass Du ein Bild immer und immer wieder laden lässt, ohne den Speicher jemals wieder frei zu geben. Das ist ein ganz böses Speicherloch und Dein Programm nutzt mehr und mehr Speicher, bis es letztlich abstürzt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

07.04.2014, 13:09

Fehler: Unbehandelte Ausnahme bei 0x774b15ee in GamePlatformer.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000010.
Mich würde interessieren ob ich die Auflösung von 800 x 600 nicht beibehalten kann und das Problem lösen kann ohne im Queltext die Auflösung zu ändern, denn so funktioniert es nur es stürzt ab wenn ich es über den Beamer laufen lasse.

wie soll ich denn da jetzt bei 2. vorgehen? In main.cpp die Bitmap laden?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tylerdurden92« (07.04.2014, 13:17) aus folgendem Grund: Ergänzung


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

07.04.2014, 13:21

Das ist spannend, denn der Compiler prüft nur die Syntax.

Das ist so nicht richtig.
Compiler analyisieren Programmcode zuerst syntaktisch - hierbei werden Syntaxfehler erkannt - und danach semantisch.
Das Aufrufen einer nicht deklarierten Funktion oder die Verwendung einer nicht deklarierten Variablen, beispielsweise, sind keine Syntaxfehler.

Fehler: Unbehandelte Ausnahme bei 0x774b15ee in GamePlatformer.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000010.

Das ist kein Compiler-Fehler, sondern dein Programm stürzt beim Ausführen ab. Und zwar, weil du vermutlich irgendwo versuchst einen Nullzeiger zu dereferenzieren.

5

07.04.2014, 13:27

Das ist kein Compiler-Fehler, sondern dein Programm stürzt beim Ausführen ab. Und zwar, weil du vermutlich irgendwo versuchst einen Nullzeiger zu dereferenzieren.
hm ok, naja wie gesagt mir wäre es ganz recht die Auflösung beizubehalten und das Problem nur so zu lösen, dass das Programm einfach über den Beamer läuft

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

07.04.2014, 15:48

David: Da hast Du wohl Recht. Worauf ich hinaus wollte ist aber eben der Punkt, dass es vermutlich gar kein Compile-Fehler ist. Und Recht gehabt hätte ich damit offenbar.
(PS: Warum geht zitieren bei mir nicht mehr?)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige