Untitled
unknown
plain_text
6 months ago
1.7 kB
5
Indexable
extends Node2D const ROOM_COUNT = 9 # Toplam oda sayısı const GRID_SIZE = 9 # 9x9 grid const START_ROOM = Vector2(0, 0) # Başlangıç odası konumu var rooms = [] # Oda dizisi var used_positions = [] # Kullanılan grid konumları func _ready(): generate_dungeon() func generate_dungeon(): # Boş odaları oluştur for i in range(ROOM_COUNT): var room_instance = preload("res://testroom1.tscn").instance() rooms.append(room_instance) add_child(room_instance) var position = Vector2(randf_range(-4, 4), randf_range(-4, 4)) # -4 ile 4 arası rastgele konum while position in used_positions or !is_valid_position(position): position = Vector2(randf_range(-4, 4), randf_range(-4, 4)) used_positions.append(position) room_instance.position = position * 64 # 64 birimlik grid boyutu # Özel odaları oluştur for special_room in ["testroom2", "testroom3", "testroom4"]: var special_instance = preload("res://" + special_room + ".tscn").instance() rooms.append(special_instance) add_child(special_instance) var dead_end_position = find_dead_end_position() special_instance.position = dead_end_position * 64 func is_valid_position(position): return position.x >= -4 and position.x <= 4 and position.y >= -4 and position.y <= 4 func find_dead_end_position(): var position = Vector2() while true: position = Vector2(randf_range(-4, 4), randf_range(-4, 4)) if is_valid_position(position) and position not in used_positions: used_positions.append(position) return position
Editor is loading...
Leave a Comment