Types und Dim-Felder

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

FBI-blitz

Betreff: Types und Dim-Felder

BeitragDi, Apr 26, 2005 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich habe folgendes Problem:
Bei Quests in meinem Adventure soll es
-Antworten
-Reaktionen
-Folgen
geben. Ich habe mir jetzt überlegt, dass ich alles in einem Type speichere. In Antworten wird die mögliche Antwort, in Reaktion die Reaktion und in Folge die Foge auf die Antwort (Sprich + Gesundheit, + Geld etc.).

Das ganze sieht jetzt so aus:

BlitzBasic: [AUSKLAPPEN]
Type antworten
Field antwort$
Field reaktion$
Field folge.folgen
End Type

Type folgen
Field art ;Art der Folge (also wo sich was verändert, Geld, Gesundheit etc.)
Field wert ;Um wie viel sich was verändert, +150 Geld z.B.!)
End Type

Dim antwort.antworten(5) ;Es gibt also höchstens 5 Antwortemöglichkeiten


Jetzt möchte ich aber, dass es pro Antwort mehrere Folgen geben kann!
Wie könnte ich das machen?
Perfekt wäre ja ein zugriff wie zum Beispiel:
BlitzBasic: [AUSKLAPPEN]

antwort(2)\folge(3)\art ;Zugriff auf die Art der 3. Folge der 2. Antwort



Wie könnte ich sowas hinbekommen?
Ich habe es nicht gescvhafft!


Danke schon jetzt
FBI-blitz
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

hitokiri

BeitragDi, Apr 26, 2005 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch eine kleine Verständnissfrage:
bei jeder frage erschaffst du eine neue instanz des types "antworten" und liesst dann die werte der felder aus nem script aus ? und löscht die neue instanz danach gleich wieder ?
 

FBI-blitz

BeitragDi, Apr 26, 2005 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Also erst kommt die Frage bzw. der Auftrag.
Dann werden alle Antworten in antwort.antworten(1-5) geladen und nacher wieder gelöscht.

Ich hoffe, das meintest du!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

Jolinah

BeitragDi, Apr 26, 2005 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest BlitzArrays verwenden Wink

Code: [AUSKLAPPEN]

Type antworten
  Field antwort$
  Field reaktion$
  Field folge.folgen[5]
End Type

Dim antwort.antworten(5)

antwort(0)\folge[0]\art = 10
 

FBI-blitz

BeitragDi, Apr 26, 2005 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Also hier kommt:
BlitzBasic: [AUSKLAPPEN]
Type antworten
Field antwort$
Field reaktion$
Field folge.folgen[5]
End Type

Type folgen
Field art
Field wert
End Type

Dim antwort.antworten(5)

antwort(2)\folge[3]\art = 10


Memory access violation


Was genau ist der Unterschied zwischen den runden und den Eckigen Klammern eigentlich? Ich habe damit noch nie gearbeitet( MIt eckigen Klammern, mit runden schon!)

Danke!
FBI-blitz
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

DarkMike

BeitragDi, Apr 26, 2005 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du eckige klammer hast wird es für Blitzarrays verwendet, ausserdem sind ba´s(blitz arrays) immer global(oder wars lokal)ne global glaub ich zumindest, hat noch ein paar andere eingenschafften, aber da ich selber noch nicht mit ba´s gearbeitet habe müsste ich mal nachsehen!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)
 

hitokiri

BeitragDi, Apr 26, 2005 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst das array ja auch vorher definieren.
also vorher global folge.folgen[5]

dürfen dann natürlich auch nur 5 Folgen sein.

die eckigen Klammern sagen BB, dass es sich hier nicht um ein DIM sondern um ein Blitzarray handelt. Blitzarrays sind eigentlich das gleiche wie DIM's, haben aber eine Beschränkung auf eine Dimension.
 

FBI-blitz

BeitragDi, Apr 26, 2005 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab jetzt gerafft, was blitzarrays sind!
Dank der OH. Smile

Naja, aber warum kommt da jetzt ne Fehlermeldung?
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

hitokiri

BeitragDi, Apr 26, 2005 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
erm, weil du, wenn du danach den type folge.folgen erstellst dem ja auch einen wert zuweisen musst.

du hast einmal dein array folge.folgen[wert]

und einmal nur ein objekt folge.folgen.

du musst schon noch sagen in welches feld des blitzarrays du dann die neue instanz reinlegen willst. also, die fehlermeldung kommt weil dein blitzarray leer ist, alles 0 pointer
 

FBI-blitz

BeitragDi, Apr 26, 2005 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähhm.. Sry, aber das verstehe ich net ganz.

Könntest du mal an dem Beispiel erklären? Wär echt nett!

Danke!
FBI-blitz
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

hitokiri

BeitragDi, Apr 26, 2005 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
for i = 1 to 5
folge.folgen = new folge
folge.folgen=folge.folgen[i]


so sollte das klappen....glaub ich
 

FBI-blitz

BeitragDi, Apr 26, 2005 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach das meinst du! Hab ich ja ganz vergessen!

Embarassed Embarassed

Danke!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

hitokiri

BeitragDi, Apr 26, 2005 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Smile keine garantie von mir, dass es so funktioniert.
P2 400 - 128mb RAM - 2mb shared video - 10GB HDD .... +Playstation2

Alfadur

BeitragDi, Apr 26, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab das problem bei meinen games so gelöst das ich als folge nen string mitgebe, wo dann zb drinsteht "getxp:2000:dropitem:2:getquest:2:complquest:3" usw ... sind also mehrere folgen... den muß ich jetzt nur noch parsen und herauskommt das ich 2000 xp bekomme, item nr 2 gedropt wird wenn ichs habe, ein neues quest kommt dazu, ein altes wird damit beendet ...
A Cray is the only computer that runs an endless loop in less than four hours.
 

FBI-blitz

BeitragMi, Apr 27, 2005 8:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... Wenn ich jetzt das hier schreibe, kommt immer:
Variable must be a blitz array

BlitzBasic: [AUSKLAPPEN]
folge.folgen[temp] = New folgen
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

hitokiri

BeitragMi, Apr 27, 2005 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin ja auch ein volltrottel.... das blitzarray ist ja erst noch leer und du weisst dem neu erstellten objekt ein leeres feld zu Embarassed

muss natürlich andersrum sein.

folge.folgen[i] = folge.folgen
 

FBI-blitz

BeitragFr, Apr 29, 2005 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hier:


BlitzBasic: [AUSKLAPPEN]
For temp = 0 To 10
folge.folgen = New folgen
folge.folgen[temp] = folge.folgen
Next


gibt auch ne Fehlermeldung!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

Alfadur

BeitragFr, Apr 29, 2005 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbase.de/tutorials/shadow_2.htm

Kombination Type+Blitzarray
Types lassen sich mit Blitzarrays kombinieren. Dadurch bleibt jedes Objekt direkt ansprechbar. Das ganze funktioniert so ähnlich wie bei DIM/TYPE-Kombination:

TYPE obj
FIELD x
FIELD y
END TYPE

LOCAL obj.obj[100]
obj[0]=NEW obj
obj[0]\x=0
obj[0]\y=0

Das ist aber noch nicht alles. Weiterhin lassen sich Blitzarrays als Eigenschaft mit dem Befehl FIELD definieren. Dies kann völlig neue Möglichkeiten eröffnen:

TYPE obj
FIELD x
FIELD y
FIELD image[10]
END TYPE

DIM feld.obj(100)
feld(0)=NEW obj
feld(0)\x=0
feld(0)\y=0
feld(0)\image[10]=0
A Cray is the only computer that runs an endless loop in less than four hours.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group