String in Bank Speichhern.

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Bob

Betreff: String in Bank Speichhern.

BeitragDi, Jun 15, 2004 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute

ich möchte mal meine ersten Gehversuche mit den Bank Befehlen starten.
Ist es möglich (und wenn, wie) Stings in Banken zu speichern?.
In der Hilfe werden nur Zahlenwerte erwähnt.

Danke Bob

D2006

Administrator

BeitragDi, Jun 15, 2004 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, du kannst jedes Zeichen als einzelnes Byte speichern.

pseudo:

Code: [AUSKLAPPEN]

bnk = createbank(len(string))
For i=0 to len(string$)-1
peek(oder poke)byte bnk,i,mid$(string$,i,1)
next


das mit pekk oder poke: sorry hab den befehl und parameter u. deren Reihenfolge nicht im Kopf.

MfG

Vertex

BeitragDi, Jun 15, 2004 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
http://mitglied.lycos.de/theve.../Banks.doc
da habe ich 2 varianten beschrieben. Es gibt noch eine 3. Variante, die ich mal mit in das Tut einbinden werde. Das sind die Pascalstrings die aus 256 Byte bestehen, wobei das erste Byte die Länge der Zeichenkette angibt.
mfg olli

Bob

BeitragDi, Jun 15, 2004 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo D2006,

danke für die Antwort.
Schön das es grundsätzlich IRGENDWIE geht.
Die Lösung ist aber total mangelhaft (Bank! Setzen. 5) um größere Texte im Speicher zu halten und zu verwalten.

Das liegt natürlich nicht an deinem Code sondern am Bank Object selbst.

Langsam bekomme ich mit BlitzBasic echte Probleme.
Die Sprache taugt zwar dazu mal eben ein paar 3D Objecte auf den Screen zu zaubern (und das auch noch mit ordentlicher Performenc) aber die Verwaltung von Variablen ist unter aller Kannone.

Gibt es überhaubt 1 einziges BlitzBasic RPG was jemals vollendet wurde mit mehr als 5 Gegner und 20 Items?

Ich wünsche mir ein echtes Object Modell mit Klassen und Vererbung.
Bei größeren Projekten besteht der halbe Code nur noch aus Flickwerk von dims, Banken und Typen, mit denen keine anständige Hirachie aufgebaut werden kann, ohne das im Untertyp das Handle des Obertypen mitgeschleppt werden muss. (und wieder ne Schleife mehr)
Das nervt total ab.
Dazu kommt noch die ungenügende Ide (Hinsetzen. 6).
Da sollten die Programmierer mal ein Fremdprodukt einkaufen.
(Obwohl BlitzView und BlitzEdit auch voll die Macken haben).
Wenn ich weiterhin solche Frusterlebnisse habe kehre ich reumütig zu VB 6 zurück.
Das Profionellste was ich bisher gesehen habe ist ParticleCandy.
Da kann ich mehr als gut verstehen das er das verkauft und nicht zum kostenlosen Download anbietet.
Ich kann mir gut vorstellen das auf den HD's der Blitzer, also euren und meiner, es nur so von halb angefangenen Projecten wimmelt.
Überlegt euch mal wo genau den da immer die Schwierigkeiten auftreten.

Sorry Leute aber ich musste echt mal Dampf ablassen.
Ich hoffe in der nächsten Version wird sich da was tun.
Für diejenigen die sich auf die Maus getreten fühlen, sei gesagt; die Kritik geht nicht an euch sondern an BB.

PokeString EvilBank,1, DieseNachricht$
Ach wie schade das geht ja auch nicht.

Böser Evil or Very Mad Bob

Suco-X

Betreff: ....

BeitragDi, Jun 15, 2004 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstelle doch mal einen Standard Code der deiner Meninung nach so nicht hinzunehmen ist. Ich denke die Männers hier werden sich dann bemühen dir die bestemögliche Alternative anzubieten. Jedenfalls besser als nörgeln.
EDIT : Übrigens, eines der bekanntesten basic RPG`s wurde von Master Creating und Qbasic erstellt. Und das bietet eher wneiger praktische möglichkeiten wie Blitzbasic.
bye
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
  • Zuletzt bearbeitet von Suco-X am Di, Jun 15, 2004 13:56, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragDi, Jun 15, 2004 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
PokeString EvilBank,1, DieseNachricht$

...geht nicht? Doch!
Mach dir ne Function draus, dann hasste PokeString (EvilBank,1, DieseNachricht$)...
und mittes include kannst Du dir so alle benötigten Befehle "dazu laden".
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Bob

Betreff: Re: ....

BeitragDi, Jun 15, 2004 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Suco-X hat Folgendes geschrieben:
Erstelle doch mal einen Standard Code der deiner Meninung nach so nicht hinzunehmen ist. Ich denke die Männers hier werden sich dann bemühen dir die bestemögliche Alternative anzubieten. Jedenfalls besser als nörgeln.


Ok. Ich werd mal einen Posten den es zu Optimieren gilt.

Suco-X hat Folgendes geschrieben:
EDIT : Übrigens, eines der bekanntesten basic RPG`s wurde von Master Creating und Qbasic erstellt. Und das bietet eher wneiger praktische möglichkeiten wie Blitzbasic.
bye


