활동 내용:
<아이작의 번제> 와 같은 게임의 맵 생성 방식을 탐구하고 나름대로 기초적인 바탕을 작성함.
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 |