Brauche hilfe bei Tutorial Code

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mevsmp

Betreff: Brauche hilfe bei Tutorial Code

BeitragSo, Feb 26, 2006 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry das ich das wieder hervorhole, jedoch hab ich ein Problem mit diesem Code:
wenn ich in der Hauptschleife (game_haupt) ein Model lade und es anzeige, und dann ins Menü oder in die Pause gehe, dann wieder zurück ins game, dann hab ich plötzlich 2x Models!! Also jedesmal wenn er wieder in die Hauptschleife geht, wird das Model nochmal geladen und angezeigt. Das gleiche gilt auch für lights.......

Hab schon zig Methoden ausprobiert um diesen Problem zu lösen, nichts hat geklappt.. Sad((( Mit FreeEntity auch net Sad vielleicht mach ich ja was falsch?!

Oder muss ich das Model in einem anderem Abschnitt laden? Nur wo?
Hier nochmal der Code vom Tutorial:

Code: [AUSKLAPPEN]
Graphics 1024,768,16,2
SetBuffer BackBuffer()

SetFont(LoadFont("Comic Sans MS",30,1))

Const game_pause = 1
Const game_menue = 2
Const game_haupt = 3
Const game_over  = 4

Global game_zustand = game_menue


;Wichtig. Hauptschleife. Hier wird das ganze Spiel verwaltet.

Repeat


Select game_zustand
   Case game_menue
      GameMenue()
   Case game_haupt
      GameHaupt()
   Case game_pause
      GamePause()
End Select


Until game_zustand = game_over
End





Function GameMenue()

Local temp_zustand = game_zustand

FlushMouse()
FlushKeys()

Repeat
ClsColor 0,0,0
Cls
   Color 0,0,255
   Text GraphicsWidth()/2,100,"ICH BIN DAS MENUE!!!",1,1
   
   
   Color 255,255,255
   Text GraphicsWidth()/2,400,"START"
   
   Color 255,255,255
   Text GraphicsWidth()/2,500,"ENDE"

   
   If MouseHit(1)
      If RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/2,400,StringWidth("START"),StringHeight("START"))
         game_zustand = game_haupt
      ElseIf RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/2,500,StringWidth("ENDE"),StringHeight("ENDE"))
         game_zustand = game_over
      EndIf
   EndIf
   
   
   If KeyHit(1)
      End
   EndIf
     
Flip
Until game_zustand<>temp_zustand

End Function





Function GameHaupt()

Local temp_zustand = game_zustand
Local x = GraphicsWidth()/2
Local y = GraphicsHeight()/2
Local h = 0

FlushKeys()
FlushMouse()

Repeat
ClsColor 200,200,200
Cls

h = (h+1) Mod 360

Color 0,0,255
Text x+Sin(h)*50,y-Cos(h)*100,"ICH BIN DAS SPIEL!! Escape Taste für Menue/Space für Pause",1,1


If KeyHit(57)
   game_zustand = game_pause
EndIf


If KeyHit(1)
   game_zustand = game_menue
EndIf

Flip
Until game_zustand<>temp_zustand

End Function






Function GamePause()

Local temp_zustand = game_zustand

FlushKeys()
FlushMouse()

Repeat
ClsColor 255,0,0
Cls
   
   Color 0,0,255
   Text GraphicsWidth()/2,GraphicsHeight()/2,"ICH BIN DIE PAUSE!!!",1,1
   
   If KeyHit(57)
      game_zustand = game_haupt
   EndIf
   
Flip
Until game_zustand<>temp_zustand

End Function

Chester

BeitragSo, Feb 26, 2006 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme an, du hast hast die LadeRoutine in der Function GameHaupt() reingesteckt, allerdings wird die Function, ja immer wieder neu geladen, wenn man die Pause verlässt. Deshalb mach ma die LadeRoutinen außerhalt der MainLoop.
 

dark19

Gast

BeitragMo, Feb 27, 2006 8:46
Antworten mit Zitat
Ich seh da nix von Models geschweige denn von irgetwelchen 3d Funktionen

BladeRunner

Moderator

BeitragMo, Feb 27, 2006 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
PSEUDOCODE:
Wenn Modellgeladenvariable gleich null ,dann lademodell und setze Modellgeladenvariable auf eins....

Kann man auch in eine Funktion packen.
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
 

mevsmp

BeitragMo, Feb 27, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
HI, danke schonmal für euren hilfe, aber einiges ist mir noch net ganz klar geworden:


@Chester: Ja genau. In GameHaupt. Aber wenn ich die LadeRoutine wo anders hinpacke, kommt immer eien Meldung das die Variable zB
drache=loadMD2 nicht existiert. Wohin soll ich sie denn dann hinpacken??

@dark19: in diesem Code sind keine md2, weil das das Original von einem Tutorial ist. Ich hab meins natürlich verändert.

@BladeRunner: "Wenn Modellgeladenvariable gleich null ,dann lademodell und setze Modellgeladenvariable auf eins...."
Das Prinzip habe ich verstanden und auch schon ausprobiert. Aber mit welchen Befehlen genau soll ich das machen? Oder wie stellst du dir das vor?
 

Dreamora

BeitragMo, Feb 27, 2006 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Chester: Du musst die variable global definieren bevor du die funktion aufrufst. dann ist das kein problem
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

mevsmp

BeitragMo, Feb 27, 2006 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann denn keiner mal was konkretes sagen???
Vielleicht mit Beispiel?????????

please

mfg mevsmp

Chester

BeitragDi, Feb 28, 2006 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Na du musst das machen, was Dreamora gesagt hatte, wenn du die Sachen außerhalb der MainLoop ladest musst du sie Global definieren, also gant einfach Global vor die Variable schreiben.

BladeRunner

Moderator

BeitragDi, Feb 28, 2006 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Prinzip musst Du meinen PseudoCode nur eins zu eins in BASIC übersetzen. Daher glaube ich nicht dass Du das Prinzip verstanden hast.
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group