Eben. Qbasic und nicht Blitzbasic.
Es geht aber genau darum. 8)

Hi BladeRunner.
Freu mich das du es gelassen nimmst. Wink

BladeRunner

Moderator

BeitragDi, Jun 15, 2004 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Was sollte ich auch sonst tun ? Kein Programmierer kann an alle Nutzer seines Produktes denken, grade bei Programmiersprachen wo wirklich jeder andere Ansprüche stellt.
Das BB nicht OO ist, ist denke ich für einen Basic-dialekt durchaus zu entschuldigen. Und Marc ist halt eben auch nur ein Mensch. Und allein sowas wie BB zu erschaffen hat schon Respekt verdient.
Also überseh ich die Macken und arbeite mit dem was ich hab (und erweitere es mir innerhalb meiner Möglichkeiten, wenn nötig.)
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Bob

BeitragDi, Jun 15, 2004 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Also. Auf Anregung von Suco-X hier mal den Code den es zu Optimieren gilt.
Aufgabe. Direkte Zugriff auf das gewünschte Item ohne die gesamte Collection zu Durchlaufen
Das separate Speichern des Handels des Gewünschten Items ist natürlich nicht erlaubt sons wäre das ja alles quatsch.

Momentan behelfe ich mir eben so das ich das Handle des Obertypes im Untertyp festhalte und in einer schleif nach dem Hnadle suche.
Ich hoffe das geht einfacher.

Code: [AUSKLAPPEN]


; Hauptobject
Local cMonster
Type NPC
   Field Monster$            ; Orc, Troll, Hund Katze Maus
   Field HP%               ; Na was wohl
   Field Name$
End Type

;Unterobject
Type Item
   Field NPC_HND            ;   Handle des Monsters
   Field Bez$               ;   z.B. Drachentöter
   Field Typ               ;   z.B. Langschwert
End Type


For i = 0 To 9

   NPC.NPC = New NPC
   NPC\HP = Rand(5,25)
   NPC\Monster = "Orc"
   
   If i =5 Then
      NPC\Name = "Hauptman der Orcs"
      cMonster = Handle(Npc)      ; Handle des Hauptmans festhalten
   Else

      NPC\Name = "Dumbatz"
   EndIf
   hnd = Handle(NPC)
   
   it.item =New Item
   it\NPC_Hnd = hnd
   If i = 5 Then
      it\Bez$    = "BlitzBasic Spies der ewigen verdammniss"   
   Else
      it\Bez$    = "Orcsäbel"
   EndIf
         
   it\Typ       = "Hiebwaffe"
   
   
Next



Npc = Object.NPC(cMonster)

For it.item = Each Item
   If it\npc_hnd = cMonster Then
      Print it\Bez$
      Exit
   Else
      Print " Nicht die Waffe vom Hauptmann"
   EndIf
Next


;Wünschenswert wäre es in dem Type NPC einen Verweis auf Item zu haben
;der auch nur die ITEMS des entsprechend NPC enthält
[/code]
 

Edlothiol

BeitragDi, Jun 15, 2004 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs mit einfachCode: [AUSKLAPPEN]
Field NPC.NPC
statt NPC_HND?

Bob

BeitragDi, Jun 15, 2004 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Edlothiol hat Folgendes geschrieben:
Wie wärs mit einfachCode: [AUSKLAPPEN]
Field NPC.NPC
statt NPC_HND?


Na dann probier das mal aus.
Ich lass mich gerne überzeugen.
Aber ich bezweifle das daß geht.
Im übrigen wäre es sinnvoller (wenn es den klappen würde)
besser in NPC einen Field Item.Item anzulegen.
Damit würde man allerdings immer auf alle Items verweisen.
 

Edlothiol

BeitragDi, Jun 15, 2004 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum sollte das nicht funktionieren?
Zitat:
Damit würde man allerdings immer auf alle Items verweisen.
Auf mehrere Objekte gleichzeitig verweisen kannst du allersings nicht, wenn die Inventargröße aber eh nicht sonderlich groß ist, kannst du sowas machen:Code: [AUSKLAPPEN]
Field Item.Item[20]
Das nennt sich BlitzArray, kann nur eindimensional sein und kann nicht geredimt werden, dafür kannst du es überall (Local, Global, Field) verwenden.

