Seite 1 von 2

[SDL]Pong

Verfasst: Mi Nov 10, 2010 11:24 pm
von MoonGuy
So, kurz vor dem Schlafen mal hier posten, dann kann ich morgen Abend alles ins Brainstorming einfließen lassen:
Und zwar programmiere ich jetzt seit ungefähr 2 Tagen Pong. Und zwar nicht, weil ich mal Spieleentwickler werden wollte, sondern weil ich irgendwie, mit visuellen Ergebnissen, meine C-Kentnisse nicht einrosten lassen will und ein bisschen C++ üben möchte.

Lange Rede kurzer Sinn, ich habe ein Problem seit gestern Abend: Und zwar ist die "Spiegelung", also praktisch der Richtungswechsel, des Balles ziemlich random bei mir und wenn der Ball den Pong trifft, ist das Spiel vorbei(weil er davon ausgeht, den Bildschirmrand zu treffen). Ich konnte das Problem schon weiter einkreisen, es müsste eigentlich an meiner isSameHeight function liegen. Allerdings hat mich nun ca. 60 minütiges rumdenken nicht weitergebracht. Dementsprechend frage ich mal, ob mir jemand einen Stubser in die richtige Richtung geben könnte.

Die Files ist leicht unübersichtlich und ich hoffe ihr findet den Teil, den ich meine.
Ich kann ja auch mal schreiben, was nach dem heutigen 60 Minuten denken heraus kam. Zumindest bei der isSameHeight function. Leider kackt das Game, wenn ich die function so umschreibe, beim Start direkt ab.

Code: Alles auswählen

bool isSameHeight( Ball ball, Sprite pong )
{
    SDL_Rect *ball_pos = new SDL_Rect;
    SDL_Rect *pong_pos = new SDL_Rect;
    ball_pos = ball.get_position();
    pong_pos = pong.get_position();

    if( ball_pos->y + ball.bmp->h + 1 < pong_pos->y || ball_pos->y - 1 > pong_pos->y + pong.bmp->h )
    {
        delete pong_pos;
        delete ball_pos;
        return false;
    }

    delete pong_pos;
    delete ball_pos;

    return true;
}
P.S.: Ja, ich weiß, dass ich ständig den Screen leere und neu update.

€dit: kurzer file-update

Re: [SDL]Pong

Verfasst: Mi Nov 10, 2010 11:37 pm
von cloidnerux
Das Projekt ist leicht unübersichtlich und ich hoffe ihr findet den Teil, den ich meine.
Ich kann ja auch mal schreiben, was nach dem heutigen 60 Minuten denken heraus kam. Zumindest bei der isSameHeight function. Leider kackt das Game, wenn ich die function so umschreibe, beim Start direkt ab.
Gefunden ja, verstanden nein.
Wieso stürzt dir das Spielt mit der unten genannten Funktion ab?
Hast du mal daran gedacht, dein Code zu reafactoren und beim aufräumen dann den Fehler zu finden?
Hast du dir mal grafisch verdeutlicht, welche Bedingung der Ball haben muss, um am Pong zu sein?
Wieso nutzt du nicht eine Separate Pong Klasse, die Richtung und Geschwindigkeit regelt und nur als Funktion die Position zurück gibt.
Hast du daran gedacht, die Kollisionsprüfung über einen Vektoren laufen zu lassen?
Ich hatte erst vor ein paar Wochen für ein auf dein Problem anwendbaren Fall ein paar Zeilen Code geschrieben.
Das sind jetzt etwas viele Vorschläge, aber schaue sie durch und überlege, welche dein Problem lösen könnten.

Re: [SDL]Pong

Verfasst: Do Nov 11, 2010 11:22 am
von Xin
Thread gesehen, lese mit, kann aber derzeit noch nichts testen.

Re: [SDL]Pong

Verfasst: Do Nov 11, 2010 10:42 pm
von MoonGuy
Xin hat geschrieben:Thread gesehen, lese mit, kann aber derzeit noch nichts testen.
Zum testen bräuchte man SDL und die 2 BMPs. Das sind aber eh nur weiße Punkte/Striche. War 60 Sekunden Arbeit.

€dit:
cloidnerux hat geschrieben:Wieso stürzt dir das Spielt mit der unten genannten Funktion ab?
Genau das verstehe ich ja nicht Q_Q
cloidnerux hat geschrieben:Hast du mal daran gedacht, dein Code zu reafactoren und beim aufräumen dann den Fehler zu finden?
Noch gar nicht^^ Habe frühestens eh erst am Wochenende Zeit
cloidnerux hat geschrieben:Hast du dir mal grafisch verdeutlicht, welche Bedingung der Ball haben muss, um am Pong zu sein?
Ohne das hätte ich die Funktion gar nicht schreiben können
cloidnerux hat geschrieben:Wieso nutzt du nicht eine Separate Pong Klasse, die Richtung und Geschwindigkeit regelt und nur als Funktion die Position zurück gibt.
Meinst du, damit man den Arrow Key gedrückt halten kann? Weil die Pongs bewegen sich wie gewünscht, nur der Ball nicht.
cloidnerux hat geschrieben:Hast du daran gedacht, die Kollisionsprüfung über einen Vektoren laufen zu lassen?
Ich hatte erst vor ein paar Wochen für ein auf dein Problem anwendbaren Fall ein paar Zeilen Code geschrieben.
Noch gar nicht, muss ich mir mal überlegen, wenn ich wieder Zeit habe.
cloidnerux hat geschrieben:Das sind jetzt etwas viele Vorschläge, aber schaue sie durch und überlege, welche dein Problem lösen könnten.
Das wird sich die Tage herausstellen.

