Types - mal wieder... [GELÖST]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Types - mal wieder... [GELÖST]

BeitragMo, Dez 20, 2010 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe mich mal wieder an Types gewagt und erstmal folgenden Type erstellt:

BlitzBasic: [AUSKLAPPEN]
Type Vehicle

Field carname$
Field filename$
Field Zylinder
Field fuelusage#
Field maxspeed
Field accrelation#
Field brake#
Field seat

End Type


Da die Daten jeweils extern in einer datei stehen, habe ich auch eine Funktion erstellt, die die Daten ausliest und in den Type einspeichert.

BlitzBasic: [AUSKLAPPEN]
Function CreateVehicle(DefFile$)

Local deffiles = ReadFile(DefFile)

Local car.Vehicle

car = New Vehicle
car\filename = ReadLine$(deffiles)
car\carname = ReadLine$(deffiles)
car\Zylinder = ReadLine$(deffiles)
car\fuelusage = ReadLine$(deffiles)
car\maxspeed = ReadLine$(deffiles)
car\accrelation = ReadLine$(deffiles)
car\brake = ReadLine$(deffiles)
car\seat = ReadLine$(deffiles)

CloseFile deffiles

End Function


So, und wenn ich jetzt 4 Vehicles erstelle, wie kann ich dann z.b. das zweite aufrufen. Oder das 3.?

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Mo, Dez 20, 2010 15:33, insgesamt einmal bearbeitet

Ana

BeitragMo, Dez 20, 2010 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du ihnen eine ID gibst, also eine Variable die einfach hochzählt bei jeder erstellung, dann kannst du mit einer for each schleife und einem exit die bb type list durch gehen und wenn id = 3 dann hast du den type den du wolltest und kannst machen was du willst, alternativ kannst du ihn auch in einem array oder einer globlen variable speichern, was allerdings die dynamik ziemlich einschränkt.

Die For each schleife sollte dann jeden durchlauf alles behandeln was du mit dem type machst und am besten jeden einzelnen auch benutzen, ansonsten kannst du da ziemlich viel leistung verschenken
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine
 

CO2

ehemals "SirMO"

BeitragMo, Dez 20, 2010 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, wenn ich dich nun richtig verstehe, heißt das ich muss ein weiteres Field mit dem Namen ID machen.
Und dann rufe ich das fahrzeug mit eben dieser ID wie auf?

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Ana

BeitragMo, Dez 20, 2010 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ja es bietet sich an, du kannst es natürlich auch an jedem anderen merkmal ausmachen, aber so hast du die garantie, das es einzigartig ist und du genau dieses eine bekommst
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Blitzprogger

BeitragMo, Dez 20, 2010 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sollte dann etwa so aussehen:
Code: [AUSKLAPPEN]
For Teil.TeilType = each TeilType
      If Teil\ID = wasduwillst then
            ;hier tun was immer du brauchst
            Exit
      Endif
Next


mfg, Blitzprogger
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink
 

CO2

ehemals "SirMO"

BeitragMo, Dez 20, 2010 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ahh, besten dank ;D

EDIT: Jetzt bekomme ich immer einen fehler, wenn ich den Code ausführe, ("Variable must be a Type"), so sieht der Code aus:

BlitzBasic: [AUSKLAPPEN]
Type Vehicle

Field ID
Field carname$
Field filename$
Field Zylinder
Field fuelusage#
Field maxspeed
Field accrelation#
Field brake#
Field seat

End Type


Function CreateVehicle(CarName$, id)

Local deffiles = ReadFile("data\3d\" + CarName + ".def")

Local car.Vehicle

car = New Vehicle
car\ID = id
car\filename = ReadLine$(deffiles)
car\carname = ReadLine$(deffiles)
car\Zylinder = ReadLine$(deffiles)
car\fuelusage = ReadLine$(deffiles)
car\maxspeed = ReadLine$(deffiles)
car\accrelation = ReadLine$(deffiles)
car\brake = ReadLine$(deffiles)
car\seat = ReadLine$(deffiles)

CloseFile deffiles

End Function


CreateVehicle("Cadinallic", 0)

Global FPSzahl = 60
Global FPSCounter = CreateTimer(FPSzahl)

Repeat

WaitTimer FPSCounter
Cls

For car.vehicle = Each Vehicle
If Vehicle\ID = 2 Then
Text 10, 30, "Das Fahrzeug mit der ID 2 (" + vehicle\carname + ") kann maximal so schnell fahren: " + vehicle\maxspeed
EndIf
Next

Flip

Until KeyHit(1)

End


Die Cadinallic.def:
Code: [AUSKLAPPEN]
cadinallic.3ds
Cadinallic
6
0.002
220
0.001
0.005
5


Wo ist der Fehler, oder kann ich Typen nicht in Funktionen mit daten füllen?

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Tankbuster

BeitragMo, Dez 20, 2010 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
        For car.vehicle = Each Vehicle
If car\ID = 2 Then
Text 10, 30, "Das Fahrzeug mit der ID 2 (" + car\carname + ") kann maximal so schnell fahren: " + car\maxspeed
EndIf
Next


So wird das funktionieren Wink
Twitter
Download Jewel Snake!
Windows|Android
 

CO2

ehemals "SirMO"

BeitragMo, Dez 20, 2010 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, tatsache, thx ;D (man merkt, das ich schon lange nicht mehr mit Types gearbeitet hab ;D)
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group