알고리즘에 도움을주기 위해 텍스트 디스플레이를 동적으로 업데이트하십시오

StackOverflow https://stackoverflow.com/questions/932441

문제

첫째, 일부 뒷이야기 :

나는 그 금액이 "로그 같은"게임을 통해 내 머리에 떠 다니는 몇 가지 흥미로운 아이디어를 발휘할 수 있습니다. 게임 플레이는 던전 크롤링이 아니지만 어쨌든 디스플레이는 비슷한 화려하게 이루어질 것입니다. ASCII 문자.

이것은 자기 운동이라는 것이기 때문에 나는 대부분 직접 코딩하려고 노력합니다.

결국 나는 임의로 큰 게임 세계에서 게임을 실행하고 싶습니다. (게임을 네트워크로 만들고 컴퓨터 실에서 많은 모니터를 넘어서는 것을 상상하는 시점까지).

지금, 나는 텍스트 콘솔의 임의의 섹션을 읽고 쓸 수있는 코드와 효율적으로 찾을 수 있도록 간단한 파티션 시스템을 설정할 수있는 코드가 있습니다.


그리고 이제 질문 :

벤치 마크를 실행했으며 가장 큰 병목 현상은 텍스트 콘솔의 재편성입니다.

큰 게임 세계가 있으면 디스플레이의 지능형 업데이트가 필요합니다. 나는 모든 프레임마다 내 게임 버퍼 전체를 다시 푸시하고 싶지 않습니다 ... 게임 섹션 만 업데이트되도록 설정하는 방법에 대한 몇 가지 포인터가 필요합니다. (그리고 내가 지금 가지고있는 개별 캐릭터뿐만 아니라)

Windows.h를 통해 Windows 콘솔을 조작하고 있지만 서버에 연결된 퍼티 클라이언트를 통해 Linux 시스템에서 실행하는 데 관심이 있습니다.

픽셀과 캐릭터 사이에 거의 1 : 1 비율이 있기 때문에 일부 비디오 처리 루틴을 조정하려고 시도했지만 운이 없었습니다.

실제로 나는 그 뒤에있는 몇 가지 원칙에 대한 간단한 설명을 원합니다. 그러나 일부 예 (PSUDO) 코드도 좋을 것입니다.

도움이 되었습니까?

해결책

나는 이것을 이해한다고 주장하지 않을 것이지만, 이것이 제임스 고슬링의 전설적인 문제에 가깝다고 믿는다. Gosling Emacs 코드를 다시 그리기. "Redisplay 알고리즘", 그리고 일반인의 제목을 봅니다. 문자열-스트링 보정 문제.

다른 팁

저주를 사용하거나 직접 수행 해야하는 경우 VTNNN 컨트롤 코드에 대해 읽으십시오. 이 두 가지 모두 Windows 및 *Nix 용어 및 콘솔 (및 Windows)에서 작동해야합니다. 힌트의 Nethack 소스 코드를 참조 할 수도 있습니다. 이렇게하면 변화가 발생할 때마다 화면의 문자를 변경할 수 있습니다.

큰 게임 세계가 있으면 디스플레이의 지능형 업데이트가 필요합니다. 나는 모든 프레임마다 내 게임 버퍼 전체를 다시 푸시하고 싶지 않습니다 ... 게임 섹션 만 업데이트되었을 수 있도록 설정 방법에 대한 포인터가 필요합니다. (그리고 내가 지금 가지고있는 개별 캐릭터뿐만 아니라)

게임 세계의 크기는 실제로 관련이 없습니다. 각 클라이언트의 가시 영역을 해결하고 해당 데이터를 보내는 것입니다. 일반적인 80x25 콘솔 디스플레이가있는 경우 색상 코드 등을 추가하더라도 매번 2 ~ 3 킬로바이트의 데이터를 보내게됩니다. 이것은이 성격의 대부분의 온라인 게임에서 전형적입니다. 세상의 모든 것이 아니라 사람이 볼 수있는 것을 업데이트하십시오.

당신이 보내는 것을 줄이는 방법을 찾으려고 노력하고 싶다면 학습 목적으로 자유롭게 해보십시오. 실시간으로 고정 할 필요가없는 문제를 해결하는 데 시간을 낭비하는 것은 부끄러운 일입니다. 위에서 링크 된 PDF는 O (ND) 솔루션을 제공하는 반면, 단순히 전체 콘솔을 전송하는 것은 O (n)의 절반이며 N은 A와 B 및 D의 길이의 합으로 정의됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top