Snake - 11 - Draw snake full ver

 avatar
TaktycznyBocian
plain_text
2 years ago
2.3 kB
44
Indexable
func draw_snake() :
	for block_index in snake_body.size():
		var block = snake_body[block_index]
		if block_index == 0:
			var head_dir = relation(snake_body[0], snake_body[1])
			if head_dir == "left":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(2,0))
			if head_dir == "right":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(3,1))
			if head_dir == "top":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(3,0))
			if head_dir == "down":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(2,1))
		elif block_index == snake_body.size() - 1:
			var tail_dir = relation(snake_body[-1], snake_body[-2])
			if tail_dir == "left":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(1,0))
			if tail_dir == "right":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(0,0))
			if tail_dir == "top":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(1,1))
			if tail_dir == "down":
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(0,1))
		else:
			var previous_block = snake_body[block_index + 1] - block
			var next_block = snake_body[block_index - 1] - block
			if previous_block.x == next_block.x:
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(6,1))
			elif previous_block.y == next_block.y:
				$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(6,0))
			else:
				if previous_block.x == - 1 && next_block.y == - 1 or  previous_block.y == - 1 && next_block.x == - 1:
					$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(5,1))
				if previous_block.x == - 1 && next_block.y ==  1 or  previous_block.y ==  1 && next_block.x == - 1:
					$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(5,0))
				if previous_block.x == 1 && next_block.y == - 1 or  previous_block.y == -1 && next_block.x == 1:
					$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(4,1))
				if previous_block.x == 1 && next_block.y == 1 or  previous_block.y == 1 && next_block.x ==  1:
					$Board.set_cell(block.x, block.y, snake, false, false, false, Vector2(4,0))
Editor is loading...