De acordo com a página da Wikipedia para Pac-Man , a pontuação mais alta possível é 3333360 pontos. É chamado de jogo perfeito e já foi alcançado por 3 pessoas diferentes.
O que eu quero saber é: POR QUE são exatamente 3333360 pontos? Deve ser uma limitação técnica, mas esse número não faz sentido na minha opinião.
Sei que o jogo tem 255 níveis. 255 é 11111111
em binário e nível 256 (que parece existir misticamente) traz o dígito de 8 bits a um estouro, que termina em uma falha do jogo.
Mas, 3333360 apenas parece tão aleatório.
Comentários
Resposta
O Pacman Museum tem um artigo sobre como conseguir 3.333.360 Pontos. E aqui “sa vídeo de um cara fazendo o nível 255 e 256 , com informações importantes sobre o nível 256.
Nível 1 a 255
Comendo pontos : Existem 240 pontos regulares por nível, valendo 10 pontos cada, obtendo 2.400 pontos por nível . Além disso, comer os quatro pontos do energizador, que valem 50 pontos cada, dá a você outros 200 pontos.
⇒ 255 × 2600 = 663000
Comer “frutas” : há um objeto comestível por nível que só aparece por um certo quantidade de tempo, duas vezes por nível. Dependendo do tipo de fruta, que por sua vez depende do nível que você está jogando, você ganha uma quantidade diferente de pontos. No total, você ganha
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Comendo fantasmas : comer um fantasma no mesmo período de energização dá a você 200 pontos, e o dobro para cada fantasma adicional que você comer (400, 800 e 1600 do segundo ao quarto fantasma, respectivamente)Você pode fazer isso 4 vezes por nível, mas apenas até o nível 16 e no nível 18, já que os fantasmas não piscam nos níveis 17 e 19+ ⇒ 4 × 3000 × 17 = 204000
Adicionando estes números rendem 3326600 , apenas 6760 pontos aquém da perfeição.
Nível 256
Este número ímpar pode ser obtido no nível de falha 256.
Pontos visíveis : como você pode ver, falta um pouco mais da metade da tela, o que significa que você só pode obter 112 pontos normais e 2 pontos energizadores.
⇒ 1220
Fruta única : Prazo para o glitc tela hed, você só pode obter a chave (a “fruta”) uma vez
⇒ 5000
Pontos com falha : Existem 9 pontos normais na região com falha que reaparecem sempre que você morre. Com 5 vidas extras, você pode obtê-los 6 vezes
⇒ 6 × 90 = 540
Grande Total
(663000 + 1220 + 540 (pontos)) + (2459600 + 5000 (frutas)) + (204000 (fantasmas)) = 3333360
Comentários
- Comecei a digitar a resposta, pensando que os números iriam somar bem e não deram ‘ t. Demorou um pouco para descobrir a estranheza que são os pontos no nível 256.
- 256 é um número bastante importante.
- @Howdy_McGee Especialmente em um processador de 8 bits …
- A falha de nível 256 é propositalmente – ou é algo que é uma falha real?
- @ RPi_Awesomeness é ‘ uma falha real, que tem a ver com números rolando em binário. 256 é 100000000 em binário, mas o número não ‘ suporta mais de 8 dígitos binários, cortando assim o 1, tornando-o 00000000, que é 0. Para algum problema não realmente relacionado , isso causa a falha, em vez de colocá-lo no nível 0 novamente.
Resposta
A pontuação é limitada porque ocorre uma falha no nível 256 que substitui metade da tela com lixo. O jogo não permitirá que um jogador avance de um tabuleiro para o próximo sem comer 244 pontos e energizadores, mas a falha sobrescreve muitos dos pontos; isso deixará o jogador incapaz de comer 244 pontos e energizadores e, portanto, incapaz de deixar o nível. Caso você “esteja se perguntando por que a falha ocorre, o código de máquina no Pac-Man para desenhar as frutas é semelhante ao código 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);
Observe que, ao contrário de muitas máquinas, o Pac Man usa um layout de memória de tela bastante curioso que coloca bytes consecutivos horizontalmente na parte superior e inferior da tela e verticalmente no meio. Isso provavelmente foi feito para que, ao desenhar a parte principal da tela, os endereços de memória fossem incrementados em uma potência de dois a cada oito linhas de varredura (observe que a “parte superior” do monitor está no lado direito do foto). Essencialmente, os circuitos convertiam índices de linha / coluna em endereços de memória com um mapeamento semelhante a:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
mas implementado em circuitos em vez de código. Isso permitiu que os endereços de tela fossem calculados usando um par de contadores e um circuito para selecionar uma das duas permutações desses bits de contadores. O hardware necessário para aumentar o endereço de memória em 36 para cada linha em vez de 32 teria sido mais complicado por comparação.
Comentários
- @Kevin: A pontuação declarada é a máxima possível no Pac Man porque o bug mostrado acima (no código C que é funcional semelhante ao código Z80 no próprio jogo) escreve lixo inútil em grande parte da tela, sobrescrevendo os pontos que o jogador deve comer. A outra resposta afirma o que acontece visivelmente para limitar a pontuação, mas o acima indica (para os que pensam tecnicamente leitores) por que isso acontece (e sugere que a limitação de 256 níveis provavelmente não foi ‘ t deliberada, mas ocorreu devido a um descuido).
- Ambas as respostas complementam a pergunta muito bem.
100000000
em binário) está sendo armazenado na memória que foi alocada para conter apenas 8 bits. O primeiro é, portanto, gravado na memória atribuída a outra coisa, o que essencialmente corrompe todo o jogo.