Inventory System - GUI
I had posted not one but two articles on Inventory Management, but I found that some users were still unclear and had no idea on how to use or include it in an application. I tried to find out what would help them to understand, so I have some code that will help the developer to understand how it all works with a little GUI demo too.
The previous Articles can be found at here and here
Now what we shall do for this tutorial is create 5 coloured block, that are randomly placed on the screen (as things would be in the game) and as we click on them, we get them to appear in our inventory box which is at the bottom of the screen. Then if we click on the items whilst they are in our inventory, we print to the console that we are using that item. I have left it as en exercise for the reader to work out dealing with the objects, re-arrange it and remove that item back to the screen.
What you've all been waiting for, the code...
have fun...
The previous Articles can be found at here and here
Now what we shall do for this tutorial is create 5 coloured block, that are randomly placed on the screen (as things would be in the game) and as we click on them, we get them to appear in our inventory box which is at the bottom of the screen. Then if we click on the items whilst they are in our inventory, we print to the console that we are using that item. I have left it as en exercise for the reader to work out dealing with the objects, re-arrange it and remove that item back to the screen.
What you've all been waiting for, the code...
--Inventory Example with picking up items and using them -- Author : Jayant C Varma [dev@oz-apps.com] -- © 2011, OZ Apps (http://www.oz-apps.com) -- -- --create 5 elements to pick up local i, randX, randY local colours = { {255,0,0}, {0,255,0}, {0,0,255}, {255,255,0}, {0,255,255}, } local boxsize = 25 local index = 1 local _W = display.contentWidth local _H = display.contentHeight display.setStatusBar(display.HiddenStatusBar) local inventoryBox = display.newRoundedRect(10, _H-((boxsize+8)*2), _W-20, ((boxsize+5)*2),10) inventoryBox.alpha=0.3 local function quad(colorTable) return colorTable[1],colorTable[2],colorTable[3] end for i=1,#colours do randX = math.random(1,_W-15) randY = math.random(1,_H-((boxsize+15)*2)) local box = display.newRect(randX, randY, boxsize, boxsize) box:setFillColor(quad(colours[i])) box:setStrokeColor(255,255,255) box.strokeWidth=1 box.isWild = true --Indicates if the item is in the inventory or not box.itemNumber = i -- a tag for identifying the item number local function addItemToInventory(thisItem) if thisItem.isWild==true then thisItem.isWild = false local x = 10 + (index * (boxsize+10)) local y = _H - boxsize - 10 box.x = x box.y = y index = index + 1 print("Picked up object " .. thisItem.itemNumber) end end local function useItemFromInventory(thisItem) if thisItem.isWild == false then print("Using the object " .. thisItem.itemNumber) --[[ --on using, the object can be removed or placed back like dropping it thisItem.isWild = true randX = math.random(1,_W-15) randY = math.random(1,_H-50) box.x = randX box.y = randY index = index - 1 --Adjust all Items --]] end end local function onTap(event) local target = event.target if target.isWild == true then --This is not in the inventory addItemToInventory(target) --so add it into the inventory else useItemFromInventory(target) -- This is in the inventory, so use it end end box:addEventListener("tap",onTap) end
have fun...
Comments
Post a Comment