Some Boxes ;)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Some Boxes ;)

Beitrag von Leo »

--Veraltert,Neuer Code unten--
Zuletzt geändert von Leo am 17.12.2004 16:09, insgesamt 1-mal geändert.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag 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
enjoy life... while you can!
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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..
netfreak
Beiträge: 91
Registriert: 23.10.2004 18:30
Kontaktdaten:

Beitrag 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!
mfg
netfreak
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag von Leo »

Danke :P

Jau das mit Wasd mach ich gleich noch, ich versuch jetz erstmal den Code zu verbessern..
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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..
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Code gefällt mir und läuft auch ohne Beanstandungen, sowohl mit als auch ohne Überkreuzen.

Von daher => CodeArchiv :allright:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten