Problem mit Game
Übersicht

Blackdragon1989Betreff: Problem mit Game |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habe ein Problem mit dem ich mich schon seit einem Tag rum ärgere aber einfach keine Lösung finde...
Ich hatte das das Spiel im Meü startet, im Menü sind 3 Bilder(Spiel starten,Steuerung und Beenden) wenn ich jetzt zuerst auf Steuerung klicke dann kommt die Steuerung(was ja so sein soll)aber wenn ich aus der Steuerung zurück ins Hauptmenü gehe und dann auf Spiel starten klicke beendet das Programm, jedoch wenn ich zuerst auf Spiel starten klicke startet das Spiel ganz normal. Hier der Code vom Spiel an sich Code: [AUSKLAPPEN] Graphics 640,480,16,1 SetBuffer = BackBuffer() HidePointer() ;Variablen laden beginn Bg = LoadImage("background.jpg") Fk = LoadImage("Fadenkreuz.bmp") Fz = LoadAnimImage("Flugzeug.bmp" ,104 ,31 ,0 ,2) X_Fz = 640 Frame_Fz = 0 Tp = LoadImage("Panzer.bmp") X_Tp# = 640 ;Variablen laden ende While Not KeyHit(1) ;Pause Menü Beginn If KeyDown(197) Or KeyDown(25) Then pause = LoadImage("Pause.bmp") MaskImage pause, 0,0,255 DrawImage pause,50,100 WaitKey EndIf ;Pause Menü ende ;Frame für Flugzeug Frame_Fz = Frame_Fz + 1 If Frame_Fz = 2 Then Frame_Fz = 0 ;Frame für Flugzeug ende X_Fz = X_Fz - 1 X_Tp# = X_Tp# - 0.5 TileImage Bg MaskImage Tp,0,0,255 DrawImage Tp,X_Tp,450 MaskImage Fz,0,0,255 DrawImage Fz, X_Fz,50,Frame_Fz MaskImage Fk,0,0,255 DrawImage Fk,MouseX()-25,MouseY()-25 Flip Wend das Menü Code: [AUSKLAPPEN] Graphics 640,480,16,1 SetBuffer BackBuffer() HidePointer Hintergrund = LoadImage("Menü.bmp") start = LoadImage("start.bmp") Ctrl = LoadImage("Steuerung.bmp") Ende = LoadImage("beenden.bmp") Fk = LoadImage("fadenkreuz.bmp") While Not KeyHit(1) Cls TileImage Hintergrund ;Start DrawImage start,220,200 If ImagesCollide(Fk,MouseX()-25,MouseY()-25,0,start,220,200,0) If MouseHit(1) Include "2D_Shooter.bb" Exit EndIf EndIf ;Start ;Steuerung DrawImage Ctrl,220,250 If ImagesCollide(Fk,MouseX()-25,MouseY()-25,0,Ctrl,220,250,0) If MouseHit(1) Include "Steuerung.bb" Exit EndIf EndIf ;Steuerung ;Beenden DrawImage Ende,220,300 If ImagesCollide(Fk,MouseX()-25,MouseY()-25,0,Ende,220,300,0) If MouseHit(1) Exit EndIf EndIf ;Beenden MaskImage Fk,0,0,255 DrawImage Fk,MouseX()-25,MouseY()-25 Flip Wend und das Steuerungs menü Code: [AUSKLAPPEN] Graphics 640,480,16,1 SetBuffer BackBuffer () HidePointer Fk = LoadImage("fadenkreuz.bmp") pic = LoadImage("Ctrl.bmp") Ende = LoadImage("back.bmp") While Not KeyHit(1) Cls TileImage pic DrawImage Ende ,210 ,420 If ImagesCollide(Fk , MouseX()-25 ,MouseY()-25 ,0 ,Ende ,210 ,420 ,0) If MouseHit(1) Include "Menü.bb" Exit EndIf EndIf MaskImage Fk ,0,0,255 DrawImage Fk ,MouseX()-25 ,MouseY()-25 Flip Wend Include"Menü.bb" Exit Ich hoffe jemand kann mir helfen... |
||
User posted image |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code ist gespickt mit ganz typischen Fehlern von Einsteigern ![]() pause = LoadImage("Pause.bmp")
LoadImage und Maskimage haben nichts in einer Hauptschleife zu suchen, auch nicht in der gegebenen Konstellation MaskImage pause, 0,0,255 ![]() ![]() Include bindet den Code so ein als hätte er schon immer an der Stelle gestanden. Entsprechend hast Du auch mehrmals Graphics im Code. Das wird zum einen den Spieler später nerven, weil niemand dieses rumgeflackere gerne haben will und hat den Nebeneffekt das alle in diesem Programm geladenen oder erstellten Grafiken aus dem Speicher entfernt werden. Der Rest ist dann eine Milchmädchenrechnung ![]() MouseHit() sollte pro Schleifendurchlauf nur einmal aufgerufen werden. In gegebenem Code würde es zwar funkionieren, aber es ist eine schlechte Angewohnheit und wird früher oder später zu Problemen führen. Ein Aufruf von MouseHit() leert nämlich den Buffer (was Buffer sind und wo sie überall vorkommen wird auf www.blitzbase.de sehr schön erklärt) und ein weiterer Aufruf wird False zurückgeben. Darum macht es Sinn den Wert in einer Variable zwischenzuspeichern und mit dieser zu arbeiten, ala mh=MouseHit(1) oder dergleichen ![]() In diesem Sinne, tret den bestehenden Code in die Tonne und schreibs nochmal mit Struktur. Mit der jetzigen Vorgehensweise wirst Du ausser Enttäuschungen auf Deiner Seite nicht viel ernten ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blackdragon1989 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok ich werde den Code mal umstruckturieren aber diese konstellations Fehler haben nichts damit zu tun das das Spiel abkackt oder ?
Und wegem den Flackern...wie könnte ich dann sonst machen ausser mit include, einfach nur da wo include steht den code reinhauen oder wie ? Edit: Also ich hab das mit dem mh = Mousehit(1) mal ausprobiert aber da kann ich klicken wie ich will da passiert einfach nichts. |
||
User posted image |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Also ich hab das mit dem mh = Mousehit(1) mal ausprobiert Es passiert in dem Sinnne schon was, nämlich das die Variable mh den Wert 1 (also True) annimmt ![]() ![]() If mh Print "Ist ja cool :D"
Include zu verwenden ist eine imho eine gute Möglichkeit Codes übersichtlich zu halten und von daher zurecht beliebt. Nur habe ich den Eindruck Du hast die Funktionsweise missverstanden ![]() ; Datei main.bb
völlig identisch mit diesem:
Graphics 640,480,32,1 SetBuffer BackBuffer() Repeat Cls Oval 100,100,60,30,1 Flip Until KeyHit(1) Code: [AUSKLAPPEN] ; Datei main.bb
Include wird also durch den Code in anderen Datei einfach ersetzt und erst dann wird das Programm kompiliert Graphics 640,480,32,1 SetBuffer BackBuffer() Repeat Cls Include "oval.bb" Flip Until KeyHit(1) ; Datei oval.bb Oval 100,100,60,30,1 ![]() Und das abkacken an sich kommt schlicht daher das Graphics den Grafikspeicher ausleert und somit die Fadenkreuz-Grafik dem ImagesCollide im Menü nicht mehr zur Verfügung steht. Wird sich aber alles geben wenn Du den Ratschlag von eben beherzigst ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blackdragon1989 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah danke jetzt geht´s ! | ||
User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group