Item ins Inventar einfügen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mavi

Betreff: Item ins Inventar einfügen

BeitragSo, Mai 17, 2009 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo BLitzer Very Happy

Ich habe mal wieder ein kleines Problem und zwar....

Möchte ich ein Inventarsystem basteln, soweit so gut ich habe schonmal einen code gemacht der das inventar zeichnet Type für ein test item Very Happy

Jetzt möchte ich mit Tastendruck 1 Item in mein Inventar wandern lassen. So schön so gut, entweder ist das komplette inventar gepflastert mit items oder ich muss 20x die taste drücken und dann ist es wieder gepflastert mit items ich bekomm nichts ein einzelndes item in das inventar?!

Hier mein Code: Code: [AUSKLAPPEN]
If KeyHit(59) Then
   For i = 0 To 19
      If inventory(i) = 0 Then
         inventory(i) = 92
         DebugLog "Ich adde dich jetzt"
      EndIf
   Next
EndIf

ComNik

BeitragSo, Mai 17, 2009 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst es ja auch 20 mal...
Einfach ein Exit nach "DebugLog..." setzten

lg
WIP: Vorx.Engine
 

mavi

BeitragSo, Mai 17, 2009 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ComNik hat Folgendes geschrieben:
Du machst es ja auch 20 mal...
Einfach ein Exit nach "DebugLog..." setzten

lg


Das mit dem Exit nach dem DebugLog habe ich getan aber dann geht garnichts Very Happy dann muss ich 20x die taste drücken bis....er mir das inventar wieder ganz füllt! -.- ich adde dann nicht 1 item

Code: [AUSKLAPPEN]
If KeyHit(59) Then
   For i = 0 To 19
      If inventory(i) = 0 Then
         inventory(i) = 92
         DebugLog "Ich adde dich jetzt"
         Exit
      EndIf
   Next
EndIf

ToeB

BeitragSo, Mai 17, 2009 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würdes es mit einem 2-dimmensionalem Array machen, dann fällt die berechnugn praktisch weg.
Code: [AUSKLAPPEN]
Dim Inv_Use(19,19)
Dim Inv_Name$(19,19)


Inv_Use : Ob das Fled grade genutz wird oder nicht
Inv_Name : Name des Obj (kann auch eine nummer sein, wäre speicherschonder)

Malen :
Code: [AUSKLAPPEN]
For xx = 0 ot 19
For yy = 0 to 19
Rect xx*20,yy*20,19,19,Inv_Use(xx,yy)
Next
Next


Function zum adden :
Code: [AUSKLAPPEN]
Function AddInv(Name$)
For yy = 0 to 19
For xx = 0 to 19
If Inv_Use(xx,yy) = 0
Inv_Use(xx,yy) = 1
Inv_Name(xx,yy) = Name$
Return
Endif
Next
Next
End Function


Dann sucht der immer das nächste feld, das frei ist.

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

beanage.johannes

BeitragSo, Mai 17, 2009 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde es ehrlich gesagt nicht mit 2 arrays machen sondern mit einer 1 dimensionellen und nem type z.B. TInventarSlot oder ähnlich.


Code: [AUSKLAPPEN]


Type TInventarSlot

field name$
field icon:TImage
field used%

endtype





oder halt iwie so

ToeB

BeitragMo, Mai 18, 2009 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
das macht gar kein sinn weil du ja eine DIFFINIERTE anzahl von feldern hast. Types machen dann nur sinn, wenn du unbestimmte anzahlen von Einträgen hast, was hier nicht der fall ist... Villeicht wäre ein wenig Grundwissen doch praktisch Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Xeres

Moderator

BeitragMo, Mai 18, 2009 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja... ich würde denn Sinn absolut nicht daran fest machen, ob ich weiß wie viel ich von etwas brauche oder nicht. Schon eher, ob ich damit das erreichen kann, was ich gerne möchte und ob ich es programmieren kann.
Wenn man unbedingt das Feature braucht, dass man seine Taschenplätze mit einem selbst gehäkelten Beutel vermehren kann, würde ich eher zu Types raten. Wenn man sowieso alles statisch schreibt und sich mit Types noch gar nicht beschäftigt hat, kann man bei Arrays bleiben.
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)

BtbN

BeitragMo, Mai 18, 2009 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ToeB hat Folgendes geschrieben:
das macht gar kein sinn weil du ja eine DIFFINIERTE anzahl von feldern hast. Types machen dann nur sinn, wenn du unbestimmte anzahlen von Einträgen hast, was hier nicht der fall ist... Villeicht wäre ein wenig Grundwissen doch praktisch Wink

mfg ToeB


Und du scheinst nicht verstanden zu haben, dass man Types auch in ein Array packen kann. Die liste ist nur intern und aus einfachheit vorhanden, man muss sie nicht nutzen.

beanage.johannes

BeitragMo, Mai 18, 2009 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
types finde ich sind deshalb von vorteil weil man nicht wie bei obigem beispiel von ToeB 2x2 arrays verwendet werden sondern nur eine "normale".

@ToeB

warum bitte soll ich kein grundwissen haben?
Types sind weit aus praktischer und flexibler als viele arrays.

ToeB

BeitragDi, Mai 19, 2009 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das stimmt schon, das sie sehr flexible und auch bei manchen anwedungen sehr praktisch sind, das habe ich ja hier nie angezweifelt, ich meine nur das das hier für mich wenig sinn macht, vor allem, weil man viel schneller auf Arrays als auf Types zugreifen kann. Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

