zetris: fix rotated sprite
This commit is contained in:
		
							parent
							
								
									f161168a29
								
							
						
					
					
						commit
						530a47a085
					
				
					 1 changed files with 49 additions and 42 deletions
				
			
		
							
								
								
									
										33
									
								
								zetris.lua
									
										
									
									
									
								
							
							
						
						
									
										33
									
								
								zetris.lua
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -19,7 +19,7 @@ pieces = {
 | 
			
		|||
currentPiece = { piece = pieces.t,
 | 
			
		||||
	position = {x = 11, y = 2},
 | 
			
		||||
	rotation = 0
 | 
			
		||||
																	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function rotatedpiece()
 | 
			
		||||
	points = {}
 | 
			
		||||
| 
						 | 
				
			
			@ -27,12 +27,9 @@ function rotatedpiece()
 | 
			
		|||
		return currentPiece.piece
 | 
			
		||||
	elseif currentPiece.rotation == 1 then
 | 
			
		||||
		for i=1, 4 do
 | 
			
		||||
		 points[i] = {x=currentPiece.piece[i].x,
 | 
			
		||||
																y=currentPiece.piece[i].y}
 | 
			
		||||
		 --points[i].x = currentPiece.piece[i].y * -1
 | 
			
		||||
			--points[i].y = currentPiece.piece[i].x
 | 
			
		||||
			points[i].x = currentPiece.piece[i].x
 | 
			
		||||
			points[i].y = currentPiece.piece[i].y
 | 
			
		||||
			points[i] = {x=0,y=0}
 | 
			
		||||
			points[i].x = currentPiece.piece[i].y * -1
 | 
			
		||||
			points[i].y = currentPiece.piece[i].x
 | 
			
		||||
		end
 | 
			
		||||
	elseif currentPiece.rotation == 2 then
 | 
			
		||||
		for i=1, 4 do
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +47,6 @@ function rotatedpiece()
 | 
			
		|||
	return points
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
																
 | 
			
		||||
function piecedropped()
 | 
			
		||||
	piece = rotatedpiece()
 | 
			
		||||
	point = currentPiece.position
 | 
			
		||||
| 
						 | 
				
			
			@ -88,9 +84,11 @@ function droppiece()
 | 
			
		|||
end
 | 
			
		||||
 | 
			
		||||
function resetcurrent()
 | 
			
		||||
currentPiece = { piece = pieces.t,
 | 
			
		||||
currentPiece = {
 | 
			
		||||
	piece = pieces.t,
 | 
			
		||||
	position = {x = 11, y = 2},
 | 
			
		||||
																	rotation = 0 }
 | 
			
		||||
	rotation = 0
 | 
			
		||||
}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function drawpiece()
 | 
			
		||||
| 
						 | 
				
			
			@ -100,14 +98,16 @@ function drawpiece()
 | 
			
		|||
		point = { x = (piece[i].x + origin.x) * blocksize, 
 | 
			
		||||
		          y = (piece[i].y + origin.y) * blocksize}
 | 
			
		||||
		
 | 
			
		||||
		spr(piece.sprite, point.x, point.y)
 | 
			
		||||
		spr(currentPiece.piece.sprite, point.x, point.y)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function TIC()
 | 
			
		||||
	map(0,0,30,17)
 | 
			
		||||
 local	newPosition = {x = currentPiece.position.x,
 | 
			
		||||
	y = currentPiece.position.y}
 | 
			
		||||
	local newPosition = {
 | 
			
		||||
		x = currentPiece.position.x,
 | 
			
		||||
		y = currentPiece.position.y
 | 
			
		||||
	}
 | 
			
		||||
	if btnp(2) then
 | 
			
		||||
		newPosition.x = newPosition.x - 1
 | 
			
		||||
	elseif btnp(3) then
 | 
			
		||||
| 
						 | 
				
			
			@ -117,6 +117,13 @@ function TIC()
 | 
			
		|||
	elseif btnp(4) then
 | 
			
		||||
		r = currentPiece.rotation
 | 
			
		||||
		currentPiece.rotation = (r+1)%4
 | 
			
		||||
		rpiece = rotatedpiece()
 | 
			
		||||
		trace('position: '..currentPiece.position.x..', '..currentPiece.position.y)
 | 
			
		||||
		trace('sprite: '..currentPiece.piece.sprite)
 | 
			
		||||
		trace('rotation: '..currentPiece.rotation)
 | 
			
		||||
		for i = 1, 4 do
 | 
			
		||||
			trace(rpiece[i].x..', '..rpiece[i].y)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	if canmove(newPosition) then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue