Items verwalten...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Johann

Betreff: Items verwalten...

BeitragMo, Feb 13, 2006 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 13, 2006 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 13, 2006 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
...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

BeitragMo, Feb 13, 2006 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 13, 2006 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 13, 2006 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 13, 2006 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 13, 2006 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group