mousepick

Blitz3D Forums/Blitz3D Beginners Area/mousepick

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

I am creating a dice game and I am using the mousepick example from DungeonTrigger (well I did tweak it a bit) to select which dice was clicked to get the face value. That all works. For some reason I cannot get the machine to count the number of clicks and force a reroll before continuing. I am willing to email a RAR of models and code but I don't think my posting my (NOT CLEANED UP) code here would do the trick. Naytheless:
; The Dice Thing Example
; by Ralph Wm Dunn aka Rook Zimbabwe
; Created in Blitz 3D
; Dice Model created by R Dunn in JTEdit
; Dice Artwork created by R Dunn in PaintShop Pro
; mousepick routines inspired by DUNGEONTRIGGER routines from Blitz Basic Website
; www.blitzbasic.com

Graphics3D 800,600,0,2				; set screen size
SetBuffer BackBuffer()
SeedRnd(MilliSecs())




camera=CreateCamera()			; create something to see with
PositionEntity camera,6,6,0
RotateEntity camera,40,55,0

light=CreateLight()				; I will dispense with the biblical reference
RotateEntity light,45,0,0		; move the light a bit to create shadows on the model
AmbientLight 44,44,41			; turn on a bit of background light so the shadow isn't so dark

; load roll button
rollbutton=LoadAnimMesh("wedge2.x")		
ScaleEntity rollbutton,1.7,1.7,1.7
UpdateNormals rollbutton				
EntityPickMode rollbutton,3
RotateEntity rollbutton,33,60,0
PositionEntity rollbutton,6,-2.5,6
EntityFX rollbutton,0

; Load table
table=LoadMesh("board1.x")		
UpdateNormals table				
EntityFX table,0
RotateEntity table,0,0,0
PositionEntity table,-3,-.9,5.25
ScaleEntity table,.015,.015,.015

; Load mesh
die1=LoadMesh("sixdie.x")		
UpdateNormals die1				
EntityPickMode die1,3
EntityFX die1,0
;NameEntity die1,dice1

; Load mesh
die2=LoadMesh("sixdie.x")		
UpdateNormals die2	
EntityPickMode die2,3			
EntityFX die2,0
;NameEntity die2,dice2

; Load mesh
die3=LoadMesh("sixdie.x")		
UpdateNormals die3				
EntityPickMode die3,3
EntityFX die3,0
;NameEntity die3,dice3

; Load mesh
die4=LoadMesh("sixdie.x")		
UpdateNormals die4				
EntityPickMode die4,3
EntityFX die4,0
;NameEntity die4,dice4


dice1=Rand(5)+1
dice2=Rand(5)+1
dice3=Rand(5)+1
dice4=Rand(5)+1

numofdice=4



While Not KeyDown( 1 )
If kkgn=0 Then numofdice=numofdice + 4

;=-=-=-=-=-=-=-=-=-=-=-=-=> SETS UP MOUSE PICK
x=MouseX()
y=MouseY()

kkgn=numofdice - (anue+bnue+cnue+nue)
x=MouseX()
y=MouseY()
e=CameraPick(camera,x,y)
If e<>entity#
		If entity Then EntityColor entity,255,255,255
		entity#=e
EndIf

If entity#
		EntityColor entity,255,240,60 ; 60 COLOR=Golden Yellow
		selected=entity               ; Did this to show what the computer thought the address was
		If MouseDown(1)               ; push L/mousebutton and get the number showing on the die
		 Select entity
			Case die1 numb=dice1 : nue=1
			Case die2 numb=dice2 : anue=1
			Case die3 numb=dice3 : bnue=1
			Case die4 numb=dice4 : cnue=1
			Case rollbutton : dice1=Rand(5)+1 : dice2=Rand(5)+1 : dice3=Rand(5)+1 : dice4=Rand(5)+1 
			Default 
		End Select
		EndIf
EndIf

  
; rotation coords for each number on dice

; DICE 1
If dice1=1 Then xs#=90 : ys#=0 : zs#=0 
If dice1=2 Then xs#=180 : ys#=0 : zs#=0
If dice1=3 Then xs#=0 : ys#=0 : zs#=90 
If dice1=4 Then xs#=180 : ys#=0 : zs#=90
If dice1=5 Then xs#=0 : ys#=90 : zs#=0
If dice1=6 Then xs#=270: ys#=0 : zs#=0
; show what dice 1 is and position it on the screen
RotateEntity die1,xs#,ys#,zs#
PositionEntity die1,0,0,4
; DICE 2
If dice2=1 Then xs#=90 : ys#=0 : zs#=0 
If dice2=2 Then xs#=180 : ys#=0 : zs#=0
If dice2=3 Then xs#=0 : ys#=0 : zs#=90 
If dice2=4 Then xs#=180 : ys#=0 : zs#=90
If dice2=5 Then xs#=0 : ys#=90 : zs#=0
If dice2=6 Then xs#=270: ys#=0 : zs#=0

RotateEntity die2,xs#,ys#,zs#
PositionEntity die2,-1.5,0,3
; DICE 3
If dice3=1 Then xs#=90 : ys#=0 : zs#=0 
If dice3=2 Then xs#=180 : ys#=0 : zs#=0
If dice3=3 Then xs#=0 : ys#=0 : zs#=90 
If dice3=4 Then xs#=180 : ys#=0 : zs#=90
If dice3=5 Then xs#=0 : ys#=90 : zs#=0
If dice3=6 Then xs#=270: ys#=0 : zs#=0

RotateEntity die3,xs#,ys#,zs#
PositionEntity die3,0,0,5.5
; DICE 4
If dice4=1 Then xs#=90 : ys#=0 : zs#=0 
If dice4=2 Then xs#=180 : ys#=0 : zs#=0
If dice4=3 Then xs#=0 : ys#=0 : zs#=90 
If dice4=4 Then xs#=180 : ys#=0 : zs#=90
If dice4=5 Then xs#=0 : ys#=90 : zs#=0
If dice4=6 Then xs#=270: ys#=0 : zs#=0

RotateEntity die4,xs#,ys#,zs#
PositionEntity die4,1,0,7

RenderWorld

tat=dice1+dice2+dice3+dice4

Text 0,40,"       Total: "+tat
Text 0,10,"D1: "+dice1
Text 0,20,"D2: "+dice2
Text 55,10,"D3: "+dice3
Text 55,20,"D4: "+dice4

tat=dice1+dice2+dice3+dice4

Text 0,40,"Total: "+tat
Text 0,60,"Selected: "+selected
Text 0,80,"DIE1: "+numb
Text 75,100,"Num of Dice: "+ kkgn


Flip

Wend

End

If this helps anyone I am still willing... my email is in my signature line. Please no SPAM! : )

Rook Zimbabwe