Items verwalten...
Übersicht

JohannBetreff: Items verwalten... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe mir vorgenommen ein kleines simples Rollenspiel zu Programmieren. Jetzt habe ich mit Hilfe von Types zwei Gegenstände erstellt diese dann auch auf dem Bildschirm dargestellt werden. Mein Problem besteht jetzt nur darin das ich nicht darauf komme wie ich es bewerkstelligen kann das der Cursor weiß welches Item sich an der stelle befindet. Ich habe mir gedacht(aber noch nicht umgesetzt, da mir die Idee fehlt wie ich es machen soll) eine Art Datenbannk zu erstellen in der jedes Felt eine ID zuweise und das Item das diesem Feld zugewiesen diese ID erhält sodass der Cursor diese liest und weiß welche Iteminformationen zu bearbeiten sind. So...nur weiß ich jetzt halt nicht wie genau ich das mit Types anstellen soll? Oder sollte ich das vielleicht mit Dim Feldern lösen? Es währe toll wenn Jemand Hinweise oder verweise zu Totorien für mich parat hätte. |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Theoretisch kanns du das auch mit einem Dim-Feld lösen:
Code: [AUSKLAPPEN] Graphics 800,600,32,2 SetBuffer BackBuffer() Global MX,MY Dim Inventar1(5,5) Type Item Field Name$ End Type For i=0 To 5 Local IT.Item = New Item IT\Name$ = "Item Nr. "+i Inventar1(i,Rand(5)) = Handle(IT) Next Repeat Cls MX = MouseX() MY = MouseY() For i=0 To 5 For i2=0 To 5 Color 100,100,100 Rect 50*i,50*i2,50,50,0 If Inventar1(i,i2)<>0 IT.Item = Object.Item(Inventar1(i,i2)) Color 255,255,255 Rect 50*i+2,50*i2+2,46,46,0 Color 255,0,0 Text 50*i+25,50*i2+25,IT\Name,1,1 If MX>50*i And MX<50*(i+1) And MY>50*i2 And MY<50*(i2+1) Text 10,10,IT\Name EndIf EndIf Next Next Flip Until KeyHit(1) End Oder meinst du eher eine Routine die Gegenstände vom ganzen Bildschirm picken kann ohne ein Inventar benutzen zu müssen? |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
...oder du fügst deinem Type einfach zwei Felder für die momentane X/Y-Position des jeweiligen Items zu. Das ist recht flexibel -du musst nicht viel ändern, wenn du dich später entschliesst, statt einem horizontalem Inventar vielleicht ein vertikales zu nehmen etc. | ||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
Johann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke schonmal für die Tipps und den Code !
Jetzt habe ich einfach mal ein weiteres Feld für die Anzahl des jeweiligen Items erstellt, kein Problem, mein Probelm jetzt aber ist halt das ich nicht ganz verstehe wie ich jetzt die erzeugten Gegenstände geziehlt ansteuern kann so zum Beispiel das ich jetzt bei "Item 1" 2 Einheiten hinzufüge. |
||
Johann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah ok ich habe den Code einfach wie folgt anbegändert:
Code: [AUSKLAPPEN] Graphics 800,600,32,2 SetBuffer BackBuffer() Global MX,MY Dim Inventar1(5,5) Type Item Field Name$ Field Anzahl End Type For i=0 To 5 Local IT.Item = New Item IT\Name$ = "Item Nr. "+i IT\Anzahl= 0 Inventar1(i,Rand(5)) = Handle(IT) Next Repeat Cls MX = MouseX() MY = MouseY() For i=0 To 5 For i2=0 To 5 Color 100,100,100 Rect 50*i,50*i2,50,50,0 If Inventar1(i,i2)<>0 IT.Item = Object.Item(Inventar1(i,i2)) Color 255,255,255 Rect 50*i+2,50*i2+2,46,46,0 Color 255,0,0 Text 50*i+25,50*i2+25,IT\Name,1,1 If MX>50*i And MX<50*(i+1) And MY>50*i2 And MY<50*(i2+1) Text 10,10,IT\Name Text 10,20,IT\Anzahl ;wenn Pfeil nach oben gedrückt If KeyHit(200) Then IT\Anzahl = IT\Anzahl + 1 EndIf ;-- EndIf EndIf Next Next Flip Until KeyHit(1) End [syntax="bb"] Ok, jetzt kann ich zwar mit druck auf der Pfeilnachoben Taste die Anzahl der Jeweiligen Objekte erhöhen aber irgendwie fehlt mir immer noch der Anstoß dazu wie es abläuft wenn ich jetzt einfach sagen will das er die Anzahl von Item 3 um 1 erhöhen soll. |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie willst du denn Item 3 aufrufen? Willst du nach dem Namen suchen, oder über die Feldposition? Über die Feldposition, die du ja in diesem Beispiel durch die Mauszeigerposition auswählst, kannst du doch auf das dort enthaltene Objekt zugreifen! Dann kannst du damit alles machen was du willst. Ich verstehe jetzt glaube ich nicht ganz was du genau machen/haben willst, gib vielleicht mal ein Beispiel an wie es nachher im Spiel sein soll, oder die Ausgangssituation und was du daraus bekommen möchtest. | ||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type TItem Field Name$ Field PosX Field PosY Field Zahl End Type Global Item.TItem Function CreateIten(Name$,PosX,PosY,Zahl) Item=New TItem Item\Name$=Name$ Item\PosX=Posx Item\PosY=PosY ITem\Zahl=Zahl End Function Function DeleteItem(Name$) For Item=Each TItem If Lower$(Item\Name$)=Lower$(Name$) Then Delete Item EndIf Next End Function Function AddItem(Name$) For Item=Each TItem If Lower$(Item\Name$)=Lower$(Name$) Then ITem\Zahl=ITem\Zahl+1 Exit EndIf Next End Function Function Lower$(S$) Slen=Len(S) If Slen>0 Then For P=1 To Slen ASCII=Asc(Mid$(S$,P,1)) If Ascii>64 And Ascii<92 Then Ascii=Ascii+32 ElseIf Ascii=220 Then ;ü Ascii=252 ElseIf Ascii=196 Then ;ä Ascii=228 ElseIf Ascii=214 Then ;ö Ascii=246 End If R$=R$+Chr$(ASCII) Next Return R$ End If End Function |
||
Johann |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ahhhh..ich glaub mir ist grad "das" Licht aufgegangen ^^".
Das ist ja einfacher als ich dachte. Oh mensch.... Ok gut vielen Dank an alle die mir hier geholfen haben! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group