Currently Selected Tile (Types)
Blitz3D Forums/Blitz3D Beginners Area/Currently Selected Tile (Types)| 
 | ||
| Hi all, I've a 5x5 'grid' of tiles, each of which is a type element (Fields: X, Y, Letter). Each tile is a randomly selected letter of the alphabet. When the player moves the cursor over a tile, how can I 'read' what the tile they are over is? I hope this makes sense, but if any further info. would be useful, please let me know. Any help is much appreciated! ;) Kindest regards, M | 
| 
 | ||
| Well you have Dim grid.tile(5,5) I hope. Then you convert the mouse position to a tile index. Local mousetile.tile mousetile=grid(mousex()/tilewidth,mousey()/tileheight) Now mousetile points to the tile the mouse is over. Print mousetile\letter | 
| 
 | ||
| Hi, Hmm, I didn't have the array set up, so I'll introduce that and see if I can get it to work. In the mean time, here's my code (relevant parts) 
; Variable & Type Dimensions-----------------------------------------------------------------------------------------------------
Global state=0 ; Game state variable.
Global mx,my ; Mouse X and Y co-ordinates.
Type tile
Field x,y,l
End Type
; Media--------------------------------------------------------------------------------------------------------------------------
Global gfxpoint=LoadImage("gfx\hand.png") : MaskImage gfxpoint,255,0,255
Global gfxboard=LoadImage("gfx\board.png")
Global gfxletters=LoadAnimImage("gfx\letters.png",129,128,0,78) : MaskImage gfxletters,255,0,255
; Main Game Loop-----------------------------------------------------------------------------------------------------------------
Repeat
	Cls
	If state=0 Then
		Generate()
	End If
	Display()
	Flip
Until KeyHit(1)
; Functions----------------------------------------------------------------------------------------------------------------------
Function Display()
	DrawImage gfxboard,0,0
	mx=MouseX()
	my=MouseY()
	mxa=Floor((mx-53)/129)
	mya=Floor((my-62)/128)
	For letter.tile=Each tile
		DrawImage gfxletters,letter\x,letter\y,letter\l
		If mx>=53 And mx<698 And my>=62 And my<702
			DrawImage gfxletters,(mxa*129)+53,(mya*128)+62,letter\l+26
		End If
	Next 
	DrawImage gfxpoint,mx,my
End Function
Thanks! | 
| 
 | ||
| The best way to do it is, when you create the tiles you do something like: letter.tile=new tile grid(x,y)=letter letter\x=x letter\y=y Then to tell which tile the mouse is over you use grid(mxa,mya) | 
| 
 | ||
| Or just change the If statement you have to: If mx>=letter\x And mx<letter\x+129 And my>=letter\y And my<letter\y+128 DrawImage gfxletters,(mxa*129)+53,(mya*128)+62,letter\l+26 End If |