Bob

BeitragDi, Jun 15, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Edlothiol, ich glaube wir reden aneinander vorbei.
Ich kenn sowohl die Dim Felder als auch die BlitzArrays.
Das Problem ist das sie nicht die Lösung sind für dieses Problem.
Natürlich funktioniert es damit aber man unterligt halt immer den Beschränkungen.

Mann muss schon tiefer in die Materie eintauchen um alle Zusammenhänge und auch Folgeprobleme zu erkennen.
Bleiben wir bei dem Beispiel des Typs NPC.
Darin sollen ja auch z.B. alle Händler bzw. Shops erfasst werden.
(Um beim RPG fortzufahren)
Da reichen dann a. 20 Felder nicht unbedingt aus.
Was dann?. Dan halt Dim Item(50)?
Das ist Speicherverschwendung.
Grundsätzlich sollte ein Objekt oder eine variable, Feld oder was auch immer, nur so groß sein wie es notwendig ist.
Dann schon lieber Dim Item(1) und neu Dimmen, umkopieren oder was auch immer, wenn es notwendig wird.
Genau darum aber gehts ja hier.
Man muss relativ viele Daten Bewegen und Manipuliern um kleinste Mengen effektiv zu verwalten.

Es gilt eine Lösung zu finden die
a. ohne viele Schleifen auskommt, bei denne Werte miteinander verglichen werden müssen um das gewünschte zu finden.
(Speed Speed Speed)
b. nur den Platz an Speicher verbraucht der auch notwendig ist.
(insbesondere V-Ram ist kostbar)

Zur Zeit arbeite ich sehr intensiv daran.
Ein Lösung scheint in greifbare Nähe zu rücken.
Wenn's fertig ist Poste ich es.
Es wird eine sich selbst organisierendes Parent/Child Objekt.
Es können n Parents existieren die jeweils n Childs haben.
Ist das Parent Identifiziert (Ohne Schleife) kann auf jedes Schild direkt (ebenfalls ohne Schleife ) zugegriffen werden.
Wird ein Parent gelöscht, werden alle Childs Gelöscht.
Ein Parent hat nur soviel Chields wie nötig.
Damit ist es dann egal ob Particle System oder RPG NPC/Item Verwaltung.

Da ich Hauptberuflich Datenbanken Programmiere erscheinen mir unzusammenhängende Daten und Objekte als total Konfus.
(Ich Denke das es klappt)
Code zu ca. 60 Prozent fertig.
oh mist die Deutschen Spielen gleich.

muss bier holen Smile
 

Edlothiol

BeitragDi, Jun 15, 2004 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Da reichen dann a. 20 Felder nicht unbedingt aus.
Was dann?. Dan halt Dim Item(50)?
Das ist Speicherverschwendung.
Das weiß ich auch, ich meinte ja auch: Nur wenn das Inventar begrenzt und relativ klein ist. Zu empfehlen wären da z.B. Banks (obwohl da das Problem der Handles bleibt).

Abgesehen davon: Die Verwaltung der Datenstrukturen ist in BB wohl nicht die größte Speedfrage - der langsamste Teil ist eh die Grafik, und wenn dein Spiel zu langsam ist, helfen dir meist auch deine ultraschnellen Objekte nichts, sondern vielmehr Optimierungen an der Grafik. Da ist auch die Frage, ob VB6 nicht doch zu langsam für ein Spiel ist (gut, ich weiß, ist alles optimiert und so Wink Rolling Eyes ) - zumal du dich da noch mit DX beschäftigen musst Wink

Zitat:
(insbesondere V-Ram ist kostbar)
Hm, und was bringen dir da kleine Datenstrukturen?

TheShadow

Moderator

BeitragDi, Jun 15, 2004 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon mal Type-Instanzen von blitzbase/quellcodes probiert???

newlist()
deletelist()
newentry()
deleteentry()
afterentry()
beforeentry()
firstentry()
lastentry()
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Bob

BeitragMi, Jun 16, 2004 7:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Abgesehen davon: Die Verwaltung der Datenstrukturen ist in BB wohl nicht die größte Speedfrage - der langsamste Teil ist eh die Grafik, und wenn dein Spiel zu langsam ist, helfen dir meist auch deine ultraschnellen Objekte nichts, sondern vielmehr Optimierungen an der Grafik. Da ist auch die Frage, ob VB6 nicht doch zu langsam für ein Spiel ist (gut, ich weiß, ist alles optimiert und so Wink Rolling Eyes ) - zumal du dich da noch mit DX beschäftigen musst Wink


