Untitled

 avatar
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