Wie: Inventar

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Nju

Betreff: Wie: Inventar

BeitragMo, Mai 26, 2008 10:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich möchte zu einem kleinen RPG dem Spieler ein Inventar (unendlich viel Platz bis jetzt) spendieren. Da ich Delphi-Programmierer bin hätte ich nun zwei Lösungsansätze gehabt:

1. Alles in eine Access-Datenbank speichern und per Select bei Bedarf zugreifen (Vorteil: Auch bei vielen Gegenständen bleibt die Geschwindigkeit konstant)

2. Einen Record erstellen und dieses dann als dynamisches Array deklarieren

Bsp (wenn jemand etwas damit anfangen kann):

Code: [AUSKLAPPEN]
type rec_Inventar = record
  Name: String;
  Anzahl: Integer;
  Index: Integer;
end;

Public
Charakterinventar: array of rec_Inventar


Was ist die beste Methode dies unter BlitzMax zu lösen/realisieren?

d-bug

BeitragMo, Mai 26, 2008 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type rec_Inventar
  Field Name:String
  Field Anzahl:Int
  Field Index:Int
End Type

Global Charakterinventar:rec_Inventar[]


Das Objekt sähe in etwa so aus! Um das ganze per Stream aus einer Datei zu holen müsste ich jetzt zu weit ausholen. (Ich sitz auf der Arbeit) Wink
  • Zuletzt bearbeitet von d-bug am Mo, Mai 26, 2008 10:31, insgesamt einmal bearbeitet
 

Nju

BeitragMo, Mai 26, 2008 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
d-bug hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
Type rec_Inventar
  Field Name:String
  Field Anzahl:Int
  Field Index:Int
End Type

Global Charakterinventar:rec_Inventar[]


In etwa so!


Und darauf könnte ich die Größe (sprich: Anzahl der Einträge) beliebig verändern und über eine Schleife auf einzelne Einträge zugreifen?
 

Dreamora

BeitragMo, Mai 26, 2008 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst nachdenken, dann ausprobieren.
Wenn dann noch Fragen offen bleiben, diese Stellen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

d-bug

BeitragMo, Mai 26, 2008 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber sicher!

Per Schleife füllen
Code: [AUSKLAPPEN]
For Local i:int = 0 Until 10
   Charakterinventar = Charakterinventar[..i+1] 'Array redimensionieren
   Charakterinventar[i] = New rec_Inventar 'neue Instanz von rec_Inventar im Array erstellen
   Charakterinventar[i].Name = "Inventar"+i 'Namen der Instanz vergeben
Next


Per Schleife abrufen:
Code: [AUSKLAPPEN]
For Local Inventar:rec_Inventar = EachIn Charakterinventar
   Print Inventar.Name 'Name der Instanz in die Konsole (Output) ausgeben
Next


(sorry, sah deinen Post nicht während des Tippens, Dreamora)
  • Zuletzt bearbeitet von d-bug am Mo, Mai 26, 2008 10:40, insgesamt einmal bearbeitet
 

Nju

BeitragMo, Mai 26, 2008 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Erst nachdenken, dann ausprobieren.
Wenn dann noch Fragen offen bleiben, diese Stellen


Danke für die Antwort, aber ein einfaches "Ja" oder "Nein" wäre konstruktiver gewesen, ganz ehrlich - zumal dies für dich als Schreiber sogar noch weniger Arbeit gemacht hätte. Wink

Natürlich werde ich es ausprobieren, das nur mal nebenbei...
 

Dreamora

BeitragMo, Mai 26, 2008 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein wärs nicht, sonst hättest du den Tipp den du erhalten hast erst ausprobiert und dann gefragt anstatt einfach ma ERST zu fragen und dann zu gucken obs ein problem gibt. Genau solches verhalten ist mit ein Grund warum ich nur Erklärungen und Pseudocode poste, da es den User zwingt es zu probieren und sich damit zu befassen.

Mit deinem "Vorgehen" wirst du kaum jemals lernen zu programmieren, denn programmieren ist learning by doing und aus seinen Fehlern lernen also musst du sie erst Ma machen anstatt nach jedem Schritt zu Fragen.

Anders gesagt: Solange wir dir mit Ja / Nein und fertigen sources helfen, lernst du herzlich wenig.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group