Spiel funktioniert nicht mehr / include?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Xezog42

Betreff: Spiel funktioniert nicht mehr / include?

BeitragDi, Jun 11, 2013 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich und ein Freund von mir schreiben momentan ein Spiel, (2D Top down) es ist unser erstes Spiel, wir sind also noch ganz am Anfang. Bis jetzt hatten wir nur eine Datei in der wir das ganze Spiel geschrieben haben, jetzt wollten wir es in verschiedene .bb Dateien umschreiben, alle für eine eigene Funktion, welche wir dann in der Hauptdatei mit dem 'include' command zusammenbringen. Jetzt startet das Spiel nicht mehr richtig, es gibt keine Fehlermeldung, sondern nur ein kleines Schwarzes Fenster in der im Quelltext angegebenen größe (640x480). Das einzige was in der "Hauptdatei" steht, ist der Hintergrund der ersten spielebene (Eher ein Test), die Grafik einstellungen (640, 480, 0, 1) und die 'include' commands welche die anderen Dateien (Bis jetzt nur 2) hinzufügen. Wenn ich die anderen Dateien entferne (Die 'include' commands in Kommentare setze) sieht man sogar den Hintergrund, aber sobald ich eines der 2 Dateien hinzufüge wird es wieder zum kleinen blackscreen. Meine Frage wäre generell auf was genau ich achten muss wenn ich andere Dateien 'include', zum Beispiel ob ich alle Dateien mit einander verknüpfen muss, oder wie wir es gemacht haben nur in eine, ob man in alle codes eine Grafikeinstellung schreiben muss usw.

-Xezog42
 

Kruemelator

BeitragDi, Jun 11, 2013 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Include funktioniert so:
Anstelle von "Include dateipfad$" steht beim compilieren all das was in dieser Datei steht.

BladeRunner

Moderator

BeitragDi, Jun 11, 2013 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Etwas mehr Einblick in euren Code wäre hilfreich Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Xezog42

BeitragDi, Jun 11, 2013 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Kruemelator hat Folgendes geschrieben:
Include funktioniert so:
Anstelle von "Include dateipfad$" steht beim compilieren all das was in dieser Datei steht.


Danke! Wir hatten die 'include'-commands ganz oben, ich habe sie jetzt mal an sinnvollere Stellen geschrieben und es sieht schonmal besser aus! Es ist jetzt Vollbild und der Hintergrund wird angezeigt, nur nicht der Spieler, aber das wird am code liegen, da wir ihn erst mit der "Code-Trennung" geändert haben und es seit dem ja nicht mehr funktionierte. Wenn ich weitere Probleme bekomme werde ich den Code schicken, bis jetzt versuche ich es erst einmal so.

DAK

BeitragDi, Jun 11, 2013 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten macht man es so, dass in jeder Include-Datei nur Funktionen sind, die dann von der Hauptdatei aufgerufen werden:

BlitzBasic: [AUSKLAPPEN]

;dat1.bb
Function Dat1()
;... mach was tolles ...
End Function


BlitzBasic: [AUSKLAPPEN]

;Hauptdatei
Include "dat1.bb"

Dat1()


Dann ist es nämlich egal, wo sich das Include befindet.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Xezog42

