Ich hab da jetzt nur nen Teil des Codes Geschrieben indem das Problem ist, aber hier ist alles:
Code: Alles auswählen
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+++++++++++-Variablen und Konstanten-+++++++++++
#ERRMSG="Error"
#SPRITE_W = 50
#SPRITE_H = 50
#SCREEN_W = 1024
#SCREEN_H = 768
;++++++++++++-Laden-++++++++++++
If InitSprite()=0
MessageRequester(#ERRMSG,"Could not initialize DirectDraw",0):End
EndIf
If InitSprite3D()=0
MessageRequester(#ERRMSG,"Could not initialize Direct3D",0):End
EndIf
If InitKeyboard()=0
MessageRequester(#ERRMSG,"Could not initialize Keyboard",0):End
EndIf
If InitMouse()=0
MessageRequester(#ERRMSG,"Could not initialize Mouse",0):End
EndIf
If InitSound()=0
MessageRequester(#ERRMSG,"Could not initialize Sound",0):End
EndIf
If fullscreen
If InitMovie()=0
MessageRequester(#ERRMSG,"Could not initialize Music",0):End
EndIf
EndIf
;+++++++++-Menü-++++++++++++++++
OpenWindow(0,(getsystemmetrics_(#SM_CXSCREEN)/2)-(200/2),(getsystemmetrics_(#SM_CYSCREEN)/2)-(140/2),200,140,#PB_WINDOW_SYSTEMMENU,"Hauptmenü")
CreateGadgetList(WindowID())
ButtonGadget(0,10,10,180,30,"Starten")
ButtonGadget(1,10,50,180,30,"Steuerung")
ButtonGadget(2,10,100,180,30,"Beenden")
Repeat
event=WaitWindowEvent()
Delay(1)
Select event
Case #PB_EVENT_GADGET
Select EventGadgetID()
Case 0
continue=1:fullscreen=1
Case 1
MessageRequester("Steuerung", "Bewegen: Pfeiltasten"+Chr(10)+"Angreifen: Linke Maustaste"+Chr(10)+"(Nur 1 Feld in 1 Richtung)"+Chr(10)+"Zaubern: Rechte Maustaste"+Chr(10)+"Pausieren (Für Zielen): Leertaste"+Chr(10)+"Zielen (Für Zauber): Mausrad", 0)
Case 2
CloseWindow(0)
End
EndSelect
Case #WM_CLOSE
CloseWindow(0)
End
EndSelect
Until continue
CloseWindow(0)
;+++++++++++-Grafiken laden-+++++++++++
Procedure Load()
LoadSprite(2, "G:\Figur.bmp", 0)
EndProcedure
;+++++++++++-Grafiken, Hintergrund, usw. anzeigen-+++++++++++
Procedure Screen()
CreateSprite(0, 50, 50)
StartDrawing(SpriteOutput(0))
Box(0, 0, 50, 50, RGB(30, 130, 100))
StopDrawing()
CreateSprite(1, 50, 50)
StartDrawing(SpriteOutput(1))
Box(0, 0, 50, 50, RGB(90, 20, 170))
StopDrawing()
;Hier sollte eigentlich der Cha angezeigt werden, aber Fehler
For a = 0 To (#SCREEN_W/#SPRITE_W)/2
For b = 0 To (#SCREEN_H/#SPRITE_H)/2
DisplaySprite(0, backX+a*#SPRITE_W*2,backY+b*#SPRITE_H*2)
DisplaySprite(1,#SPRITE_W+backX+a*#SPRITE_W*2,backY+b*#SPRITE_H*2)
DisplaySprite(1, backX+a*#SPRITE_W*2,#SPRITE_H+backY+b*#SPRITE_H*2)
DisplaySprite(0,#SPRITE_W+backX+a*#SPRITE_W*2,#SPRITE_H+backY+b*#SPRITE_H*2)
Next b
Next a
EndProcedure
;+++++++++++-überprüft, ob z.B. eine Taste gedrückt wird-+++++++++++
Procedure checkControls()
ExamineKeyboard()
ExamineMouse()
If KeyboardPushed(#PB_Key_Up)
backY + 2
EndIf
If KeyboardPushed(#PB_Key_Down)
backY - 2
EndIf
If KeyboardPushed(#PB_Key_Right)
backX - 2
EndIf
If KeyboardPushed(#PB_Key_Left)
backX + 2
EndIf
If backY <= ((-(#SPRITE_H*2))-1) : backY + #SPRITE_H*2: EndIf
If backY => 1 : backY - (#SPRITE_H*2) : EndIf
If backX <= ((-(#SPRITE_W*2))-1) : backX + #SPRITE_W*2 : EndIf
If backX => 1 : backX - (#SPRITE_W*2) : EndIf
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
EndProcedure
;+++++++++++-in dieser Schleife werden die einzellnen Proceduren (Schleifen) zusammengefügt-+++++++++
Load()
Procedure gameloop()
Screen()
checkControls()
FlipBuffers()
ClearScreen(0,0,0)
Delay(0)
EndProcedure
;++++++++++++-Hauptschleife-+++++++++++++
If FullScreen = 1
If OpenScreen(1024, 768, 32, "Mysthic Dungeon")
Repeat
gameloop()
ForEver
EndIf
EndIf
End