peacemaker

BeitragDi, Mai 19, 2009 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Es würde Sinn machen Arrays mit Types zu kombinieren.

Toeb: Wenn du von einem Item auch Name, Icon, Stärke, Preis usw. speichern willst, würde man das ja nach deiner Lösung sechs oder sieben Arrays machen.
Ich hingegen würde nen Type 'Item' Machen, dort Stärke, Preis, Name, Beschreibung, etc. reinspeichern und fürs Inventar einfach nen Array nehmen.

mfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

ToeB

BeitragDi, Mai 19, 2009 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ja einfach sowas :
Code: [AUSKLAPPEN]
Type info
Field name$
Field preis
End Type

Dim Inventar.info(19,19)

tmp.info = New info
tmp\Name$ = "Trank"
tmp\preis = 100

Inventar(0,0) = tmp


So wäre es auch sinnvoll fällt mir grade ein xDD

Sry Embarassed


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

mavi

BeitragDi, Mai 19, 2009 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure ganzen Bemühungen ich hab es endlich geschafft Smile

Nun habe ich nur noch ein Problem wenn ich ein Item aus meinem Inventar gezielt mit einer Steuerung "entfernen" möchte, wie mach ich das mit der einer schleife funktioniert es iwie nicht und mit einer Mehrfachen tasten abfrage = unmöglich iwie?!

Hier mal der Code:
Code: [AUSKLAPPEN]
Graphics 640,480,16,0
SetBuffer BackBuffer()

item_slot = LoadImage("slot.bmp")
item_pic = LoadImage("axe.bmp")
maus = LoadImage("maus.bmp")
MaskImage maus, 0,0,0
Type item
Field id
Field image
End Type

Global item1.item
item1.item = New item
item1\id = 1
item1\image = item_pic


Global isx,isy = 50

Dim inventory(19)
For i = 0 To 19
inventory(i) = 0
Next

Repeat

ii = 10
For i = 0 To 19
Text 10,ii, inventory(i)
ii = ii + 10
Next

If KeyHit(28) Then
fenster = Not fenster
EndIf

If fenster Then
ipx = 50
ipy = 50

For i = 1 To 20
If inventory(i-1) = 0 Then
DrawImage item_slot, ipx,ipy
EndIf
If inventory(i-1) = 92 Then
DrawImage item1\image, ipx,ipy
EndIf
ipx = ipx + 50
If i Mod 4 = 0 Then
ipy = ipy + 50
ipx = 50
EndIf


isteuerung()
Next
EndIf
If KeyHit(60) Then
For i = 0 To 19
inventory(i) = 0
Next
EndIf

If KeyHit(59) Then
For i = 0 To 19
If inventory(i) = 0 Then
inventory(i) = 92

Exit
EndIf
Next
EndIf


Flip
Cls
Until KeyHit(1) End

Function isteuerung()
If KeyHit(200) Then
isy = isy - 50
EndIf
If KeyHit(208) Then
isy = isy + 50
EndIf
If KeyHit(203) Then
isx = isx - 50
EndIf
If KeyHit(205) Then
isx = isx + 50
EndIf
Rect isx,isy, 48,48,0

Text 100,10, isx
Text 100,20, isy

If isx = 0 Then
isx = 50
EndIf

If isx = 250 Then
isx = 200
EndIf

If isy = 0 Then
isy = 50
EndIf

If isy = 300 Then
isy = 250
EndIf

If isx = 50 And isy = 50 And KeyHit(57) Then
inventory(0) = 0
EndIf
If isx = 100 And isy = 50 And KeyHit(57) Then
inventory(1) = 0
EndIf
End Function

Xeres

Moderator

BeitragDi, Mai 19, 2009 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Einrücken: Man erkennt ja gar nichts.
2. Die Types sind mit dem Inventar nicht verknüpft.
Code: [AUSKLAPPEN]
Dim inventory.item(19)

Wie ich schon mal bemerkte gab es hier schon ein Beispiel zu Types und Items.
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)
 

mavi

BeitragDo, Mai 21, 2009 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
1. Einrücken: Man erkennt ja gar nichts.
2. Die Types sind mit dem Inventar nicht verknüpft.
Code: [AUSKLAPPEN]
Dim inventory.item(19)

Wie ich schon mal bemerkte gab es hier schon ein Beispiel zu Types und Items.


Jung merkste was? der eine sagt ich soll das mit types machen der andere mit DIM nun hab ich mich auf die variante mit dim geeinigt und jetzt schrebi ci hdas nicht mit types um?!

ToeB

BeitragDo, Mai 21, 2009 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Reg dich doch ab, wir wollen ja nur helfen -.-

Mavi hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
Type item
Field id
Field image
End Type

Global item1.item
item1.item = New item
item1\id = 1
item1\image = item_pic


Und was soll der code dann ? Scheinst ja doch die Type methode reinzubringen... Also weist dus ja selber nicht ...


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

beanage.johannes

BeitragFr, Mai 22, 2009 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@mavi

1. reg dich mal ab
und 2. dein code ist total unlesbar. wie oben schon gesagt, bitte einrücken.
auserdem erscheint mir das ganze etwas durcheinande rund iwie unlogisch^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group