Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Jump and Run Example

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Cain



Anmeldungsdatum: 23.03.2010
Beiträge: 4

BeitragVerfasst am: 23.03.2010, 11:50    Titel: Jump and Run Example Antworten mit Zitat

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 zwinkern
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 lächeln
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 lächeln
Cain
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 23.03.2010, 15:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 23.03.2010, 16:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 23.03.2010, 16:42    Titel: Antworten mit Zitat

Unter Umständen hilft auch ein Vergrößern des Stacks. Dazu musst du lediglich mit der Compileroption -t %d kompilieren. Setzte für %d doch mal testweise 65535 ein. (s. http://www.freebasic.net/wiki/wikka.php?wakka=CompilerOptt)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cain



Anmeldungsdatum: 23.03.2010
Beiträge: 4

BeitragVerfasst am: 23.03.2010, 19:49    Titel: Antworten mit Zitat

Code:
Kann man bei dem Spiel derzeit eigentlich auch verlieren?

Nein lächeln zzt ist es das sicherste Mario der Welt Zunge rausstrecken

@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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.03.2010, 20:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 23.03.2010, 21:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Cain



Anmeldungsdatum: 23.03.2010
Beiträge: 4

BeitragVerfasst am: 23.03.2010, 21:39    Titel: Antworten mit Zitat

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 lächeln

Danke & Gruß
Cain
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.03.2010, 21:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cain



Anmeldungsdatum: 23.03.2010
Beiträge: 4

BeitragVerfasst am: 23.03.2010, 22:41    Titel: Antworten mit Zitat

Ok dann werd ich mal nen bischen rum Probieren!
Danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 23.03.2010, 23:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 24.03.2010, 23:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz