Here a short example of how to do a rpg battlescreen. You can only bash and the enemy does not fight back.
Import mojo
Class monster1
Field name:String="Bubba"
Field hp:Int=5
Field pp:Int=7
Field welcomemessage:String="Here I am to kick your ass.."
End Class
Class player
Field name:String="Player"
Field hp:Int=20
Field pp:Int=10
End Class
Class battlescreen
Field state:String="preparemonsterintro"
Field nextstate:String
Field selectindex:Int=0
Field selecttext:String[]=["Bash","PSI","Goods","Defend","Auto Fight","Run Away"]
Field keydowndelay:Int=0
Field messagedelay:Int
Field message:String
Field damage:Int
Method update()
If state="selectaction"
updateselect()
End If
If state="afterbash"
If m1.hp<0
messagedelay=100
message="You wasted the monster."
state="wait"
nextstate="preparemonsterintro"
End If
If m1.hp>0
state="selectaction"
End If
End If
If state="wait"
messagedelay-=1
If messagedelay<0
state=nextstate
End If
End If
If state="bash"
damage=Rnd(3)+2
message="You hit the monster with "+damage+" damage."
m1.hp-=damage
messagedelay=50
state="wait"
nextstate="afterbash"
End If
If state="preparemonsterintro"
state="monsterintro"
messagedelay=100
m1.hp=Rnd(10)+5
m1.pp=Rnd(10)+5
End If
If state="monsterintro"
messagedelay-=1
If messagedelay<0
state="selectaction"
End If
End If
End Method
Method draw()
If state="wait"
drawmessage(message)
drawplayerinfo()
End If
If state="monsterintro"
drawmessage(m1.welcomemessage)
drawplayerinfo()
End If
If state="selectaction"
drawselect()
drawplayerinfo()
End If
End Method
Method drawmessage(m:String)
SetColor 255,255,255
DrawLine 10,10,500,10
DrawLine 10,10,10,100
DrawLine 10,100,500,100
DrawLine 500,10,500,100
PushMatrix
Scale 2.2,2.2
DrawText m,15/2.2,15/2.2
PopMatrix
End Method
Method drawselect()
SetColor 255,255,255
DrawLine 10,10,500,10
DrawLine 10,10,10,100
DrawLine 10,100,500,100
DrawLine 500,10,500,100
SetColor 0,0,0
DrawRect 32,5,96,15
SetColor 255,255,255
DrawText p.name,32,0
Local in:Int=0
For Local x=0 To 2
For Local y=0 To 1
PushMatrix()
Scale 2.2,2.2
DrawText selecttext[in],(x*150+32)/2.2,(y*50+15)/2.2
PopMatrix()
If selectindex = in
DrawRect x*150+20,y*50+25,10,10
End If
in+=1
Next
Next
End Method
Method drawplayerinfo()
' Here the player info is drawn
SetColor 255,255,255
DrawLine 320-50,300,320+50,300
DrawLine 320-50,300,320-50,425
DrawLine 320-50,425,320+50,425
DrawLine 320+50,300,320+50,425
PushMatrix()
Scale 2.2,2.2
DrawText p.name,320/2.2,320/2.2,0.5
DrawText "HP",(320-40)/2.2,360/2.2
DrawText p.hp,320/2.2,360/2.2
DrawText "PP",(320-40)/2.2,390/2.2
DrawText p.pp,320/2.2,390/2.2
PopMatrix()
End Method
Method updateselect()
' Here the selection for the player is updated
If keydowndelay>0 Then keydowndelay-=1
If keydowndelay>0 Then Return
If KeyDown(KEY_RIGHT)
If selectindex+2 < 6
selectindex+=2
keydowndelay=10
End If
End If
If KeyDown(KEY_LEFT)
If selectindex-2>=0
selectindex-=2
keydowndelay=10
End If
End If
If KeyDown(KEY_DOWN)
If selectindex<5
selectindex+=1
keydowndelay=10
End If
End If
If KeyDown(KEY_UP)
If selectindex>0
selectindex-=1
keydowndelay=10
End If
End If
If KeyDown(KEY_ENTER)
' If bash option selected
If selectindex = 0
state="bash"
End If
End If
End Method
End Class
Global p:player = New player
Global bs:battlescreen = New battlescreen
Global m1:monster1 = New monster1
Class MyGame Extends App
Method OnCreate()
SetUpdateRate(60)
End Method
Method OnUpdate()
bs.update
End Method
Method OnRender()
Cls 0,0,0
SetColor 255,255,255
bs.draw
SetColor 255,255,255
DrawText "Use cursors and return key...",320,480-32
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.