[gelöst] types

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Rubber

Betreff: [gelöst] types

BeitragMo, Aug 03, 2009 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
folgendes problem:

ich möchte für ein spiel verscheidenen einheiten definieren.

manche informationen werden bei allen einheiten benötigt (zb die position) - andere informationen hingegen nur bei speziellen einheiten typen ...

wie kann ich das machen?

type einheit
field x
field y
field art
end type

type art_1
field energie
end type

wär meine idee - also für jede spezielle art dann die spezeillen felder ...
aber wie kannc ih den type dann einbauen?

einheit.einheit = new einheit
einheit\art = new art_1

klappt ja irgendwie nicht ...
Wenn Gott mich schon liebt, dann dich erstrecht...
  • Zuletzt bearbeitet von Rubber am Mo, Aug 03, 2009 21:20, insgesamt einmal bearbeitet

Nicdel

BeitragMo, Aug 03, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
So klappt es:

BlitzBasic: [AUSKLAPPEN]
Field x
Field y
Field art.art_1
End Type

Type art_1
Field energie
End Type

einheit.einheit = New einheit
einheit\art.art_1 = New art_1
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Xeres

Moderator

BeitragMo, Aug 03, 2009 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst als Field auch eine Variable eines anderen Types angeben.
Bsp:
BlitzBasic: [AUSKLAPPEN]
Type TEinheit
Field Name$
Field Koordinate.Tkoord
End Type

Type Tkoord
Field x#, y#
End Type

Local E.TEinheit = Createeinheit("Bob", 10, 20)
Print("Name: "+E\Name)
Print("Auf den Koordinaten "+E\Koordinate\x+", "+E\Koordinate\y)
WaitKey

Function Createeinheit.TEinheit(name$, x, y)
Local e.TEinheit = New TEinheit
e\Name = name$
e\Koordinate = New Tkoord
e\Koordinate\x = x
e\Koordinate\y = y
Return e
End Function
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Rubber

BeitragMo, Aug 03, 2009 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
aber was ist, wenn ich mal eine einheit einer anderen art habe?

also eigentlich eine
art_2

wenn ich
field art.art_1 habe bringt mir das nicht viel, wenns ne einheit der art_2 ist ...
Wenn Gott mich schon liebt, dann dich erstrecht...

PSY

BeitragMo, Aug 03, 2009 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Bau doch einfach alle Eigenschaften der Special Einheiten mit ins Maintype ein...

BlitzBasic: [AUSKLAPPEN]
Type einheit
Field x
Field y
Field speed
Field health
Field special
Field sEnergy
Field sShield
Field sDamage
End Type


Wenn Du ne Special Einheit erstellst, setzt Du das Field "special" auf irgendnen Wert...

BlitzBasic: [AUSKLAPPEN]
e.einheit = New einheit
e\special = 1



Später wenn Du Abfragen machen willst, kannst Du's dann so machen:

BlitzBasic: [AUSKLAPPEN]
If e\special = 1 Then e\sEnergy = e\sEnergy + 50
If e\special = 2 Then e\sDamage = e\sDamage * 1.1


l8er,
PSY
PSY LABS Games
Coders don't die, they just gosub without return
 

Rubber

BeitragMo, Aug 03, 2009 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ...
ich dachte vllt gehts anders Wink
Wenn Gott mich schon liebt, dann dich erstrecht...

Silver_Knee

BeitragMo, Aug 03, 2009 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type Fahrzeug
 Field x,y,z
End Type

Type Benziner
  Field benzin
  Field fz.Fahrzeug
End Type

Type Diesel
  Field Diesel
  Field fz.Fahrzeug
End Type

Type Fahrrad
  Field Pedal
  Field fz.Fahrzeug
End Type


Im Prinzip wie die erste Antwort nur rückwärts.
wenn du den Speicher schonen willst, würde ich solche sEnergie Spielchen lassen.
 

Rubber

BeitragMo, Aug 03, 2009 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
danke ...
eig logisch ^^
Wenn Gott mich schon liebt, dann dich erstrecht...

PSY

BeitragMo, Aug 03, 2009 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Speicherschonender ist das schon, allerdings umständlicher zu handhaben mit den ganzen verschiedenen Types...die muss man dann alle getrennt durchgehen, und wenn später noch neue Einheiten dazukommen sind diese auch umständlicher einzubinden.

Kommt halt auf Dein Programm an. Nimm das, was besser passt. Wenns nur ein paar verschiedene Types sind und nicht grad 1000 Einheiten, macht das speichermässig auch nicht sooo viel aus.

L8er,
PSY
PSY LABS Games
Coders don't die, they just gosub without return

TimBo

BeitragMo, Aug 03, 2009 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich glaube ich habe da noch eine Idee
handle object


BlitzBasic: [AUSKLAPPEN]
Type einheit
Field x
Field y
;..
Field handle_s
End Type

Type spezial
Field staerke
Field schnelligkeit
Field intelligent
End Type

;;normale Einheit
e.einheit=New einheit
e\x=10
e\y=20
e\handle_s=0




;spezial Einheit erstellen
s.spezial=New spezial
s\staerke=2
s\schnelligkeit=1
s\intelligent=10
e.einheit=New einheit
e\x=10
e\y=20
e\handle_s=Handle(s)




;die abfrage
For e.einheit = Each einheit
If e\handle_s=0 Then
Print "normale einheit"
Print e\x
Print e\y
Else
Print "spezial einheit"
Print e\x
Print e\y
s.spezial=Object.spezial(e\handle_s)
Print s\staerke
Print s\schnelligkeit
Print s\intelligent
EndIf
Print ""
Next

WaitKey()


Denke das geht so ganz gut.
Einfach & Schnell


Grüße
TimBo



PS wie macht ihr den Quellcode so ge-highlighted ?
Ich habe vergessen wie das geht
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
  • Zuletzt bearbeitet von TimBo am Mo, Aug 03, 2009 22:06, insgesamt einmal bearbeitet
 

FWeinb

ehemals "ich"

BeitragMo, Aug 03, 2009 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast oben in der Zeile für die BB Codes die Buttons BB und BM je nach Sprache kannst du dann entweder

[ syntax = "bb" ] [ / syntax ]

oder

[ syntax = "bmax" ] [ / syntax ]

schreiben.

mfg

ichb
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

TimBo

BeitragMo, Aug 03, 2009 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
danke Very Happy

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Silver_Knee

BeitragMo, Aug 03, 2009 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man der Ober-Crack ist kann man auch alles in einer Bank speichern:

Field bank

und sich dann pro Verschiedenem Type die bank in verschiedenen Größen machen... das führt allerdings zu weit.

Timbos methode ist gut wenn man oft den normalen type hat und dann den spezialtype bearbeiten muss.
Meine hingegen wenn man oft den spezialtype hat und dann den normaltype bearbeiten muss.
Da die beiden Methoden sich nicht ausschließen, kann das auch nützlich sein, wenn man 2*4 Byte pro spezialeinheit und 4 Byte pro Normaleinheit merr verkraften kann.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group