Verfasst: 31.01.2006 13:59
Also damit alle was davon haben, hier der code so wi ichs bei meinen Spielen gemacht habe :
Code: Alles auswählen
If InitSprite() = 0
MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
End
EndIf
If InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
End
EndIf
If InitSprite3D() = 0
MessageRequester("Error", "Direct3D system can't be initialized correctly", 0)
End
EndIf
If InitMouse() = 0
MessageRequester("Error", "Can't open DirectX 7", 0)
End
EndIf
xP = 1024 ; Pixel in X-Richtung
yP = 768 ; Pixel in Y-Richtung
If OpenScreen(xP, yP, 32, "") = 0
MessageRequester("Error", "Can't open screen !", 0)
End
EndIf
Sprite3DQuality(1)
CreateSprite(1, 64, 64, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
Box(0,0,32,32,RGB(255,0,0))
Box(0,32,32,32,RGB(0,255,0))
Box(32,0,32,32,RGB(0,0,255))
Box(32,32,32,32,RGB(255,255,0))
StopDrawing()
CreateSprite3D(1, 1)
b.f = 3.14159265/180
x1.f = 400 ; X-Posiion
y1.f = 400 ; Y-Posiion
w.f = 270 ; Winkel
t.f
neuX.f
neuY.f
Structure Obj
x.f
y.f
w.f
EndStructure
NewList Obj.Obj()
Procedure Objekt(x, y, w)
AddElement(Obj())
Obj()\x = x
Obj()\y = y
Obj()\w = w
EndProcedure
For n = 1 To 20 :
Objekt(Random(200)*4, Random(200)*4, Random(359))
Next n
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape) <> 0 :
End
EndIf
If KeyboardPushed(#PB_Key_Up) <> 0 :
x1 = x1 + Cos(w*b)*2
y1 = y1 + Sin(w*b)*2
EndIf
If KeyboardPushed(#PB_Key_Down) <> 0 :
x1 = x1 - Cos(w*b)*2
y1 = y1 - Sin(w*b)*2
EndIf
If KeyboardPushed(#PB_Key_Left) <> 0 :
w = w - 1
EndIf
If KeyboardPushed(#PB_Key_Right) <> 0 :
w = w + 1
EndIf
FlipBuffers()
ClearScreen(0,0,0)
; **** Bild
; ** Objekte
Start3D()
ResetList(Obj())
While NextElement(Obj())
; ---- Das die die Bildberechnung ----
a = Sqr(Pow(x1-Obj()\x,2)+Pow(y1-Obj()\y,2))
t = ATan((y1-Obj()\y)/(x1-Obj()\x))/b
If x1 > Obj()\x : t = t-180 : EndIf
neuX = xP/2+Cos((t-w+270)*b)*a
neuY = yP/2+Sin((t-w+270)*b)*a
ZoomSprite3D(1, 40, 40)
RotateSprite3D(1, Obj()\w-w, 1)
DisplaySprite3D(1, neuX-20, neuY-20, 255)
; ------------------------------------
Wend
Stop3D()
; ** Mensch
StartDrawing(ScreenOutput())
Circle(xP/2, yP/2, 16, RGB(255,255,255))
LineXY(xP/2, yP/2, xP/2, 354, RGB(255,255,255))
StopDrawing()
; **** Karte
StartDrawing(ScreenOutput())
DrawingMode(4)
Box(0, 0, 200, 200, RGB(128,128,128))
StopDrawing()
; ** Objekte
Start3D()
ResetList(Obj())
While NextElement(Obj())
ZoomSprite3D(1, 40/4, 40/4)
RotateSprite3D(1, Obj()\w+90, 1)
DisplaySprite3D(1, Obj()\x/4-20/4, Obj()\y/4-20/4, 255)
Wend
Stop3D()
; ** Mensch
StartDrawing(ScreenOutput())
Circle(x1/4, y1/4, 16/4, RGB(255,255,255))
LineXY(x1/4, y1/4, x1/4+Cos(w*b)*15, y1/4+Sin(w*b)*15, RGB(255,255,255))
StopDrawing()
ForEver