Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Cain
Anmeldungsdatum: 23.03.2010 Beiträge: 4
|
Verfasst am: 23.03.2010, 11:50 Titel: Jump and Run Example |
|
|
Hallo zusammen! Vieleicht interessiert es ja irgendwen und vieleicht kann es ja irgendwer gebrauchen. Es ist höchstwarscheinlich nicht ideal und wunderschön Programmiert aber naja...sorry
Gleichzeitig hab ich noch eine Frage....Der Leveleditor hat nenn Bug das er andauernd ohne Grund beendet. Vieleicht hat ja hier jemand eine idee.
Außerdem möchte ich eine größere Levelgröße erzielen. Vieleicht hat ja jemand ein Level Konzept was er empfehlen kann/möchte
http://www.megafileupload.com/en/file/209471/Mario-zip.html
(Ach ja im Spiel hab ich ein Debugmode eingebaut andem man die Kollision und die Events im Level sehen kann. Einfach im Spiel die Taste "d" drücken.)
Beste Grüße und Viel spaß damit
Cain |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 23.03.2010, 15:36 Titel: |
|
|
Der Editor stürzt bei mir gleich beim Starten mit der Standard-Fehlermeldung "editor.exe hat ein Problem festgestellt und muss beendet werden.." ab. Die häufigen Abstürze bei dir werden auch nicht unbegründet sein, sondern irgendein Programmfehler.
Das Spiel funktioniert ganz gut. Es wäre natürlich noch vieles auszubauen, damit es mindestens den Funktionsumfang von einem normalen Mario-Spiel hat.
Kann man bei dem Spiel derzeit eigentlich auch verlieren? _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 23.03.2010, 16:14 Titel: |
|
|
Du hast da zu viele Arrays auf dem Stack.
mach die Doubles, Strings und tilegrs oben Shared.
Code: | dim Shared As double map(200,200), x,y,gx,gy,i,cx,cy,l
dim Shared As string emap(200,200),a
dim Shared Tile(80) as tilegr |
bei mir stürzt es so nicht mehr ab. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
 |
Cain
Anmeldungsdatum: 23.03.2010 Beiträge: 4
|
Verfasst am: 23.03.2010, 19:49 Titel: |
|
|
Code: | Kann man bei dem Spiel derzeit eigentlich auch verlieren? |
Nein zzt ist es das sicherste Mario der Welt
@Cherry & 28398: Danke für die Tipps! Wird gleich mal getestet...
Mit dem vergrößern des Stacks hört sich gut an....Wenn ich das richtig verstanden hab kann ich somit die Arrays vergrößern. Also kann ich auch somit die Level vergrößern!?
Ach ja bevor ich es vergesse.... Was haltet ihr von der event map? Hat jemand einen Alternativen Vorschlag zur Warp (Röhren Teleporter) funktion?
Besten Dank!
Cain |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.03.2010, 20:04 Titel: |
|
|
Zitat: | Mit dem vergrößern des Stacks hört sich gut an.... |
das hört sich nur temporär an, lies dich lieber mal schlau, was der stack ist, bevor du permanent einen riesigen stack zulässt... das geht auch ohne stackvergrößerung. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 23.03.2010, 21:22 Titel: |
|
|
Mit etwas Organisation kriegst du ziemlich große Level zustande, ohne den Speicher zu überbeanspruchen. Ich habe jetzt mal nur kurz über den Quellcode geblickt; ich speichere die Daten schon mal als Integer, ich weiß gar nicht wozu du ein Double brauchst. Dann würde ich nur alle 16 Pixel ein Tile setzen (das ist, glaube ich, deine Tile-Breite), dann brauchst du für eine Levelbreite von 200 px schon mal kein Array der Länge 200, sondern nur noch 200/16. Oder anders herum: bei einer Array-Länge von 200 ist dein Level 200*16 = 3200 Pixel breit.
Andere, etwas aufwändigere Alternative wäre es, ein Array mit allen im Level vorhandenen Objekten inkl. Position zu speichern. Dadurch wird der Speicherbedarf noch kleiner und die Objektplazierung flexibler (nicht an das 16x16-Raster gebunden), die Abfrage aber etwas komplizierter.
Ich speichere meine Daten binär, dann werden die Leveldateien recht kompakt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Cain
Anmeldungsdatum: 23.03.2010 Beiträge: 4
|
Verfasst am: 23.03.2010, 21:39 Titel: |
|
|
Ich habe die Tile Nummerierung(?!) anders geplant, deswegen habe ich double benutzt was zzt, wie ihr schon sagt allerdings Schwachsinn ist! Hab's auch schon in integer geändert! Code: | Oder anders herum: bei einer Array-Länge von 200 ist dein Level 200*16 = 3200 Pixel breit. |
Wenn ich es nicht falsch verstanden hab, hab ich es ja genau so gemacht!
Code: | das geht auch ohne stackvergrößerung. |
Hast du vieleicht ein kleines Beispiel parrat, oder ein Konzept? Währe echt super!
Aber ich werd noch ein wenig Googeln
Danke & Gruß
Cain |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.03.2010, 21:58 Titel: |
|
|
Zitat: |
Hast du vieleicht ein kleines Beispiel parrat, oder ein Konzept? |
Das array muss noch nicht mal shared sein, wie es bei Cherrys beispiel der fall ist (schlechter stil). Du kannst z.B. einfach überall pointer statt dem eigentlichen array übergeben. das ist schnell und belastet den speicher nicht unnötig. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.

Zuletzt bearbeitet von Jojo am 24.03.2010, 23:25, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Cain
Anmeldungsdatum: 23.03.2010 Beiträge: 4
|
Verfasst am: 23.03.2010, 22:41 Titel: |
|
|
Ok dann werd ich mal nen bischen rum Probieren!
Danke! |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 23.03.2010, 23:12 Titel: |
|
|
Cain hat Folgendes geschrieben: | Zitat: | Oder anders herum: bei einer Array-Länge von 200 ist dein Level 200*16 = 3200 Pixel breit. |
Wenn ich es nicht falsch verstanden hab, hab ich es ja genau so gemacht! |
Dann habe ich das auf die Schnelle falsch aufgefasst, tschuldigung.
Vorschlag wegen Warp-Funktion: Bei binärer Speicherung kannst du z. B.
* jedes Tile mit einem zusätzlichen Integer versehen, das zusätzliche Informationen beinhaltet (bei einer Röhre die Koordinaten der zugehörigen Zielröhre; so ähnlich hast du es, glaube ich, gemacht, nur eben mit Text). Lohnt sich nur, wenn es mehrere verschiedene Tiles mit Zusatzinformationen gibt.
* stattdessen hinter die Leveldaten eine Liste zusammengehöriger Röhrenenden setzen. Braucht 2 Integer pro Röhrenverbindung (Startkoordinaten, Zielkoordinaten) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 24.03.2010, 23:14 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Code: |
Hast du vieleicht ein kleines Beispiel parrat, oder ein Konzept? |
Das array muss noch nicht mal shared sein, wie es bei Cherrys beispiel der fall ist (schlechter stil). Du kannst z.B. einfach überall pointer statt dem eigentlichen array übergeben. das ist schnell und belastet den speicher nicht unnötig. |
Da hast du natürlich Recht, allerdings wollte ich damit erreichen, dass er den Fehler schnell beseitigen kann ohne graviernd was ändern zu müssen.
Aber wenn ichs mir recht überlege, ist das wohl der falsche Weg - wir wollen ja, dass er was lernt. |
|
Nach oben |
|
 |
|