Untitled
Kandif
plain_text
2 years ago
3.0 kB
12
Indexable
extends Node2D var point_pos:Vector2 var snake_body = [Vector2(5,10),Vector2(4,10),Vector2(3,10),Vector2(2,10)] var snake_direction = Vector2(1,0) var buffered_direction = Vector2.ZERO var changed_direction = false var add_point = false func _ready(): point_pos = place_point() draw_point() draw_snake() func draw_point(): $Board.set_cell(point_pos.x,point_pos.y,1,false,false,false,Vector2(0,0)) func place_point(): randomize() var x = randi() % 20 var y = randi() % 20 while(Vector2(x,y) in snake_body): x = randi() % 20 y = randi() % 20 return Vector2(x,y) func draw_snake(): for block in snake_body: $Board.set_cell(block.x,block.y,0,false,false,false,Vector2(7,0)) func delete_tiles(id): var cells = $Board.get_used_cells_by_id(id) for cell in cells: $Board.set_cell(cell.x,cell.y,-1) func move_snake(): delete_tiles(0) var removable = 2 if add_point: removable = 1 var body_copy = snake_body.slice(0,snake_body.size() - removable) var new_head = body_copy[0] + snake_direction body_copy.insert(0,new_head) snake_body = body_copy add_point = false if buffered_direction!=Vector2.ZERO: snake_direction = buffered_direction buffered_direction = Vector2.ZERO changed_direction = true func check_point_eaten(): if point_pos == snake_body[0]+snake_direction: point_pos = place_point() add_point = true func check_game_over(): var head = snake_body[0]+snake_direction if head.x<0 or head.x>19 or head.y<0 or head.y>19: reset() elif head in snake_body: reset() func reset(): snake_body = [Vector2(5,10),Vector2(4,10),Vector2(3,10)] snake_direction = Vector2(1,0) delete_tiles(1) add_point = place_point() func _on_Timer_timeout(): check_point_eaten() check_game_over() move_snake() draw_point() draw_snake() func _process(delta): if not changed_direction: if Input.is_key_pressed(KEY_W) && not snake_direction == Vector2(0,1) : snake_direction = Vector2(0,-1) changed_direction = true elif Input.is_key_pressed(KEY_D) && not snake_direction == Vector2(-1,0) : snake_direction = Vector2(1,0) changed_direction = true elif Input.is_key_pressed(KEY_A) && not snake_direction == Vector2(1,0) : snake_direction = Vector2(-1,0) changed_direction = true elif Input.is_key_pressed(KEY_S) && not snake_direction == Vector2(0,-1) : snake_direction = Vector2(0,1) changed_direction = true else: if Input.is_key_pressed(KEY_W) && not snake_direction == Vector2(0,1) : buffered_direction = Vector2(0,-1) elif Input.is_key_pressed(KEY_D) && not snake_direction == Vector2(-1,0) : buffered_direction = Vector2(1,0) elif Input.is_key_pressed(KEY_A) && not snake_direction == Vector2(1,0) : buffered_direction = Vector2(-1,0) elif Input.is_key_pressed(KEY_S) && not snake_direction == Vector2(0,-1) : buffered_direction = Vector2(0,1)
Editor is loading...