Selon la page Wikipédia de Pac-Man , le score le plus élevé possible est de 3333360 points. Cela sappelle un jeu parfait et il a déjà été réalisé par 3 personnes différentes.
Ce que je veux savoir, cest: POURQUOI est-ce exactement 3333360 points? Ce doit être une limitation technique, mais ce nombre na aucun sens à mon avis.
Je sais que le jeu a 255 niveaux. 255 est 11111111
en binaire et niveau 256 (qui semble exister mystiquement) amène le chiffre 8 bits à un débordement, qui se termine par un crash du jeu.
Mais, 3333360 juste semble tellement aléatoire.
Commentaires
Réponse
Le Pacman Museum contient un article sur lobtention de 3 333 360 Points. Et voici « sa vidéo dun gars faisant le niveau 255 et 256 , avec des informations importantes concernant le niveau 256.
Niveau 1 à 255
Manger des points : il y a 240 points réguliers par niveau, dune valeur de 10 points chacun, rapportant 2400 points par niveau . De plus, manger les quatre points énergisants, dune valeur de 50 points chacun, vous donne 200 points supplémentaires.
⇒ 255 × 2600 = 663000
Manger des « fruits » : Il y a un objet comestible par niveau qui napparaît que pour un certain temps, deux fois par niveau. Selon le type de fruit, qui dépend à son tour du niveau auquel vous jouez, vous obtenez un nombre de points différent. Au total, vous obtenez
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Eating Ghosts : Manger un fantôme pendant la même période énergisante vous donne 200 points, et le double pour chaque fantôme supplémentaire que vous mangez (400, 800 et 1600 pour le 2ème au 4ème fantôme, respectivement).Vous pouvez le faire 4 fois par niveau, mais uniquement jusquau niveau 16, et au niveau 18, puisque les fantômes ne clignotent pas aux niveaux 17 et 19+ ⇒ 4 × 3000 × 17 = 204000
Ajout de ces éléments les nombres donnent 3326600 , juste 6760 points de moins que parfait.
Niveau 256
Ce nombre impair peut être obtenu dans le niveau glitched-out 256.
Points visibles : comme vous pouvez le voir, il manque un peu plus de la moitié de lécran, ce qui signifie que vous ne pouvez obtenir que 112 points normaux et 2 points énergisants.
⇒ 1220
Fruit unique : Échéance à la glitc hed, vous ne pouvez obtenir la clé (le « fruit ») quune seule fois
⇒ 5000
Glitched Dots : Il y a 9 points normaux dans la région glitched qui réapparaissent à chaque fois que vous mourez. À 5 vies supplémentaires, vous pouvez les obtenir 6 fois
⇒ 6 × 90 = 540
Grand Total
(663000 + 1220 + 540 (points)) + (2459600 + 5000 (fruit)) + (204000 (fantômes)) = 3333360
Commentaires
- Jai commencé à taper la réponse, pensant que les nombres sadditionneraient très bien et ils ne lont pas fait ‘ t. Il a fallu un certain temps pour découvrir létrangeté des points du niveau 256.
- 256 est un nombre assez important.
- @Howdy_McGee Surtout sur un processeur 8 bits …
- Le problème de niveau 256 est-il intentionnel – ou est-ce quelque chose qui est un problème réel?
- @ RPi_Awesomeness it ‘ est un problème réel, qui a à voir avec les nombres qui se déplacent en binaire. 256 est 100000000 en binaire, mais le nombre ‘ t prend en charge plus de 8 chiffres binaires, coupant ainsi le 1, ce qui en fait 00000000, qui est 0. Pour certains problèmes pas vraiment liés , cela provoque le problème, plutôt que de vous remettre au niveau 0.
Réponse
Le score est limité car un problème survient au niveau 256 qui écrase la moitié de lécran avec des ordures. Le jeu ne permettra pas à un joueur davancer dun plateau à lautre sans manger 244 points et stimulants, mais le problème écrase de nombreux points; cela laissera le joueur incapable de manger 244 points et énergisants, et donc incapable de quitter le Si vous vous demandez pourquoi le problème se produit, le code machine de Pac-Man pour dessiner les fruits est similaire au code 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);
Notez que contrairement à de nombreuses machines, Pac Man utilise une disposition de mémoire décran assez curieuse qui place des octets consécutifs horizontalement en haut et en bas de lécran, et verticalement au milieu. Cela a probablement été fait pour faire en sorte que lors du dessin de la partie principale de lécran, les adresses mémoire soient incrémentées dune puissance de deux toutes les huit lignes de balayage (notez que le «haut» du moniteur se trouve sur le côté droit du image). Essentiellement, les circuits convertissaient les index de ligne / colonne en adresses mémoire avec un mappage similaire à:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
mais implémenté dans des circuits plutôt que dans du code. Cela a permis de calculer les adresses décran en utilisant une paire de compteurs et un circuit pour sélectionner lune des deux permutations de ces bits de compteurs « . Le matériel requis pour augmenter ladresse mémoire de 36 pour chaque ligne au lieu de 32 aurait été plus compliqué par comparaison.
Commentaires
- @Kevin: Le score indiqué est le maximum possible dans Pac Man car le bug ci-dessus (en code C qui est fonctionnellement similaire au code Z80 dans le jeu lui-même) écrit des fichiers inutiles sur une grande partie de lécran, écrasant les points que le joueur est censé manger. Lautre réponse indique ce qui se passe visiblement pour limiter le score, mais ce qui précède indique (pour les lecteurs) pourquoi cela se produit (et suggère que la limitation à 256 niveaux n’était probablement pas ‘ délibérée mais se produit plutôt en raison d’un oubli).
- Les deux réponses complètent très bien la question.
100000000
en binaire) est stocké dans une mémoire qui na été allouée que pour contenir 8 bits. Le premier est donc écrit en mémoire qui est affectée à autre chose, ce qui corrompt essentiellement tout le jeu.