Na da geb ich dir ja Recht. Ich beruhig mich ja schon wieder.

Zitat:
(insbesondere V-Ram ist kostbar)
Hm, und was bringen dir da kleine Datenstrukturen?[/quote]

Das war allgemein gemeint. Wer sich nicht um die Speicherverwaltung seiner Werte im kleinen kümmert, asst meistens auch mit Grafiken rum.


Hallo TheSchadow,

Zitat:
TheSchadow:Schon mal Type-Instanzen von blitzbase/quellcodes probiert


Ja. Das ist bisher noch das beste und kommt der Sache am nächsten.
Wenn mein Vorhaben scheitert, werde ich mit den listen weitertricksen.
Im übrigen kann ich deine guten Tuts schon im schlaf rauf und runter beten. (Wenn sie den von dir stammen) Du glaubst garnicht wie oft ich mit, insbesondere das kompakte und ausführlicht Tut über Types, schon reingezogen habe. Leider habe ich Sie erst relative spät entdeckt und bin somit auch voll in die Type Falle gelaufen. Wink
Ich wünschte mir mehr Tuts. in dieser Qualität.

Zitat:
Aus Tutorial: ...ist es ein sehr komplexes Thema und besonders Anfänger haben große Schwierigkeiten bei Verwendung von Types. Oft liegt es an anderer Vorstellung wie Types überhaupt funktionieren. Ich selbst war zuerst etwas verwirrt, da Types in anderen Programmiersprachen ganz anders funktionierten.




Gruß an alle
Bob

TheShadow

Moderator

BeitragMi, Jun 16, 2004 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe ja... ansonsten kann ich noch die "einfachere" Variante empfehlen - Handles in BANK speichern - die BANK kannst du beliebig vergrößern oder verkleindern....
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

dubitat

BeitragMi, Jun 16, 2004 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
also irgendwie blick ich da nicht mehr durch! zuerst wolltest du doch noch einen einfachen text in einer bank gespeichert haben! das kannste ja noch ganz einfach machen da du einfach den string durchsuchst nach buchstaben und speicherst diese dann als zahlenwert in deine bank!

hab die befhele nicht im kopf aber du kannst ihm ja sagen das er für a 1, b 2, c 3,... speichern soll! und dann kannste den text auich mit chr(x) wieder sichtbar in eine string speichern!
Erare humanum est - Irren ist Menschlich

Bob

BeitragMi, Jun 16, 2004 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
TheShadow hat Folgendes geschrieben:
hehe ja... ansonsten kann ich noch die "einfachere" Variante empfehlen - Handles in BANK speichern - die BANK kannst du beliebig vergrößern oder verkleindern....


Grins Wink
Genau auf den Trichter bin ich auch gekommen.
Ist nur Schade das mir das keiner vorher mal verraten hat und ich mir das (als BlitzNewbie) allein ausdenken musste.
Ich habe auch noche kein Posting oder Tut dazu gefunden.

Hauptobject = Type mit einem Feld Bank.
Unterobject = Type handel in HO Bank.
Arbeitete natürlich mit Int Werten / 4 Byte.
Erfordert natürlich vom User ein bißchen Disziplin nicht mit Insert Befor After usw. zu hantieren.
Man muss halt alle Functionen selber machen. Aber es lohnt.

Bin grade an einem Universellen "Msg Screen" amArbeiten der die Funtionalität verdeutlicht. Die Screens (X belibiger gleichzeitig) können
z.b. Als DebugFenster im Vollbbild Modus laufen.
Das Unterobject nimt alle meldungen auf.
Keine Schleifen mehr nötig. Hurra.
Frei Positionierbar. Unterschiedliche Farben, Größe Hide, Show, Move, TextScrolling und. und. und.
ca 90% Fertig.
Nur noch Feintunning und Dokumentieren.

Würde gerne eine ausfürliches Tutorial darüber machen mit 2 Demos.
U.a. "RPG und effektives verwalten von Items und Charackterdeten"
(Um auf den Uhrsprünglichen Grund zurück zu kommen)
Mit seperater HTML Dokumentation.
Ich denke es würde einigen Neueinsteigern helfen, die wie ich nahe am Verzweifeln waren / sind, die Kurve zu kratzen und BB nicht in die Tonne zu drücken.

Hi dubitat.
Hat sich erledigt.
Text_in_Bank = False
Text_in_Type = True
hnd_von_Type_mit_Text_in_Bank = True

Alles wird gut.
Lieber Very Happy Bob

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group