Podle stránky Wikipedie pro Pac-Man je nejvyšší možné skóre 3333360 bodů. Říká se jí dokonalá hra a dosáhli ji už 3 různí lidé.
Chci vědět: PROČ je to přesně 3333360 bodů? Musí to být technické omezení, ale toto číslo podle mého názoru nedává smysl.
Vím, že hra má 255 úrovní. 255 je v binárním formátu a úrovni 256 (zdá se, že existuje mysticky) přináší 8bitovou číslici k přetečení, které končí havárií hry.
Ale pouze 3333360 vypadá tak náhodně.
Komentáře
nevím o žádných architekturách, které by přetekly číslo na další adresu paměti, zejména proto, že matematika ‚ t se obvykle děje přímo na datech v paměti. Matematika se obvykle děje na datech uložených v registrech a po dokončení matematiky se data v případě potřeby zapíší zpět do paměti.
Odpověď
Pacman Museum obsahuje článek o získání 3 333 360 Body. A tady „sa video někoho, kdo dělá úroveň 255 a 256 , s důležitými informacemi o úrovni 256.
Úroveň 1 až 255
Pojídání teček : Na úroveň je 240 běžných teček, každá v hodnotě 10 bodů, započtení 2400 bodů na úroveň . Kromě toho vám konzumace čtyř teček energizátoru v hodnotě 50 bodů dává dalších 200 bodů.
⇒ 255 × 2600 = 663000
Jíst „ovoce“ : Na úrovni je jeden jedlý objekt, který se zobrazí pouze pro určitou množství času, dvakrát za úroveň. V závislosti na druhu ovoce, které zase závisí na úrovni, kterou hrajete, získáte různé množství bodů. Celkově získáte
⇒ 2 × (100 + 300 + 2 × 500 + 2 × 700 + 2 × 1000 + 2 × 2000 + 2 × 3000 + 243 × 5000) = 2459600
Jíst duchy : Jíst duchy ve stejném období energizéru vám dá 200 bodů, což je dvojnásobek za každý další duch, kterého sníte (400, 800 a 1600 pro 2. až 4. ducha).Můžete to udělat čtyřikrát na úrovni, ale pouze do úrovně 16 a na úrovni 18 , protože duchové neblikají na úrovni 17 a 19+ ⇒ 4 × 3000 × 17 = 204000
Přidání čísla dávají 3326600 , stačí 6760 body krátké k dokonalosti.
Úroveň 256
Toto liché číslo lze získat na úrovni 256 s odtržením.
Viditelné tečky : Jak vidíte, chybí více než polovina obrazovky, což znamená, že můžete získat pouze 112 normálních a 2 energetické body.
⇒ 1220
Single Fruit : splatné na glitc zabezpečená obrazovka, klíč („ovoce“) můžete získat pouze jednou
⇒ 5000
Glitched Dots : V glitched out oblasti je 9 normálních teček, které se znovu objeví pokaždé, když zemřete. Při 5 životech navíc je můžete získat 6krát
⇒ 6 × 90 = 540
Grand Celkem
(663000 + 1220 + 540 (tečky)) + (2459600 + 5000 (ovoce)) + (204000 (duchové)) = 3333360
Komentáře
- Začal jsem psát odpověď a myslel jsem si, že čísla se sčítají dobře a neudělali to ‚ t. Trvalo dost času zjistit informace o podivnosti, kterou jsou body na úrovni 256.
- 256 je docela důležité číslo.
- @Howdy_McGee Zejména na 8bitovém procesoru …
- Je závada na 256. úrovni – nebo je to něco, co je skutečnou závadou?
- @ RPi_Awesomeness je to ‚ skutečná závada, která souvisí s převrácením čísel v binárním formátu. 256 je 100000000 v binárním formátu, ale číslo nepodporuje ‚ t více než 8 binárních číslic, čímž se odřízne 1, takže je 00000000, což je 0. Pro některé není opravdu související problém , to způsobí závadu, místo aby vás znovu dostalo na úroveň 0.
Odpověď
Skóre je omezené protože na úrovni 256 dojde k závadě, která přepíše polovinu obrazovky odpadky. Tato hra nenechá hráče postoupit z jedné desky na druhou, aniž by snědla 244 bodů a energizérů, ale závada přepíše mnoho bodů; hráč tak nebude schopen sníst 244 bodů a energizérů, a nebude tedy moci opustit úroveň. V případě, že vás zajímá, proč k závadě dochází, je strojový kód v Pac-Manu k vykreslení plodů podobný kódu 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);
Všimněte si, že na rozdíl od mnoha strojů používá Pac Man poměrně zvláštní rozložení paměti obrazovky, které umisťuje po sobě jdoucí bajty vodorovně na horní a dolní část obrazovky a svisle uprostřed. To bylo s největší pravděpodobností provedeno proto, aby při kreslení hlavní části obrazovky byly adresy paměti zvýšeny o sílu dvou každých osmi řádků skenování (všimněte si, že „horní část“ monitoru je na pravé straně obrazovky obrázek). Obvody v zásadě převáděly indexy řádků / sloupců na adresy paměti s podobným mapováním:
//Using column values in the range 30 to 1, wrapping after 63... address = (column & 32) ? (row << 5) | (column & 31) : ((28 | (column & 3)) << 5) | row);
, ale implementovány spíše do obvodů než do kódu. To umožnilo vypočítat adresy obrazovky pomocí dvojice čítačů a obvodů pro výběr jedné ze dvou permutací bitů těchto čítačů. Hardware vyžadovaný pro zvýšení adresy paměti o 36 pro každý řádek namísto 32 by byl komplikovanější srovnání.
Komentáře
- @Kevin: Uvedené skóre je v Pac Manovi maximální možné, protože chyba uvedená výše (v kódu C, který je funkčně podobný kódu Z80 v samotné hře) píše zbytečné haraburdí na velké části obrazovky a přepisuje tečky, které má hráč jíst. Druhá odpověď uvádí, co se viditelně stane, aby se omezilo skóre, ale výše uvedené naznačuje (pro technicky smýšlející čtenáři) proč se to stane (a naznačuje, že omezení na 256 úrovních pravděpodobně nebylo ‚ záměrné, ale místo toho k němu došlo kvůli dohledu).
- Obě odpovědi otázku mimořádně dobře doplňují.
100000000
v binárním formátu) je uloženo v paměti, která byla přidělena pouze na 8 bitů. První je proto zapsán do paměti, která je přiřazena něčemu jinému, což v podstatě poškodí celou hru.