2023년 11월 9일 목요일

C# - TextRpg 1

이번 프로그램은 완성 기간이 길어질것 같아서 나눠서 작성하게 됐다..

콘솔창으로 진행되는 RPG 비스무리한 게임을 만들게 되었는데
일단 요구사항은 이렇다.




저번 게임과 동일하게 특수문자로 만든 박스 안에 모든 UI 정보를 출력하게 할 계획이다. 
가로줄은 깔끔하게 딱 맞아 떨어지는 기호가 없어서 불편...


위와 같이 게임 진행에 방해가 되지않게, 또는 코딩하기 편하라고 
Ui와 게임화면을 닌텐도처럼 분리시킨다.





스네이크 게임에서는 Console.clear() 함수로 화면을 초기화 하였지만
이는 화면을 깜빡거리게 만드는 원인이 되므로 다른함수인
Console.SetCursorPosition()를 사용할 예정



랜더링은 버퍼 하나로만 사용하다가
프레임이 떨어지는 상황이 많아지면 더블 버퍼링 할 예정





추가로 프레임도 고정시킨다.

Stopwatch 클래스가 있던 것 같지만 요것도 
나름 쓸만해 보여서 실험을 좀 해보았다.


밀리초 ms기준으로 if문까지 평균 16ms초 나오는데 오차 생각해서
 적당히 29ms으로 했다. (30프레임) 

딱 맞는걸 보면 콘솔 화면은 60프레임 고정일지도
1000/60 = 16.66..




아이템이나 캐릭터 상세 데이터는 구조체로 관리하며 
아이템 같은 경우는 배열로 다룬다.


동적배열로 만들어도 될 것 같았지만 
인벤토리는 제한이 있는게 일반적이므로 냅뒀음



댓글 없음:

댓글 쓰기

c++ thread.h

 c++에서 쓰레드 돌릴려면 thread.h 헤더를 쓰면 되는데 이 친구는 쓰레드가 아직 실행 중인지, 아니면 강제 종료하거나 하는 함수가 없어서 조금 아쉬운 애다. std::thread 는 로컬 변수로 선언하든 new 동적 할당을 하든 start 함...