Types und Array

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Matthias

Betreff: Types und Array

BeitragSa, Sep 01, 2007 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Ich hatte schon etwas gesucht hier im Forum aber so wirklich was gefunden wo es um Types geht hab ich nicht. Bzw Types mit Felder
In Blitz3D war es ja recht einfach aber irgendwie functioniert es hier nicht mehr.
Code: [AUSKLAPPEN]

Graphics 800,600
Global Sterne[1000]



Type Stern
   Field x,y



Function Neu:Stern()
     Return New Stern
End Function
End Type



Sterne[5]=Stern.Neu()



Sterne[5].X=10
Sterne[5].Y=10

Repeat

Flip
Until KeyDown(KEY_ESCAPE)=1
End

Was ist daran falsch??
 

Dreamora

BeitragSa, Sep 01, 2007 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Daran ist hauptsächlich etwas falsch.
Du versuchst einen Type einem Int zuzuweisen.
Das kann natürlich nicht gehen.

In BM sind Types Types und nicht irgendwelche IntHandles wie in den alten Blitz

Korrekter Code könnte zb so aussehen:

Code: [AUSKLAPPEN]

SuperStrict

Type Stern
  Field x,y

  Function Neu:Stern()
     Return New Stern
  End Function
End Type

Graphics 800,600
Global Sterne:Stern[1000]

Sterne[5]=Stern.Neu()

Sterne[5].X=10
Sterne[5].Y=10

Repeat

  Flip
Until KeyDown(KEY_ESCAPE)
End
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Matthias

BeitragSa, Sep 01, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok das functioniert ja ersteinmal recht gut nun habe ich einfach mal weiter gemacht und nun ist schon wieder irgendein Problem drin. Also mir geht es nicht um die Sterne weil ich ein Weltraumspiel machen will mir geht es darum die Struckturen der Types mal zu cheken.

Code: [AUSKLAPPEN]

Type Stern
  Field x,y


Method Anzeigen(I)
Plot Sterne[I].X,Sterne[I].Y
End Method

Function Neu:Stern(I,X,Y)
 Sterne[I]=New Stern
 Sterne[I].X=X
 Sterne[I].Y=Y
Return
End Function
End Type

Graphics 800,600
SetColor 255,255,255

Global Sterne:Stern[1000]

X:Int=Rand(10,400)
Y:Int=Rand(10,400)
For U=0 To 400
Stern.Neu(U,X,Y)
Next




I=0
While Sterne[I]=Null
Sterne[I].Anzeigen(I)
I=I+1
If KeyDown(KEY_ESCAPE)=1 Then End
Wend

DrawText "Fertig",10,10


Repeat

  Flip
Until KeyDown(KEY_ESCAPE)
End

Leider geht das schon wieder nicht.
 

ChristianK

BeitragSa, Sep 01, 2007 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du ein bisschen nachgedacht hättest, wärst du sicher auch selbst auf die Lösung gekommen:

Code: [AUSKLAPPEN]
X:Int=Rand(10,400)
Y:Int=Rand(10,400)

Das muss mit in die folgende For-Schleife, sonst erscheinen alle Sterne auf dem selben Punkt.

Code: [AUSKLAPPEN]
While Sterne[I]=Null

Überleg mal ...
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Matthias

BeitragSa, Sep 01, 2007 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast vollkommen recht. Embarassed

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group