Working on my first monkey app

Monkey Forums/Monkey Programming/Working on my first monkey app

zardon(Posted 2013) [#1]
I am wanting to write a card game, I am trying to port the card game 'For sale' and have gotten the models and data set up but I am stuck on 3 areas.

1) Shuffling the cards
2) Intro Scene -> Player creation -> Play loop
3) Drawing and animating cards

Ideally, I'd like to add GameKit/GameCenter so that you could have multiple people playing the card game on a turn-based game. But its something I have no experience with.

The code I have so far seems to be working, but this is my first attempt so it might be wrong. I am happy for code-reviews.

At the moment, all this does is setup the cards/data. But it does not draw anything on to the screen.

I have a series of basic graphics I'd like to use for the cards but have never done anything using images with Monkey yet.

Anyway, my code is below


' Port of For Sale card game for Monkey
' First attempt at Monkey app
' ---------------------------------

Import mojo.app
Import mojo.graphics

Const kMaxPlayers = 6

' Game States
Const kGameStateSetup:Int = 0
Const kGameStateInPlay:Int = 1
Const kGameStateIsPaused:int = 2

Global gameState:Int = kGameStateSetup
Global cards:List <fsCard> = New List <fsCard>
Global propertyCards:List <fsProperty> = New List<fsProperty>
Global chequeCards:List <fsCheque> = New List<fsCheque>
Global players:= New List<fsPlayer>


' ----------------
' Main method
' ----------------
Function Main()
	New Game
End


' ----------
' Classes
' ----------

Class fsPlayer
	Field name:String
	Field coins:Int 
	'Field cards:List <fsCard>
	
	Method New(name:String)
		Self.name = name
		Self.coins = 14
	End 	
End 

Class fsCard 
	Field value:Int
	Field status:Int
	
	Method New (value:Int=0)
		Self.value = value
		Self.status = 0
	End	
End

Class fsProperty Extends fsCard
	Field name:String
	
	Method New (name:String="", value:Int=0) 
		Self.name = name
		Self.value = value
	End	
	
	Method Render()
		PushMatrix()
		Print "Property card: " + Self.name + " " + Self.value
		PopMatrix()
	End
	
End

Class fsCheque Extends fsCard
	Method New(value:Int=0)
		Self.value = value
	End
	
	Method Render()
		PushMatrix()
		Print "Cheque card: " + Self.value
		PopMatrix()
	End
End 

Class Game Extends App
		
	Method OnCreate()
		gameState = kGameStateSetup
		Self.createPropertyCards()
		Self.createChequeCards()
		SetUpdateRate(60)
	End
	
	Method OnRender()
		Local sizeOfPropertyCards:Int = propertyCards.Count()
		Local sizeOfChequeCards:Int = chequeCards.Count()		
	
		Cls(0, 42, 0)
		SetColor(200, 200, 200)
		
		
		DrawText "For sale",0,0
		DrawText "# of Property cards = " + sizeOfPropertyCards, 100, 100
		DrawText "Number of Cheque cards = " + sizeOfChequeCards, 100, 125
	
		#Rem		
		For Local c:= Eachin propertyCards
			c.Render()
		Next
		
		For Local c:= Eachin chequeCards
			c.Render()
		End
		#End
		
	End
	
	
	' Create cards -------------------------------------------------
	
	Method createPropertyCards()	
		propertyCards.AddLast( New fsProperty("Cardboard box",1) )	
		propertyCards.AddLast( New fsProperty("Outhouse", 2) )
		propertyCards.AddLast( New fsProperty("Sewer", 3) )
		propertyCards.AddLast( New fsProperty("Dog house", 4) )
		propertyCards.AddLast( New fsProperty("Cave", 5) )
		propertyCards.AddLast( New fsProperty("Tepee", 6) )
		propertyCards.AddLast( New fsProperty("Tent", 7) )
		propertyCards.AddLast( New fsProperty("Igloo", 8) )
		propertyCards.AddLast( New fsProperty("Beach hut", 9) )
		propertyCards.AddLast( New fsProperty("Forest hut", 10) )
		propertyCards.AddLast( New fsProperty("Tree house", 11) )
		propertyCards.AddLast( New fsProperty("Highland house", 12) )
		propertyCards.AddLast( New fsProperty("Camper van ", 13) )
		propertyCards.AddLast( New fsProperty("Small island", 14) )
		propertyCards.AddLast( New fsProperty("Wood house", 15) )
		propertyCards.AddLast( New fsProperty("Lighthouse", 16) )
		propertyCards.AddLast( New fsProperty("Barge boat", 17) )
		propertyCards.AddLast( New fsProperty("RV", 18) )
		propertyCards.AddLast( New fsProperty("Flat", 19) )
		propertyCards.AddLast( New fsProperty("Thin house", 20) )
		propertyCards.AddLast( New fsProperty("Residential house", 21) )
		propertyCards.AddLast( New fsProperty("Large residential house", 22) )
		propertyCards.AddLast( New fsProperty("1900 residential house", 23) )
		propertyCards.AddLast( New fsProperty("Beach house", 24) )
		propertyCards.AddLast( New fsProperty("Country estate", 25) )
		propertyCards.AddLast( New fsProperty("Castle", 26) )
		propertyCards.AddLast( New fsProperty("Manor House ", 27) )
		propertyCards.AddLast( New fsProperty("Palace", 28) )
		propertyCards.AddLast( New fsProperty("Penthouse apartment", 29) )
		propertyCards.AddLast( New fsProperty("Space station", 30) )	
	End

	
	Method createChequeCards()		
		For Local sets:Int = 0 To 1
			For Local i:Int = 0 To 15
				If (i = 1) Then 
					' Ignore it. No 1 value cards are created
				Else 
					chequeCards.AddLast( New fsCheque(i) )
				End If
			Next
		Next 	
	End 

		

End