공부/인프런 - Rookiss

Part 2-1-2. 환경 설정

셩잇님 2023. 8. 4. 10:57
반응형
 

 

 

[환경 설정]

 

[게임의 3 단계]

 

1. 입력

  • 유저의 입력

 

2. 게임 로직

  • 입력에 따른 어떤 실행

 

3. 렌더링

  • 로직에 따라 게임 화면에 그래픽을 그림

 

[Console 함수]


Console.WriteLine

  • 콘솔 창에 문자열 출력하고 자동으로 한 줄 띄워준다. (Line)
  • Console.WriteLine(“문자열"), Console.WriteLine(); 👉 단순 개행. std::endl; 같은

 

 

Console.SetCursorPosition

  • 콘솔 창의 커서 위치를 세팅한다.
  • Console.SetCursorPosition(0, 0); 👉 커서 위치가 콘솔 창의 맨 왼쪽 상단에.

 

 

 

Console.CursorVisible

  • 콘솔 창에서 커서 위치를 보이게 할건지 아닌지.
  • Console.CursorVisible = false 👉 콘솔 창에서 커서 위치가 안보이게 됨. 커서 깜빡 깜빡 하는거 없어짐.

 

 

Console.ForegroundColor

  • 콘솔 창에 있는 텍스트 등등의 컬러를 설정
  • Console.ForegroundColor = ConsoleColor.Green;

 

 

[프레임]

프레임이 N fps 이다 = 1 초에 N 번 실행이 된다. = 렌더링이 1초에 N 번 된다. 즉 프레임이 높을 수록, 즉 렌더링이 여러번 될 수록 화면이 부드러움.

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.CursorVisible = false;

            int lastTick = 0;
            
            while (true)
            {
                #region 프레임 관리
                int currentTick = System.Environment.TickCount;  // 밀리 세컨즈로 나타낸 현재시간.  1초 = 1000 밀리세컨즈
                int elapsedTick = currentTick - lastTick; // 경과 시간

                // 만약 경과한 시간이 1/30초보다 작다면
                if (elapsedTick < 1000 / 30)
                    continue;
                lastTick = currentTick;  // 마지막 측정 시간 업뎃
                #endregion

                // 1.입력

                // 2.로직

                // 3.렌더링
                Console.SetCursorPosition(0, 0);
                Console.ForegroundColor = ConsoleColor.Green;
                for(int i = 0; i < 25; i++)
                {
                    for (int j = 0; j < 25; j++)
                    {
                        Console.Write('\u25cf');  // 동그라미 1개 그림
                    }
                    Console.WriteLine();  // 개행
                }   
            }
        }
    }
}

 

 30 프레임으로 25 X 25 의 초록색 공 그리기.


프레임 관리

  • 1 / 30 초 마다 그리도록 한다. 경과시간이 1 / 30 초가 안됐으면 continue
  • 1000 / 30 밀리 세컨즈 = 1 / 30 세컨즈, 즉 30 프레임마다 그리도록 한다.

 

 

#region ~ #endregion

  • 이렇게 범위를 지정해주면 비주얼 스튜디오 내에서 해당 범위를 접을 수 있게 해준다.

 

 

System.Environment.TickCount;

  • 현재 시간을 밀리 세컨즈로 리턴해준다.
  • 1 초 = 1000 밀리 세컨즈

 

 

 

반응형