Re: [SDL]Pong

Verfasst: Sa Nov 13, 2010 3:15 pm
von MoonGuy
Okay, habe mal eine Headerdatei für Vektoren geschrieben und paar Sachen in dem anderen Header umgeschrieben. Jetzt aber erstmal keine Lust an der cpp Datei rumzuschreiben. Wenn ihr noch Vorschläge zu den Headern habt, bevor ich heute Abend oder Morgen mit der cpp Datei anfange, dann postet los.

Die
pong.h
Datei sieht jetzt etwas anders aus, um mit Vektoren zu fungieren.
Die Vektoren Klasse ist in der
vector.h
Datei.
Und in der
vars2array.h
File befindet sich eine Funktion, um Variablen in ein Array zu schreiben. Da man für Operator Overloads ja maximal 1 Argument verwenden kann.

Re: [SDL]Pong

Verfasst: So Nov 14, 2010 2:34 pm
von Xin
Kannst Du das in ein Projekt zusammenpacken, dann werf ich mal die Netze aus.

Re: [SDL]Pong

Verfasst: So Nov 14, 2010 10:04 pm
von MoonGuy
Xin hat geschrieben:Kannst Du das in ein Projekt zusammenpacken, dann werf ich mal die Netze aus.
Pong.rar

Re: [SDL]Pong

Verfasst: Do Nov 18, 2010 9:40 pm
von MoonGuy
Nachdem Pong bei mir nun vollständig funktionsfähig ist, wollte ich die SDL_ttf nun hinein adden. Klappte alles soweit super. Den Sourcecode geladen, gebuilded, DLLs und libs überall geadded, aber leider braucht SDL_ttf eine installierte Version von freetype(.dll). Leider funktioniert dies mit meinem 64-Bit OS nicht. Ich habe es zwar hinbekommen den Sourcecode von Freetype zu einer DLL zu compilen, aber es erzeugt nur Fehler. Wenn ich die beiligende "make.exe" verwenden will, sagt er mir, dass dies nur mit x86(32-Bit) möglich ist.

Hat jemand Ideen/Vorschläge, wie man das beheben kann?


Syntaxtechnisch gesehen fertiges Spiel:
Pong.rar
Binary.rar

Re: [SDL]Pong

Verfasst: Fr Nov 19, 2010 10:57 am
von Xin
Ich habe Pong soeben mal auf Debian Linux (64Bit) kompiliert und gespielt. :-)
MoonGuy hat geschrieben:Nachdem Pong bei mir nun vollständig funktionsfähig ist, wollte ich die SDL_ttf nun hinein adden. Klappte alles soweit super. Den Sourcecode geladen, gebuilded, DLLs und libs überall geadded, aber leider braucht SDL_ttf eine installierte Version von freetype(.dll). Leider funktioniert dies mit meinem 64-Bit OS nicht. Ich habe es zwar hinbekommen den Sourcecode von Freetype zu einer DLL zu compilen, aber es erzeugt nur Fehler. Wenn ich die beiligende "make.exe" verwenden will, sagt er mir, dass dies nur mit x86(32-Bit) möglich ist.
Was ist "es"? Die Kompiliervorgang oder die kompilierte DLL?
Was genau meldet make?

Re: [SDL]Pong

Verfasst: Fr Nov 19, 2010 4:42 pm
von MoonGuy
Xin hat geschrieben:Ich habe Pong soeben mal auf Debian Linux (64Bit) kompiliert und gespielt. :-)
MoonGuy hat geschrieben:Nachdem Pong bei mir nun vollständig funktionsfähig ist, wollte ich die SDL_ttf nun hinein adden. Klappte alles soweit super. Den Sourcecode geladen, gebuilded, DLLs und libs überall geadded, aber leider braucht SDL_ttf eine installierte Version von freetype(.dll). Leider funktioniert dies mit meinem 64-Bit OS nicht. Ich habe es zwar hinbekommen den Sourcecode von Freetype zu einer DLL zu compilen, aber es erzeugt nur Fehler. Wenn ich die beiligende "make.exe" verwenden will, sagt er mir, dass dies nur mit x86(32-Bit) möglich ist.
Was ist "es"? Die Kompiliervorgang oder die kompilierte DLL?
Was genau meldet make?

Was freetype ist, keine Ahnung.

SDL_ttf ist eine Erweiterung für SDL um ttf Dateien(fonts) zu lesen und Schriften auf den Screen zu schreiben.

Die Fehlermeldung von der make.exe ist die folgende:
error.png