Ifølge Wikipedia-siden for Pac-Man er den højest mulige score 3333360 point. Det kaldes et perfekt spil, og det blev allerede opnået af 3 forskellige personer.
Hvad jeg vil vide er: HVORFOR er det nøjagtigt 3333360 point? Det må være en teknisk begrænsning, men dette tal giver efter min mening ingen mening.
Jeg ved, at spillet har 255 niveauer. 255 er 11111111
i binær og niveau 256 (der synes at eksistere mystisk) bringer 8-bit cifret til et overløb, som ender i et sammenbrud af spillet.
Men, 3333360 bare virker så tilfældig.
Kommentarer
Svar
Pacman Museum har en artikel om at få 3.333.360 Point. Og her “sa video af en fyr, der gør niveau 255 og 256 med vigtige oplysninger om niveau 256.
Niveau 1 til 255
Spise prikker : Der er 240 regelmæssige prikker pr. niveau, værd 10 point hver, Netting 2400 point pr. niveau Derudover giver dig yderligere 200 point at spise de fire energizer-prikker til en værdi af 50 point hver.
⇒ 255 × 2600 = 663000
Spise “frugt” : Der er et spiseligt objekt pr. Niveau, der kun vises for et bestemt tid, to gange pr. niveau. Afhængigt af hvilken frugt, der igen afhænger af det niveau, du spiller, får du et andet antal point. I alt får du
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Spise spøgelser : At spise et spøgelse i samme energizer periode giver dig 200 point, og dobbelt så for hvert ekstra spøgelse, du spiser (400, 800 og 1600 for henholdsvis 2. til 4. spøgelse).Du kan gøre dette 4 gange pr. Niveau, men kun op til niveau 16, og på niveau 18 da spøgelserne ikke blinker i niveau 17 og 19+ ⇒ 4 × 3000 × 17 = 204000
Tilføjelse af disse tal giver 3326600 , bare 6760 point under perfekt.
Niveau 256
Dette ulige antal kan opnås i det glitched-out niveau 256.
Synlige prikker : Som du kan se, mangler lidt mere end halvdelen af skærmen, hvilket betyder, at du kun kan få 112 normale og 2 energizer-prikker.
⇒ 1220
Enkelt frugt : Due til glitc hed-skærm, du kan kun få nøglen (“frugten”) én gang
⇒ 5000
Glitched Dots : Der er 9 normale prikker i det glitched out-område, der vises igen hver gang du dør. Ved 5 ekstra liv kan du få dem 6 gange
⇒ 6 × 90 = 540
Grand I alt
(663000 + 1220 + 540 (prikker)) + (2459600 + 5000 (frugt)) + (204000 (spøgelser)) = 3333360
Kommentarer
- Jeg begyndte at skrive svaret og tænkte, at tallene ville tilføje sig fint, og de gjorde ikke ‘ t. Tog lang tid at finde ud af det underlige, der er punkterne i niveau 256.
- 256 er et ganske vigtigt tal.
- @Howdy_McGee Især på en 8-bit processor …
- Er 256. niveau fejl med vilje – eller er det noget, der er en faktisk fejl?
- @ RPi_Awesomeness det ‘ er en faktisk fejl, der har at gøre med tal, der vælter i binær. 256 er 100000000 i binær, men tallet understøtter ikke ‘ t understøtter mere end 8 binære cifre, hvilket skærer af 1, hvilket gør det til 00000000, hvilket er 0. For nogle ikke rigtig relaterede problemer , dette medfører fejl, snarere end at sætte dig i niveau 0 igen.
Svar
Scoren er begrænset fordi der opstår en fejl på niveau 256, som overskriver halvdelen af skærmen med skrald. Spillet lod ikke en spiller komme videre fra et bord til det næste uden at spise 244 prikker og energizer, men fejlen overskriver mange af prikkerne; dette vil efterlade spilleren ude af stand til at spise 244 prikker og energizers, og dermed ikke i stand til at forlade Hvis du undrer dig over, hvorfor fejlen opstår, ligner maskinkoden i Pac-Man for at tegne frugterne C-koden:
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);
Bemærk, at i modsætning til mange maskiner bruger Pac Man et ret nysgerrig skærmhukommelseslayout, der placerer på hinanden følgende byte vandret øverst og nederst på skærmen og lodret i midten. Dette blev højst sandsynligt gjort for at gøre det således, at når man tegner hoveddelen af skærmen, hukommelsesadresser vil blive forøget med en effekt på to hver otte scanningslinjer (bemærk, at “toppen” af skærmen er i højre side af billede). I det væsentlige konverterede kredsløb række / kolonneindeks til hukommelsesadresser med en kortlægning svarende til:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
men implementeret i kredsløb snarere end kode. Dette tillod, at skærmadresser blev beregnet ved hjælp af et par tællere og et kredsløb til at vælge en af to permutationer af disse tællerbits. Hardwaren, der kræves for at have hukommelsesadresse, øges med 36 for hver række i stedet for 32 ville have været mere kompliceret af sammenligning.
Kommentarer
- @Kevin: Den angivne score er den maksimale mulige i Pac Man, fordi fejlen vist ovenfor (i C-kode, som er funktionelt svarende til Z80-koden i selve spillet) skriver ubrugelig skrammel over meget af skærmen og overskriver de prikker, som spilleren skal spise. Det andet svar angiver, hvad der synligt sker for at begrænse scoren, men ovenstående angiver (for teknisk sindede læsere) hvorfor det sker (og antyder, at 256-niveau-begrænsningen sandsynligvis ikke var ‘ t bevidst, men i stedet opstår på grund af et tilsyn).
- Begge svar supplerer spørgsmålet meget godt.
100000000
i binær) lagres i hukommelsen, der kun er allokeret til at indeholde 8 bit. Den første er derfor skrevet i hukommelsen, der er tildelt noget andet, hvilket i det væsentlige ødelægger hele spillet.