Here a example of a rpg shop window. You can buy and sell swords and shields.
Code below :
Import mojo
Class player
Field inventory:String[] = [ "Wooden Sword","Wooden Shield"]
Field gold:Int=362
End Class
Class shop
Field items:String[] = [ "Wooden Sword","Iron Sword",
"Steel Sword","Wooden Shield",
"Iron Shield","Steel Shield"]
Field prices:Int[] = [ 10,20,30,15,30,40]
Field buyarrowindex:Int=0
Method update()
' navigate through the screen
If KeyHit(KEY_DOWN)
buyarrowindex+=1
End If
If KeyHit(KEY_UP)
buyarrowindex-=1
End If
' keep arrow inside options
If buyarrowindex < 0 Then buyarrowindex = 0
If buyarrowindex > 7 Then buyarrowindex = 7
If KeyHit(KEY_ENTER)
If buyarrowindex < 6 'in the buy part of the screen
If hastomanyitems()=False
buyitem(items[buyarrowindex])
End If
End If
If buyarrowindex > 5 ' if in the sell part ot screen
sellitem(buyarrowindex-6)
End If
End If
End Method
Method draw()
SetColor 255,255,255
PushMatrix()
Scale 10,10
Translate 50,50
Rotate 45
Translate -50,-50
DrawText "Shop",35,-10
PopMatrix()
PushMatrix()
Scale 2,2
DrawText "Weapon",340/2,32
DrawText "Price",550/2,32
For Local y=0 Until items.Length
If buyarrowindex = y
DrawText ">",230/2,32+15+y*15
End If
DrawText "Buy",250/2,32+15+y*15
DrawText items[y],340/2,32+15+y*15
DrawText prices[y],550/2,32+15+y*15
Next
DrawText "Player gold",20,200/2+32+15
DrawText p.gold,20,200/2+64
DrawText "Player carying",340/2,200/2+32+15
For Local y=0 Until p.inventory.Length
If buyarrowindex - 6 = y
DrawText ">",230/2,200/2+y*15+64
End If
DrawText "Sell",250/2,200/2+y*15+64
DrawText p.inventory[y],340/2,200/2+y*15+64
DrawText sellprice(p.inventory[y]),550/2,200/2+y*15+64
Next
PopMatrix()
End Method
Method sellitem:Void(index:Int)
p.gold += sellprice(p.inventory[index])
p.inventory[index] = ""
End Method
Method buyitem:Void(item:String)
If p.gold >= itemprice(item) Then
If p.inventory[0] = "" Then
p.inventory[0] = item
Else
p.inventory[1] = item
End If
p.gold -= itemprice(item)
End If
End Method
Method itemprice:Int(item:String)
For Local i=0 Until items.Length
If item = items[i] Then Return prices[i]
Next
End Method
Method hastomanyitems:Bool()
If p.inventory[0] <> "" And p.inventory[1] <> "" Then Return True
Return False
End Method
Method sellprice:Int(item:String)
For Local i=0 Until items.Length
If items[i] = item Then Return prices[i]/3
Next
Return 0
End Method
End Class
Global p:player = New player
Global s:shop = New shop
Class MyGame Extends App
Method OnCreate()
SetUpdateRate(60)
End Method
Method OnUpdate()
s.update
End Method
Method OnRender()
Cls 0,0,0
SetColor 255,255,255
s.draw
DrawText "Use arrow up/down and enter.",320,0,0.5,0
End Method
End Class
Function Main()
New MyGame()
End Function
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.