[SDL]Pong

Schnelle objektorientierte, kompilierende Programmiersprache.
MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

[SDL]Pong

Beitrag von MoonGuy » Mi Nov 10, 2010 11:24 pm

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

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [SDL]Pong

Beitrag von cloidnerux » Mi Nov 10, 2010 11:37 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [SDL]Pong

Beitrag von Xin » Do Nov 11, 2010 11:22 am

Thread gesehen, lese mit, kann aber derzeit noch nichts testen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: [SDL]Pong

Beitrag von MoonGuy » Do Nov 11, 2010 10:42 pm

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.

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: [SDL]Pong

Beitrag von MoonGuy » Sa Nov 13, 2010 3:15 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [SDL]Pong

Beitrag von Xin » So Nov 14, 2010 2:34 pm

Kannst Du das in ein Projekt zusammenpacken, dann werf ich mal die Netze aus.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: [SDL]Pong

Beitrag von MoonGuy » So Nov 14, 2010 10:04 pm

Xin hat geschrieben:Kannst Du das in ein Projekt zusammenpacken, dann werf ich mal die Netze aus.
Pong.rar

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: [SDL]Pong

Beitrag von MoonGuy » Do Nov 18, 2010 9:40 pm

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [SDL]Pong

Beitrag von Xin » Fr Nov 19, 2010 10:57 am

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: [SDL]Pong

Beitrag von MoonGuy » Fr Nov 19, 2010 4:42 pm

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten