Some Boxes ;)
Verfasst: 15.12.2004 21:11
--Veraltert,Neuer Code unten--
Hm ja das mit dem Fluchtwert..ich wusste dass da was falsch is..ptI hat geschrieben:Hi,
Stell' mal die Höhe auf ca. 0-10, dann sieht man einen perspektivischen Fehlerund man muss den Fluchtwert anpassen. So mal als Challenge: Bei Bedarf soll das Programm den Fluchtwert automatisch anpassen. Schaffst du das?
mfG
Basti
Code: Alles auswählen
;/
;/M32 - Main
;/
;###################################################################
;Hier einstellen, ob sich die Linien überkreuzen sollen oder nicht##
#UEBERKREUZEN = #True ;#############################################
;###################################################################
#ScrWidth = 1024
#ScrHeight= 768
InitSprite():InitKeyboard()
OpenScreen(#ScrWidth,#ScrHeight,32,"M32")
Procedure M32_DrawBox3D(X,Y,BreiteHinten,HoeheHinten,BreiteVorne,HoeheVorne,Laenge)
DrawingMode(4)
Box(X,Y,BreiteVorne,HoeheVorne)
Box(X-Laenge,Y-Laenge,BreiteHinten,HoeheHinten)
LineXY(X,Y,X-Laenge,Y-Laenge)
LineXY(X+BreiteVorne,Y,X-Laenge+BreiteHinten,Y-Laenge)
LineXY(X,Y+HoeheVorne,X-Laenge,Y-Laenge+HoeheHinten)
LineXY(X+BreiteVorne,Y+HoeheVorne,X-Laenge+BreiteHinten,Y-Laenge+HoeheHinten)
EndProcedure
Enumeration
#BreiteH
#BreiteV
#HoeheH
#HoeheV
#Laenge
EndEnumeration
Enumeration
#Add
#Min
EndEnumeration
Structure ShowType
Speed.l
Type.l
Limit.l
LimitMin.l
EndStructure
Structure BoxInfo
X.l
Y.l
BreiteH.l
HoeheH.l
BreiteV.l
HoeheV.l
Laenge.l
FluchtW.l
Mode.ShowType[5]
EndStructure
NewList Box3D.BoxInfo()
AddElement(Box3D())
Box3D()\X = 550
Box3D()\Y = 400
Box3D()\BreiteH = 50
Box3D()\HoeheH = 70
Box3D()\BreiteV = 100
Box3D()\HoeheV = 140
Box3D()\Laenge = 300
For I = 0 To 4
Box3D()\Mode[I]\Speed = Random(1)+1
Box3D()\Mode[I]\Limit = 150+Random(50)
If #UEBERKREUZEN = #True
Box3D()\Mode[I]\LimitMin = 150+Random(50)
Else
Box3D()\Mode[I]\LimitMin = 0
EndIf
Next
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
If KeyboardPushed(1) : Quit = #True : EndIf
StartDrawing(ScreenOutput())
ForEach Box3D()
FrontColor(0,0,255)
M32_DrawBox3D(Box3D()\X,Box3D()\Y,Box3D()\BreiteH,Box3D()\HoeheH,Box3D()\BreiteV,Box3D()\HoeheV,Box3D()\Laenge)
For I = 0 To 4
Select Box3D()\Mode[I]\Type
Case #Add
Select I
Case #BreiteH : Box3D()\BreiteH + Box3D()\Mode[I]\Speed : If Box3D()\BreiteH => Box3D()\Mode[I]\Limit : Box3D()\Mode[I]\Type = #Min : EndIf
Case #BreiteV : Box3D()\BreiteV + Box3D()\Mode[I]\Speed : If Box3D()\BreiteV => Box3D()\Mode[I]\Limit : Box3D()\Mode[I]\Type = #Min : EndIf
Case #HoeheH : Box3D()\HoeheH + Box3D()\Mode[I]\Speed : If Box3D()\HoeheH => Box3D()\Mode[I]\Limit : Box3D()\Mode[I]\Type = #Min : EndIf
Case #HoeheV : Box3D()\HoeheV + Box3D()\Mode[I]\Speed : If Box3D()\HoeheV => Box3D()\Mode[I]\Limit : Box3D()\Mode[I]\Type = #Min : EndIf
Case #Laenge : Box3D()\Laenge + Box3D()\Mode[I]\Speed : If Box3D()\Laenge => Box3D()\Mode[I]\Limit : Box3D()\Mode[I]\Type = #Min : EndIf
EndSelect
Case #Min
Select I
Case #BreiteH : Box3D()\BreiteH - Box3D()\Mode[I]\Speed : If Box3D()\BreiteH <= -Box3D()\Mode[I]\LimitMin : Box3D()\Mode[I]\Type = #Add : EndIf
Case #BreiteV : Box3D()\BreiteV - Box3D()\Mode[I]\Speed : If Box3D()\BreiteV <= -Box3D()\Mode[I]\LimitMin : Box3D()\Mode[I]\Type = #Add : EndIf
Case #HoeheH : Box3D()\HoeheH - Box3D()\Mode[I]\Speed : If Box3D()\HoeheH <= -Box3D()\Mode[I]\LimitMin : Box3D()\Mode[I]\Type = #Add : EndIf
Case #HoeheV : Box3D()\HoeheV - Box3D()\Mode[I]\Speed : If Box3D()\HoeheV <= -Box3D()\Mode[I]\LimitMin : Box3D()\Mode[I]\Type = #Add : EndIf
Case #Laenge : Box3D()\Laenge - Box3D()\Mode[I]\Speed : If Box3D()\Laenge <= -Box3D()\Mode[I]\LimitMin : Box3D()\Mode[I]\Type = #Add : EndIf
EndSelect
EndSelect
Next
Next
StopDrawing()
FlipBuffers()
Until Quit = #True
End