Seite 1 von 1

Sterne

Verfasst: 06.05.2005 18:55
von Gamer
Das ist ein alter BB-Code von mir, wie müßte der "richtig" in PB aussehen?

Types weg und mit Array arbeiten oder .... ?

Code: Alles auswählen

Type star
Field x,y
End Type

For t=1 To 300:s.star=New star:s\x=Rand(5,795):s\y=Rand(5,120):Next

For s.star=Each star

Color 255,255,255
Rect s\x,s\y,1,1

Next

Verfasst: 06.05.2005 19:03
von AndyX
Type ist AFAIK das selbe wie Structure, und Color und Rect würde Box(x,y,länge,breite,RGB(255,255,255)) entsprechen. Wenn das "New star:S" was LinkedList ähnliches sein soll, dann würd ichs mit LinkedList machen. Da kannste das "For s.start=Each star" in "ForEach LLname()" umwandeln.

;)

Greetz,
AndyX

Verfasst: 06.05.2005 20:32
von Gamer
So müßte das etwa dann aussehen:

Code: Alles auswählen

Structure star  
  x.l          
  y.l
EndStructure       

NewList star.star()

For t=1 To 300
x=Random(795)
y=Random(120)
AddElement(star())
*********************** star()=
Next

ForEach star()
*********************** Box(x,y,1,1,RGB(255,255,255))
Next
1) Wie adde ich aber den x + y-Wert in die List?
2) Und wie lese ich die wieder aus?

Verfasst: 06.05.2005 21:48
von Kiffi

Code: Alles auswählen

Structure s_Stern
  xPos.l
  yPos.l
EndStructure
  
Dim Stern.s_Stern(299)

For intI = 0 To 299 
  Stern(intI)\xPos=Random(795)
  Stern(intI)\yPos=Random(120)
Next intI

For intI = 0 To 299 
  Box(Stern(intI)\xPos,Stern(intI)\yPos,1,1,RGB(255,255,255)) 
Next intI

Verfasst: 06.05.2005 23:22
von traumatic
Gamer hat geschrieben:1) Wie adde ich aber den x + y-Wert in die List?
2) Und wie lese ich die wieder aus?

Code: Alles auswählen

For t=1 To 300
  AddElement(star())
  star()\x = Random(795)
  star()\y = Random(120)
Next

ResetList(star())
While NextElement(star())
 Box(star()\x, star()\y, 1, 1, RGB(255,255,255))
Wend
Nur um auf Deine Fragen einzugehen.
Kiffis Vorschlag mit dem Array ist wesentlich sinnvoller.

Der Original-Code soll übrigens anscheinend einen Bereich von 800x125
mit jeweils 5 Pixel Abstand zum Rand ausfüllen, aber das nur am Rande.