본문 바로가기

2022 하계 모각소

7/14 활동 후 기록

활동 내용:

 <아이작의 번제> 와 같은 게임의 맵 생성 방식을 탐구하고 나름대로 기초적인 바탕을 작성함.

ublic class RoomMake : MonoBehaviour
{
    Queue<int> roomMaker; //방을 만들 때 사용
    Queue<int> madedRoom; //만든 방을 저장
    int roomCounter = 7; //만들 방 갯수 >> 추후 조건 추가할 것
    private void Start()
    {
        roomMaker= new Queue<int>();
        madedRoom= new Queue<int>();
        roomMaker.Enqueue(44); // 44 == 시작 방
        madedRoom.Enqueue(44);
        while(madedRoom.Count < roomCounter)
        {
            if (roomMaker.Count == 0) // 방 생성을 실행할 방들이 없고, 아직 목표 방 갯수에 도달하지 못했다면
            {
                foreach(int number in madedRoom)
                {
                    roomMaker.Enqueue(number);//이미 만들어진(방 생성과정에 한번 투입된) 방들을 다시 투입
                }
            }
            var i = roomMaker.Dequeue();
            if (!madedRoom.Contains(i + 1))
            {
                int rndm = Random.Range(0, 2);
                if(rndm == 0)
                {
                    roomMaker.Enqueue(i + 1);
                    madedRoom.Enqueue(i + 1);
                }
            } // 현재 방.x + 1
            if (madedRoom.Count >= roomCounter) break;
            if (!madedRoom.Contains(i - 1))
            {
                int rndm = Random.Range(0, 2);
                if (rndm == 0)
                {
                    roomMaker.Enqueue(i - 1);
                    madedRoom.Enqueue(i - 1);
                }
            } // 현재 방.x - 1
            if (madedRoom.Count >= roomCounter) break;
            if (!madedRoom.Contains(i + 10))
            {
                int rndm = Random.Range(0, 2);
                if (rndm == 0)
                {
                    roomMaker.Enqueue(i + 10);
                    madedRoom.Enqueue(i + 10);
                }
            } // 현재 방.y + 1
            if (madedRoom.Count >= roomCounter) break;
            if (!madedRoom.Contains(i - 10))
            {
                int rndm = Random.Range(0, 2);
                if (rndm == 0)
                {
                    roomMaker.Enqueue(i - 10);
                    madedRoom.Enqueue(i - 10);
                }
            } // 현재 방.y - 1
            if (madedRoom.Count >= roomCounter) break;
        }
        foreach(int number in madedRoom)
        {
            Debug.Log(number); //잘 생성됐는지 확인
        }
    }
}

방의 타입은 class로 만들어 줄 예정이고, 이에 따라 코드를 변경할 것.

 

소감: 계획에 따라 어느정도 진척이 있어서 괜찮게 한 것 같다.

 

'2022 하계 모각소' 카테고리의 다른 글

7/19 활동 후 기록  (0) 2022.07.19
7/19 활동 전 기록  (0) 2022.07.19
7/14 활동 전 기록  (0) 2022.07.14
7/5 활동 후 기록  (0) 2022.07.05
7/5 활동 전 기록  (0) 2022.07.05