BeitragDi, Jun 11, 2013 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, das momentane Problem ist folgendes:
Der Player ist in einer eigenen Datei (player.bb), wo ihm 1. Das laufen beigebracht wird, und wo steht, das er je nach laufrichtung anders aussehen soll (Wenn er nach oben läuft = "charup.png", nach links = "charleft.png usw... (btw, welches dateiformat ist eigentlich am besten?)) das wird von einer Variable bestimmmt, welche je nach tastendruck (W,A,S oder D) zwischen 1 bis 4 umspringt und damit das Aussehen des Spielers beeinflusst. Abgesehen davon das ich den Spieler nicht sehen kann, gibt mir das Programm beim Beenden immer die Fehlermeldung das ein benutztes Bild nicht existiert ("Image does not exist") und zwar immer bei dem bild, was eigentlich gerade hätte anzeigen sollen (wenn ich also vor dem beenden als letztes nach rechts gelaufen bin sagt er das "charright.png" nicht existiert usw.)

Addi

BeitragDi, Jun 11, 2013 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutzt du FreeImage()?
Eventuell versuchst du ein nicht geladenes/bereits gelöschtes Bild aus dem Speicher zu löschen.

Generelle Sachen zu Bildern:
Alle Bilder, die in Funktionen benutzt werden, müssen in globalen Variablen gespeichert werden.
Für alle Bilder gilt:
Sie müssen nach dem Graphics-Befehl geladen werden, da der Aufruf dieser Funktion dafür sorgt, das der Grafikspeicher geleert wird. Wink
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62
 

Xezog42

BeitragDi, Jun 11, 2013 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Addi hat Folgendes geschrieben:
Benutzt du FreeImage()?
Eventuell versuchst du ein nicht geladenes/bereits gelöschtes Bild aus dem Speicher zu löschen.

Generelle Sachen zu Bildern:
Alle Bilder, die in Funktionen benutzt werden, müssen in globalen Variablen gespeichert werden.
Für alle Bilder gilt:
Sie müssen nach dem Graphics-Befehl geladen werden, da der Aufruf dieser Funktion dafür sorgt, das der Grafikspeicher geleert wird. Wink

Danke, jetzt gibt es schonmal keine Fehlermeldung mehr aber man kann den Spieler immernoch nicht sehen. Da ich ihn sehen konnte als ich den Hintergrund als test entfernt hatte, habe ich damit gerechnet das er unter dem Hingergrund ist, allerdings kann das nicht sein, da der Hintergrund als aller erstes im code vorkommt. Etwas anderes was auffällig ist, ist das immer wenn ich ESC drücke, kurz bevor er beendet kurz den Spieler an seiner position frei gibt.
 

Kruemelator

BeitragDi, Jun 11, 2013 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Allgemein kann man sagen:
Lade alle Bilder VOR der Hauptschleife und vermeide sie in Funktionen zu laden.
Ob die Bilder global sind oder an die Funktion übergeben werden ist egal.

Setzt mal dein "DrawImage" oder "DrawBlock" direkt vor "Flip" (wenn der Player mit einer Funktion gemalt wird dann setze diese direkt über "Flip").

Berechne erst alles und male dann das macht es übersichtlicher.

Am besten können wir dir helfen wenn du uns deinen Code zeigst, oder noch besser die entsprechenden Ausschnitte dann müssen wir nicht suchen.

Zum Dateiformat:
.jpg = braucht am wenigsten Speicherplatz, es sind aber kleine Fehler im Bild (vorallem wenn man transparente Bilder benutzt)
.bmp = Bild ist genauso wie du es gemalt hast, dafür brauch es aber riesig viel Speicherplatz
.png = Bild ist das selbe wie .bmp braucht aber deutlisch weniger Speicher (immer noch mehr als .jpg)

Midimaster

BeitragDi, Jun 11, 2013 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ihr könnt das Spieler Image auch mehrfach malen lassen. Malt doch mal genau eine Zeile vor FLIP den Spieler auf die Koordinaten 100,100:

BlitzBasic: [AUSKLAPPEN]
    ...
DrawImage charup.png,100,100
Flip
Until....


dann könnt ihr euch schon mal sicher sein, ob das Bild überhaupt "malbar" ist.

Ebenso könntet ihr mal die Koordinaten den Spieler als Text ausgeben. Oft liegt es daran, dass der Spieler, der sich eigentlich im Spielfeld befinden sollte, wegen eines Rechenfehlers außerhalb gezeichnet wird:

BlitzBasic: [AUSKLAPPEN]
DebugLog "Spieler ist bei... X=" + Spieler_X + "   und  Y="  + Spieler_Y


Es könnte auch sein, dass ihr zwar auf die Tastendrücke AWDS mit Bildmalen reagiert, aber für den Fall, dass keine Taste gedrückt wird kein Bildmalen vorgesehen habt.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

DAK

BeitragDi, Jun 11, 2013 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@Kruemelator:
Kann ich noch eine Kleinigkeit zu den Bildformaten anmerken:
.jpg: Perfekt für "natürliche" Bilder, also alles, was von haus aus viel Rauschen hat, wie ein Foto. Nicht gut für alles andere. JPG ist verlustbehaftet, das heißt, es kommt ein Rauschen ins Bild. Alles was mit genauen Farbwerten gemacht werden muss (z.B. Masking) funktioniert mit jpg üblicherweise nicht.
.png: Perfekt für "künstliche" Bilder, also alles, was glatte Flächen hat. Bei Bildern mit glatten Flächen ist png oft sogar kleiner als jpg. PNG ist verlustfrei, Masking u.Ä. geht. PNG ist für die meisten Spiele das Format der Wahl (außer man benutzt, wie gesagt, Fotos)
.bmp: Nicht gut für gar nix, Finger weg. png kann alles was BMP kann (Genauigkeit), ist dabei aber exponentiell kleiner!
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group