만약 반복문으로 각각의 데이터에 랜덤값을 넣고싶은 경우.
반복문
{
랜덤 변수
랜덤 초기화
출력
}
위 처럼 반복문을 사용하여 랜덤 변수를 매번 초기화 해도 기능은 실행되나 랜덤 변수가 반복문 안에서 매번 생성되어 데이터 낭비가 생긴다
랜덤 변수
반복문
{
랜덤 초기화
출력
리스트.Clear
}
이 처럼 하면 데이터 낭비를 줄일 수 있다.
LinkdList는 데이터 요소들이 노드로 연결된 데이터 구조이다(그래프랑 비슷한건가?)
일반 리스트에서는 배열처럼 중간에서의 삽입 또는 삭제가 발생하면 해당 위치 이후의 모든 요소를 이동시켜야 하는 낭비가 있는데 리스트에 비해 링크리스트는 노드의 링크, 즉 다음 노드와의 연결 선만 바꾸면 되기 때문에 중간 삽입 및 삭제가 효율적이다.
아직 나에게는 데이터 관리가 그리 중요한 문제는 아니지만 이러한 방향으로 사고 할 수 있게끔 여러 알고리즘을 접해야 할 것 같다.
Text Game 만들기 전투 구현
18조는 전투 구현 부문을 나누는 건 불가하다고 판단하여 특정 기간 내까지 필수 구현 부분중 전투 구현을 GitHub에 Brunch로 각각 관리하여 제출하기로 하였다.
public void Battle(Player player)
{
Console.Clear();
MonsterRend = new List<Monster>();
RandomMobster(MonsterRend); //몬스터 설정
do
{
BattleStatus(player);
Console.WriteLine("0. 취소");
Console.WriteLine();
Console.WriteLine("대상을 선택해주세요.");
Console.WriteLine();
}
while (Isrun);
{
switch (Console.ReadLine())
{
case "0":
player.Attack(MonsterRend[0]); //여기까지 함
break;
case "1":
break;
case "2":
break;
case "3":
break;
default:
ConsoleManager.RedColor("잘 못된 입력입니다 $");
break;
}
}
}
public void BattleStatus(Player player)
{
ConsoleManager.YellowColor("Battle!!");
Console.WriteLine();
Console.WriteLine();
for (int i = 0; i < MonsterRend.Count; i++)
{
Console.Write(i + 1.ToString() + ". [ Lv.");
ConsoleManager.RedColor(MonsterRend[i].GetLv().ToString());
Console.WriteLine(" " + MonsterRend[i].GetName() + " HP " + MonsterRend[i].hp.ToString() + " ]");
}
Console.WriteLine();
Console.WriteLine("[내 정보]");
Console.Write("3. Lv.");
ConsoleManager.RedColor(player.getLevel().ToString());
Console.WriteLine(" Char ({0})", player.getJob());
Console.Write("HP ");
Console.WriteLine("{0}/{1}", player.hp, player.maxhp);
}
void RandomMobster(List<Monster> MonsterRend)
{
//생성되는 몬스터 수
Random rend = new Random();
int MonsterNum = rend.Next(2, 5);
//랜덤 몬스터 생성
for (int i = 0; i < MonsterNum; i++)
{
Random r = new Random();
MonsterRend.Add(monsters[r.Next(0, 3)]);
}
}
}
[오늘 한 일]
배틀 시스템
[해야 할 일]
[시간 남으면]
Console.Clear 관리
Console.Color 관리