Some Boxes ;)
Some Boxes ;)
--Veraltert,Neuer Code unten--
Zuletzt geändert von Leo am 17.12.2004 16:09, insgesamt 1-mal geändert.
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
Jo das müsst ich jetz mal versuchen..
Aber das Programm ist eigentlich eh son bisschen unreality..
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
Vor dem Starten einstellen, ob sich die Linien überkreuzen sollen oder nich..