Shop menu where you can buy or sell things

Blitz3D Forums/Blitz3D Beginners Area/Shop menu where you can buy or sell things

Infantry_Nutter(Posted 2004) [#1]
Ok Just got Blitz last friday and im trying to write a small menu that acts like a shop, I can get my program to let you buy things and it deducts money from the player but I cant work out how to get my program to check if the player has enough money to buy a certain item. (hope that makes sense)

cheers


Andy(Posted 2004) [#2]
if playermoney >= itemprice then
items=items+1
playermoney=playermoney-itemprice
endif


It should be rather simple...

Andy


Infantry_Nutter(Posted 2004) [#3]
hehe Hmmm ive got a lot to learn :)

Didnt realise it could be that simple grrrr

Cheers

Dan


Infantry_Nutter(Posted 2004) [#4]
hmmm how do i declere 4 seperate item prices for it to check?

sorry for the mega newbie questions.

cheers

Dan


darklordz(Posted 2004) [#5]
; LIL DEMO
; Press 1 to 4 to deduct price

Graphics 320,200,0,2

Global item1# = 1.15
Global item2# = 1.30
Global item3# = 4.99
Global item4# = 6.40

totalmoney# = 100.00

While Not KeyHit(1)
	Cls
	If KeyHit(2) Then totalmoney# = totalmoney#-item1#
	If KeyHit(3) Then totalmoney# = totalmoney#-item2#
	If KeyHit(4) Then totalmoney# = totalmoney#-item3#
	If KeyHit(5) Then totalmoney# = totalmoney#-item4#
	Text 50,50,totalmoney# 
	Flip
Wend



Rimmsy(Posted 2004) [#6]
or using types. a bit more complicated. ;)
Global player_money#=0.0

Type shop_item
	Field name$
	Field price# ; so you can have 1.25
	Field stock
End Type

Function createShopItem(name$,price#,stock)
	s.shop_item=New shop_item
	s\name=name
	s\price=price
	s\stock=stock
End Function

; this function returns an item given a name
Function getShopItemFromName.shop_item(name$)
	name=Lower(name)
	For i.shop_item=Each shop_item
    	If Lower(i\name)=name Then Return i
	Next
End Function


; this function "buys" a shop_item
; and deducts the price of it from the player's money

Function buyShopItem(name$)
	If player_money=0 Then Return ; you haven't got enough money
	item.shop_item=getShopItemFromName(name)

	If item=Null 
		;Print "there is no item called "+name
		Return
	EndIf

	If player_money => item\price
		If item\stock>0
			; buy it then!
			player_money=player_money-item\price
			item\stock=item\stock-1
		Else
			; there is no stock to buy
		EndIf
	Else
		; not enough money
	EndIf
End Function

Function countShopItems()
	For i.shop_item=Each shop_item
		g=g+1
	Next
	Return g
End Function

Function listShopItems(x,y)
	Text x,y,"Name:"
	Text x+200,y,"Price:"
	Text x+280,y,"Price:"
	v=2
    For i.shop_item=Each shop_item
		Text x,y+(FontHeight()*v),(v-1)+" - "+i\name
		Text x+200,y+(FontHeight()*v+1),"£"+i\price
		Text x+280,y+(FontHeight()*v+2),i\stock
		v=v+1
	Next	
End Function






;--------------------------------------
; main program
;--------------------------------------
; give the player some money
player_money=5000.0

; create a few items

createShopItem("Fruit",10,100)
createShopItem("Sword",500,3)
createShopItem("Magic Berry Juice",5000,0)
createShopItem("Magic Jam",2500,1)
createShopItem("Normal Jam",1500,6)
createShopItem("Blue Jam",500,16)




; now buy some stuff
While KeyHit(1)=0
	Cls
	
	; list the items, their price and stock amount
	listShopItems(0,0)
	
	; count how many items there are
	numberOfItems=countShopItems()
	
	; draw some stuff	
	Text 0,(FontHeight()*(numberOfItems+3)),"Press 1-6 to buy something"
	Text 0,(FontHeight()*(numberOfItems+4)),"Money left: "+player_money
	
	If KeyHit(2) Then buyShopItem("fruit")
	If KeyHit(3) Then buyShopItem("Sword")
	If KeyHit(4) Then buyShopItem("Magic Berry Juice")
	If KeyHit(5) Then buyShopItem("Magic Jam")
	If KeyHit(6) Then buyShopItem("Normal Jam")
	If KeyHit(7) Then buyShopItem("Blue Jam")
	
	Flip
Wend
End




Infantry_Nutter(Posted 2004) [#7]
WoW!! Thanks for your time and help everyone youve really helped me out here!!

Are there any Books for Blitz Basic that goes more indepth then the manual?

Cheers

Dan


maximo(Posted 2004) [#8]
Swift should be writting one soon for all of us I hope :) Swift what do you say?


Rimmsy(Posted 2004) [#9]
There is a book (blitz2d) that helps you understand the basics. here: http://www.blitzcoder.com/bookinfo2d.html

You'll pick it up from examples pretty quick.


Infantry_Nutter(Posted 2004) [#10]
Cheers just bought the book cant wait for it to get here.

Rims i typed in your code lastnight and it doesent seem to accept user input it just sits in the menu screen :)

but probly something ive done wrong somewhere

cheers


Dan


WolRon(Posted 2004) [#11]
Rims i typed in your code lastnight and it doesent seem to accept user input it just sits in the menu screen
I hope you actually copied and pasted it. Retyping would be pointless on a multitasking computer. There would be less chance for errors as well.


Hansie(Posted 2004) [#12]
its more fun retyping! just like in the old days when you bought computer magazines that featured games as DATA lines, and you spent several days with a ruler typing in all that data ... only to get the infamous "error check", and never got to see the game.

LOL :-D


Infantry_Nutter(Posted 2004) [#13]
I cant copy and paste it because i am using an Army leaerning Centre pc to read the boards and using my laptop back at camp to write in blitz, so i have to print things out and then re-type them in.