Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
04.05.2002, 22:44
Mazze



Hi!
Da auf DHCC diese SDL Tutorials "rumfahren" hab ich die mir mal angeschaut!
Als ich bei Tutorial 5 angekommen war hab ich mir gedacht, dass SDL ja ganz nett ist und dass ich da mal ein kleines Spielchen machen könnte.

Also gut, mal was leichtes: Snake!
So einfach wars gar nicht.....
Aber es ging dann doch recht schnell und jetzt kann man eigentlich erkennen, dass es Snake sein soll.
Es läuft recht gut. Heute hab ich's aber auf einem andern PC spielen wollen und nichts geht!

Die Schlangenteile fliegen wils umher, wenn ich die Richtung wechseln will!
Ich find das recht komisch, da es ja auf meiem PC gut funktioniert!
Auch im Code hab ich bis jetzt noch nichts gefunden, dass irgendwelche Inkompatibilitäten verursachen könnte.

Ich hoffe ihr findet was.
Hier ist der Code!

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/


Dieser Beitrag wurde am 04.05.2002 um 22:45 von Mazze bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
05.05.2002, 13:03
Mazze



Das scheint nicht so arg viele zu interessieren, aber vielleicht seht ihr den Fehler besser, wenn ihr die Wendepunkte seht!
Das kann man mit dem Parameter -t machen!

Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
002
05.05.2002, 13:23
Prefect



Das ist ein Logikproblem.

Die hinteren Teile der Schlange wechseln nur dann die Richtung, wenn sie sich _genau_ an der Position des Wendepunkts befinden. Da nun aber die Framerate schwanken kann und auf unterschiedlichen Rechnern durchaus auch mal anders ist kann es vorkommen, daß ein Schlangenteil am Wendepunkt vorbeizieht ohne je genau an dieser x/y-Position zu sein. Damit wechselt es natürlich auch nie die Richtung.

Du solltest lieber in UpdateSnake testen, ob ein Teil am Wendepunkt _vorbei_zieht, und wenn ja, ändere die Richtung und passe die x/y-Koordinaten entsprechend an.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
003
05.05.2002, 16:32
Mazze



Also erstmal geil, dass du Zeit hast dir den Source anzusehen. Hab zuerst gedacht ich vergraul alle damit, dass sie den Source erst runterladen müssen.

OK. Ich hab den Code jetzt so gemacht:
Quellcode:
if(g_Turningpoints.point[c].valid &&
                g_Snake.part[ i ].x - g_Turningpoints.point[c].x >= -5 && g_Snake.part[ i ].x - g_Turningpoints.point[c].x <= 5 &&
                g_Snake.part[ i ].y - g_Turningpoints.point[c].y >= -5 && g_Snake.part[ i ].y - g_Turningpoints.point[c].y <= 5)
        

So geht's auch auf anderen PCs, nur mit Fehlern.
Jetzt werden die Parts zu früh abgelenkt. Ich muss ja eigentlich die Teile ganau auf den Turningpoints wenden lassen, da sonst der Kopf aus der Reihe tanzt, da er ja sofort auf Tastendruck wendet!

--

BattleTech-MOD:
http://bthl.unitedgaming.net/


Dieser Beitrag wurde am 05.05.2002 um 16:33 von Mazze bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
06.05.2002, 14:54
Another1



was is daran so schwer?
ne schlange wie in snake is ja letztendlich nix anderes als ne verkettete liste. Wenn du nu die schlange steuerst, oder die schlange sich bewegt, dann passiert nix anderes als:
1. Das erste schlangenelement wird bewegt
2. alle anderen schlangenelemente bekommen genau die position ihres vorgängers

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
005
06.05.2002, 17:36
Prefect



Quellcode:
Bewege das Schlangenteil entsprechend momentaner Geschwindigkeit & Framerate

Pointcheck:
Wenn Schlangenteil am nächsten Turningpoint vorbei ist
    Ändere Richtung entsprechend des Turningpoints
    Setze das Schlangenteil an die Position des Turningpoints
    Bewege das Schlangenteil so viele Pixel in die neue Richtung, wie es über den Turningpoint hinausgeschossen ist
    goto Pointcheck:

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
006
06.05.2002, 19:45
Mazze



@A1: Naja.....im Prinzip hab ich das ja so in etwa gemacht....

@Prefect: OK, ich denke so wirds gehen, aber ruckelt die Schlange dann nicht? Ich probiers nachher aus und poste wie's ist!

thx
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
007
08.05.2002, 14:34
Mazze



Da gibts Probleme ohne Ende!
Ich darf ja _nie_ einfach überprüfen, ob ein Teil _auf_ dem Punkt ist sondern immer nur ob es vorbei ist. Das ist recht umständlich und nicht sauber!

Ich habe es jetzt so gemacht, wie es Another1 vorgeschlagen hat:
Ich hab nur den kopf bewegt und die restlichen Teile dann upgedatet, so dass sie die alte Position ihres Vorgängers bekommen. Das würde ja gehen, wenn der Kopf sich genau so viel bewegen würde wie ein Teil lang ist. Wenn er sich aber nur um die Hälfte oder ganz anders bewegt, was höchstwahrscheinlich der Fall sein wird, dann schiebt es ja die Schlange zusammen, bzw. sie wird länger.

Das gibts doch nicht, dass so ein blödes Snake so Probleme macht!

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
008
08.05.2002, 16:44
Another1



dann überlappen die sich halt! oder noch einfacher: kannstu die dinger nich stretchen?

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
009
08.05.2002, 19:51
Mazze



Stretchen?
Was meinst du damìt?
Die ganze Schlange verlängern?
Wie soll ich denn da um Ecken kommen?

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
010
21.05.2002, 22:23
The_real_KANE



hrm, ich hatte auch mal Snake programmiert. Ich hatte das damals etwas
anders mit dem FIFO verfahren gemacht. im pseudo code ungefähr so:

vektor Schlange[500];

Schlange[0].x = 10;
Schlange[0].y = 10;

int schreibindex = 1;
int leseindex = 0;

//x und y verändern sich immer bei jeden durchgang

Schlange[schreibindex].x = x;
Schlange[schreibindex].y = y;
map_array[Schlange[schreibindex].x][Schlange[schreibindex].y] = 1;
map_array[Schlange[leseindex].x][Schlange[leseindex].y] = 0;
schreibindex++;
if(!Punkt_eingesammelt)
leseindex++;

länger als 500 teile wird deine schlange wohl sowieso nie.
damit sollte es eigentlich gut funzen. lief bei mir 1a.
Und wenn du ein richtig einfaches game machen willst, dann nimm
am besten Sokoban. Das ist echt easy.

PS: der code über dem kommentar darf nur 1 mal aufgerufen werden.
der darunter bei jedem frame...

--

Die Welt geht unter, gehen sie mit!


Dieser Beitrag wurde am 21.05.2002 um 22:24 von The_real_KANE bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche