Untitled
unknown
plain_text
a year ago
1.7 kB
7
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 positionEditor is loading...
Leave a Comment