Tässä on jonkinmoinen esimerkki. Suosittelen kuitenkin tekemään oman inventoryn piirron. ; )
Code: Select all
Const INVENTORYWIDTH = 3 ' Inventoryn leveys paikoissa
Const INVENTORYHEIGHT = 3 ' Inventory korkeus paikoissa
Const MAXITEMSPERSLOT = 2 ' Maksimi määrä tavaroita yhdessä paikassa
Dim Inventory(INVENTORYWIDTH - 1,INVENTORYHEIGHT - 1,1) ' Luodaan tarvittavan kokoinen taulukko
Dim Items(2) ' Luodaan taulukko tavaroille
Dim ItemData(2) As String ' Kuvaus tavaroille
Items(1) = LoadImage("media/cow.bmp") ' Ladataan tavaran kuva
Items(2) = LoadImage("media/tatti.bmp") ' Ladataan tavaran kuva
ItemData(1) = "It's a cow" ' Tallennetaan kuvaus taulukkoon
ItemData(2) = "Shroom of mass destruction" ' Tallennetaan kuvaus taulukkoon
Type OBJECTS ' Esimerkin materiaalia
Field ID
Field img
Field x
Field y
Field SpeedX As Float
Field SpeedY As Float
EndType
For i = 1 To 20 ' Esimerkin materiaalia
uusi.OBJECTS = New(OBJECTS)
uusi\ID = Rand(1,2)
uusi\img = CloneImage(Items(uusi\ID))
uusi\x = Rand(150)
uusi\y = Rand(150)
Ra = Rand(359)
uusi\SpeedX = Cos(ra)
uusi\SpeedY = Sin(ra)
Next i
Repeat
For uusi.OBJECTS = Each OBJECTS ' Esimerkin materiaalia
uusi\x = uusi\x + uusi\SpeedX
uusi\y = uusi\y + uusi\SpeedY
If uusi\x < 0 Or uusi\x > 150 Then uusi\SpeedX = -uusi\SpeedX
If uusi\y < 0 Or uusi\y > 150 Then uusi\Speedy = -uusi\Speedy
DrawImage uusi\img,uusi\x,uusi\y
If MouseHit(1) And MouseX() > uusi\x And MouseX() < uusi\x + ImageWidth(uusi\img) And MouseY() > uusi\y And MouseY() < uusi\y + ImageHeight(uusi\img) Then
If AddToInventory(uusi\id) Then Delete uusi
EndIf
Next uusi
DrawInventory(250,100)
DrawScreen
Forever
Function AddToInventory(ID)
For a = 0 To INVENTORYHEIGHT - 1
For i = 0 To INVENTORYWIDTH - 1
If Inventory(i,a,1) = 0 Then
Inventory(i,a,0) = ID
Inventory(i,a,1) = Inventory(i,a,1) + 1
Return True
Goto purQ
ElseIf Inventory(i,a,0) = ID And Inventory(i,a,1) < MAXITEMSPERSLOT Then
Inventory(i,a,1) = Inventory(i,a,1) + 1
Return True
Goto purQ
EndIf
Next i
Next a
Return False
purQ:
EndFunction
Function RemoveFromInventory(i,a)
If Inventory(i,a,1) = 1 Then
Inventory(i,a,0) = 0
EndIf
Inventory(i,a,1) = Inventory(i,a,1) - 1
EndFunction
Function DrawInventory(x,y)
For a = 0 To INVENTORYHEIGHT - 1
For i = 0 To INVENTORYWIDTH - 1
Box x + i * 32,y + a * 32,32,32,0
If MouseX() > x + i * 32 And MouseX() < x + i * 32 + 32 And MouseY() > y + a * 32 And MouseY() < y + a * 32 + 32 And Inventory(i,a,1) > 0 Then
If MouseHit(1) Then RemoveFromInventory(i,a)
EndIf
If Inventory(i,a,1) > 0 Then
If MouseX() > x + i * 32 And MouseX() < x + i * 32 + 32 And MouseY() > y + a * 32 And MouseY() < y + a * 32 + 32 Then
Text 2,ScreenHeight() - TextHeight(ItemData(Inventory(i,a,0))),ItemData(Inventory(i,a,0))
EndIf
DrawImage Items(Inventory(i,a,0)),x + i * 32 + 1,y + a * 32 + 1
Text x + i * 32,y + a * 32 + 2, Inventory(i,a,1)
EndIf
Next i
Next a
EndFunction