Pac-Man 용 Wikipedia 페이지 에 따르면 가능한 최고 점수는 3333360입니다. 포인트들. “완벽한 게임”이라고하며 이미 3 명의 다른 사람이 이룬 게임입니다.
내가 알고 싶은 것은 : 왜 정확히 3333360 점입니까? 기술적 인 제한이있는 것 같지만 제 생각에는이 숫자가 의미가 없습니다.
게임에 255 개의 레벨이 있음을 알고 있습니다. 255는 11111111
바이너리 및 레벨 256 (신비하게도 존재하는 것 같음)에서 8 비트 숫자가 오버플로되어 게임 충돌로 끝납니다.
하지만 3333360은 너무 무작위로 보입니다.
댓글
답변
팩맨 박물관 에는 3,333,360 개를 얻는 것에 대한 기사가 있습니다. 포인트들. 그리고 여기에 “레벨 255와 256을하는 사람의 동영상 이 있으며, 레벨 256에 관한 중요한 정보가 있습니다.
레벨 1에서 255까지
h2>
먹는 점 : 레벨 당 240 개의 일반 도트가 있으며 각 10 포인트의 가치가 있으며 레벨 당 2400 포인트를 상계합니다. . 또한 각각 50 포인트의 가치가있는 네 개의 에너자이저 점을 먹으면 200 포인트가 추가로 제공됩니다.
⇒ 255 × 2600 = 663000
“과일”먹기 : 특정 사람에게만 나타나는 식용 개체가 수준 당 하나씩 있습니다. 레벨 당 두 번의 시간입니다. 플레이하는 레벨에 따라 달라지는 과일의 종류에 따라 점수가 달라집니다. 총점은
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
유령을 먹으면 : 같은 에너자이저 기간에 유령을 먹으면 200 점을 얻습니다. 추가로 먹는 모든 유령 (2 번째부터 4 번째 유령에 대해 각각 400, 800 및 1600).레벨 당 4 번 수행 할 수 있지만 레벨 16까지만 가능하며 레벨 18에서는 레벨 17 및 19+에서는 유령이 깜박이지 않기 때문에 ⇒ 4 × 3000 × 17 = 204000
추가 숫자는 3326600 , 단지 6760 포인트는 완벽하지 않습니다.
레벨 256
이 홀수는 글리치 아웃 레벨 256에서 얻을 수 있습니다.
Visible Dots : 보시다시피 화면의 절반 이상이 누락되어 일반 도트 112 개와 에너자이저 도트 2 개만 얻을 수 있습니다.
⇒ 1220
단일 과일 : 마감 글릿에 화면에서 키 ( “과일”)는 한 번만 얻을 수 있습니다.
⇒ 5000
글리치 드 도트 : 글리치 아웃 된 영역에는 죽을 때마다 다시 나타나는 9 개의 일반 도트가 있습니다. 5 개의 추가 생명에서 6 번 얻을 수 있습니다.
⇒ 6 × 90 = 540
그랜드 합계
(663000 + 1220 + 540 (점)) + (2459600 + 5000 (과일)) + (204000 (고스트)) = 3333360
댓글
- 나는 숫자가 합산 될 것이라고 생각하고 답을 입력하기 시작했습니다. ' t. 레벨 256의 포인트 인 이상한 점을 알아내는 데 꽤 많은 시간이 걸렸습니다.
- 256은 상당히 중요한 숫자입니다.
- @Howdy_McGee 특히 8 비트 프로세서에서 …
- 256 번째 레벨 글리치는 의도적으로 발생합니까? 아니면 실제 글리치입니까?
- @ RPi_Awesomeness는 ' 실제 결함이며 이진수로 롤오버되는 숫자와 관련이 있습니다. 256은 이진수로 100000000이지만 숫자는 ' 8 개 이상의 이진수를 지원하지 않으므로 1을 잘라 00000000, 즉 0이됩니다. 실제로 관련되지 않은 문제의 경우 , 이로 인해 다시 레벨 0에 들어 가지 않고 결함이 발생합니다.
답변
점수가 제한되어 있습니다. 화면의 절반을 쓰레기로 덮어 쓰는 레벨 256에서 글리치가 발생하기 때문입니다. 이 게임은 플레이어가 244 개의 점과 에너자이저를 먹지 않고 한 보드에서 다음 보드로 진행하도록 허용하지 않지만 결함이 많은 점을 덮어 씁니다. 이로 인해 플레이어는 244 개의 점과 에너자이저를 먹지 못해 떠날 수 없게됩니다. 글리치가 발생하는 이유가 궁금하다면 과일을 그리는 Pac-Man의 기계어 코드는 C 코드와 비슷합니다.
unsigned char temp1, temp2; unsigned char *ptr; temp1 = level; if (temp1 > 15) temp1 = 15; temp2 = temp1; if (temp2 > 7) temp2 = 7; ptr = LOWER_RIGHT_ADDRESS; do { *ptr++ = shapes[temp1--]; } while(--temp);
많은 컴퓨터와 달리 Pac Man은 연속 바이트를 화면 상단과 하단에 수평으로 배치하고 중간에 수직으로 배치하는 다소 흥미로운 화면 메모리 레이아웃을 사용합니다. 이것은 화면의 주요 부분을 그릴 때 메모리 주소가 8 개의 스캔 라인마다 2의 거듭 제곱만큼 증가하도록하기위한 것입니다 (모니터의 “상단”은 화면의 오른쪽에 있습니다. 그림). 기본적으로 회로는 행 / 열 인덱스를 다음과 유사한 매핑을 사용하여 메모리 주소로 변환했지만 코드가 아닌 회로에서 구현되었습니다.
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
이로 인해 한 쌍의 카운터와 회로를 사용하여 해당 카운터의 두 순열 중 하나를 선택하여 화면 주소를 계산할 수있었습니다 “비트. 각 행에 대해 메모리 주소가 32 개가 아닌 36 씩 증가하는 데 필요한 하드웨어는 다음과 같이 더 복잡해졌습니다. 비교.
코멘트
- @Kevin : 명시된 점수는 위에 표시된 버그 (기능적으로 C 코드에서 게임 자체의 Z80 코드와 유사) 화면의 많은 부분에 쓸모없는 쓰레기를 작성하여 플레이어가 먹어야 할 점을 덮어 씁니다. 다른 답변은 점수를 제한하는 데 눈에 띄게 발생하는 일을 나타내지 만 위의 내용은 기술적으로 독자) 왜 이런 일이 발생하는지 (그리고 256 레벨 제한이 의도적이지 않았으나 감독으로 인해 발생했을 가능성이 있음을 암시합니다. ')
- 두 답변 모두 질문을 매우 잘 보완합니다.
100000000
)이 8 비트 만 포함하도록 할당 된 메모리에 저장된다는 것입니다. 첫 번째 는 다른 것에 할당 된 메모리에 기록되어 본질적으로 전체 게임을 손상시킵니다.