Seite 1 von 1

Some Boxes ;)

Verfasst: 15.12.2004 21:11
von Leo
--Veraltert,Neuer Code unten--

Verfasst: 15.12.2004 21:26
von sbehrens
Hi,
Stell' mal die Höhe auf ca. 0-10, dann sieht man einen perspektivischen Fehler :) und man muss den Fluchtwert anpassen. So mal als Challenge: Bei Bedarf soll das Programm den Fluchtwert automatisch anpassen. Schaffst du das? :allright:

mfG
Basti

Verfasst: 15.12.2004 21:30
von Leo
ptI hat geschrieben:Hi,
Stell' mal die Höhe auf ca. 0-10, dann sieht man einen perspektivischen Fehler :) und man muss den Fluchtwert anpassen. So mal als Challenge: Bei Bedarf soll das Programm den Fluchtwert automatisch anpassen. Schaffst du das? :allright:

mfG
Basti
Hm ja das mit dem Fluchtwert..ich wusste dass da was falsch is..

Jo das müsst ich jetz mal versuchen..
Aber das Programm ist eigentlich eh son bisschen unreality..

Verfasst: 16.12.2004 22:32
von netfreak
Hi

echt gut der Code, solte man vieleicht ins CodeArchiv auf nehemen!

Ah und ich finde du solltest die Tasten umlegen so auf W,A,S,D und N,M
dann kann man sich das auch besser merken!

Verfasst: 17.12.2004 14:51
von Leo
Danke :P

Jau das mit Wasd mach ich gleich noch, ich versuch jetz erstmal den Code zu verbessern..

Verfasst: 17.12.2004 16:11
von Leo

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 
Da is der neue Code, sagt mal wies bei euch so läuft k?
Vor dem Starten einstellen, ob sich die Linien überkreuzen sollen oder nich..

Verfasst: 18.12.2004 20:20
von Andre
Code gefällt mir und läuft auch ohne Beanstandungen, sowohl mit als auch ohne Überkreuzen.

Von daher => CodeArchiv :allright: