ΠΊΠΎΠ΄ ΠΈΠ³ΡΡ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅
ΠΠΎΠ΄ ΠΈΠ³ΡΡ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅
Pacman by David Reilly
With contributions by Andy Sommerville (2007)
Thank you for your interest in my tribute to everyone’s favorite Pac-Man games of yesteryear! Pacman features 12 colorful levels of varying sizes, bouncing fruit, A* path-finding ghosts, and, more recently, cross-platform support, joystick support, and a high score list. This was the first large-scale project I ever developed in Python, so the source is not the cleanest, but I would love to have your contributions! Feel free to slice and dice it up however you like and redistribute it; I just ask that you give me some credit and let me know about it, so I can enjoy your creation too! Have fun!
Pac-man requires Python 3.x (tested on 3.8), and the corresponding version of the Pygame library, freely available online. Make sure you install the matching (32- or 64-bit) version of Pygame as your Python installation, and the one compatible with your Python version number. The last I checked, only 32-bit binaries of Pygame for Windows were hosted on the official website, but there was a link to download unofficial 64-bit binaries of Pygame as well.
Running the Maze Editor
To run the maze editor in Windows 7 or 8, perform the following steps depending on your version of Windows:
Copy RICHTX32.OCX and COMDLG32.OCX in the libraries/ folder to your Windows SysWOW64 directory for 64-bit Windows, or System32 if you are running 32-bit Windows. The paths are typically «C:\Windows\SysWOW64» and «C:\Windows\System32» respectively. Second, open command prompt as Administrator (click Start, type «cmd» and right-click > Run as Administrator) and run the following commands, making sure to replace the path with the actual path to SysWOW64 (or System32 for 32-bit) on your machine:
regsvr32 C:\Windows\SysWOW64\RICHTX32.OCX regsvr32 C:\Windows\SysWOW64\COMDLG32.OCX
regsvr32 C:\Windows\System32\RICHTX32.OCX regsvr32 C:\Windows\System32\COMDLG32.OCX
Both commands should say the DLL was registered successfully. After that, run pacman/maze_editor.exe and you should be good to go.
Windows under WINE
Haven’t tested this combination, but please let me know if you have, along with any extra steps you had to take, and I will make the changes to this document.
Since the maze editor was written and built in Visual Basic 6, I do have some suggested steps that I’ve adapted from another app written in VB6, Heirowords. Some of the example commands are for a Ubuntu system, but a similar command should be available under any modern Linux system.
sudo apt-get install wine
Install and run winetricks to download the VB6 runtime libraries for Wine
wget http://kegel.com/wine/winetricks chmod +x winetricks sudo mv winetricks /usr/bin/winetricks winetricks
When winetricks opens, select the package «vb6run» and install it.
Copy COMDLG32.OCX and RICHTX32.OCX from the libraries/ folder to your Wine system32 directory, probably
Please let me know if you have any luck with these steps, or have any suggestions, etc. Good luck and enjoy the maze editor!
Using the Maze Editor
Background and How it Works
Skip to the Quick Start section below if you’re not interested in the technical details! π
The maze editor will expect to find a res/ directory in the path to the maze editor executable; otherwise, it will not work. It should be set up this way by default. In addition to the contents of the res/tiles/ directory, it also looks for res/crossref.txt (for tile descriptions and code values), res/sprite (for fruit graphics), and will default the level open dialog box to the res/levels directory.
Each level is simply a text file with some level properties at the beginning, followed by a # startleveldata tag which introduces the level data itself, and then finally an # endleveldata tag and tag for # sprites (not used).
In the level data section, each line corresponds to one row of tiles on the screen, and each tile consists of the tile’s numeric value as found in crossref.txt, separated from the next tile by a space character. If you’re not sure what a particular tile number corresponds to, you can look it up in crossref.txt.
If you know what a tile looks like, but you’re not sure of its number, you can click on it in the maze editor tile pallette, and some information will appear above, including the tile’s name, description, and tile number. The latter is what gets used in the level description files.
Of course, the simplest way to make a level is just to use the maze editor and make heavy use of the «x-paintwall» special tile, which will paint walls with connections to adjacent walls, so you don’t have to worry about it. The «x-paintwall» tile is shown here:
Set your level size to have an odd number of columns (x-width), and turn on «Symmetric editing mode» to make things really efficient. This technique was used in nearly all levels that come with the game.
Happy editing! Please send me your creations; I may put level packs together for the best ones I see and distribute them with the game.
Ability to re-use same level sets, maze editor, and most of the res/ directory between both versions of pacman.
Consolidating pacman original (16×16) with pacman-large (24×24) into one source file, or set of source files.
Source for the Maze Editor (written in VB6)
About
Faithful Pac-Man adaptation using PyGame including bouncing fruit, ghosts that chase you with the A* algorithm, and support for external mazes of any size with custom color schemes for each maze. Cross-platform, high score, and joystick support.
ΠΠΈΡΠ΅ΠΌ ΠΈΠ³ΡΡ Π½Π° Python
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π½Π° Python, Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΡ ΠΈΠ³ΡΡ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π΅ Π΄Π°ΡΡ ΡΠ°ΡΠΈΠΊΡ ΡΠΏΠ°ΡΡΡ, ΡΠΈΠΏΠ° ΠΡΠΊΠ°Π½ΠΎΠΈΠ΄Π°. ΠΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΠ³ΡΠ°Π»ΠΈ Π² Π΄Π΅ΡΡΡΠ²Π΅ Π²ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠ²ΠΎΠΈΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³ΡΡ
ΠΡΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΡΠ²ΡΡΠ΄ΡΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° ΡΠ°ΡΠΈΠΊ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π½ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠ»ΠΊΠ°, ΠΎΠ½ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠΎΡΠΎΠ½Ρ. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠΏΠ°Π΄ΡΡ Π½Π° ΠΏΠΎΠ» β Π²Ρ ΠΏΡΠΎΠΈΠ³ΡΠ°Π»ΠΈ. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, Π²Π½ΠΈΠ·Ρ Π²Π΄ΠΎΠ»Ρ ΠΏΠΎΠ»Π° Π»Π΅ΡΠ°Π΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π° Π²Ρ Π΅ΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ΅Π»ΠΎΠΊ. ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° β ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΠΎΠ΄ ΡΠ°ΡΠΈΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»ΡΡΠ΅. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ΄Π°ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΈΠΊΠ° Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠΊΠΎ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈΠ³ΡΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ:
Π₯ΠΈΡΡΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΠΊΠ° ΡΠ°ΡΠΈΠΊ Π»Π΅ΡΠ°Π΅Ρ, ΠΌΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Ρ Π½Π° ΠΌΠ΅ΡΡΠ΅. Π ΠΊΠΎΠ³Π΄Π° ΡΠ°ΡΠΈΠΊ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ ΠΎΡ ΡΡΠ΅Π½, ΡΡΠΎ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ.
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° β ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠ°ΠΌ ΡΠ°ΡΠΈΠΊ ΠΈ ΡΡΡΡ, ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ΅Π°Π³ΠΈΡΡΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΠΎΠ»Π΅ Π½Π°ΠΌ ΡΠ°ΠΌΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ β Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π ΠΏΠΎΡΠΎΠΌ Π² ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΠΌΡ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ β ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠΎ ΠΊΠΎΠ½ΡΠΌ, ΠΏΠΈΡΠ΅ΠΌ Π½Π° Python
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ΅Π΄Ρ Python. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΠΈΡΠ°ΠΉΡΠ΅ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π§ΡΠΎΠ±Ρ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊΠ° Π² ΠΈΠ³ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Tkinter. ΠΠ½Π° Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π½Π°Π±ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Python ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ β Π»ΠΈΠ½ΠΈΠΈ, ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, ΠΊΡΡΠ³ΠΈ ΠΈ ΠΊΡΠ°ΡΠΈΡΡ ΠΈΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Paint, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Python.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΠ½ΠΎ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡ Tk(). ΠΠ½ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ, Π½ΠΎ Π±Π΅Π· ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΠΎΠ»ΡΡ β Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°ΡΡΡ ΠΎΠΊΠ½Π°. ΠΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΡΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΠΈΠ³ΡΡ. ΠΠ° Ρ ΠΎΠ»ΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Canvas(), ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Π²Π΅Π΄Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΡΠΈΡΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ½Π΅Ρ Π΅Ρ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΊΡΠ°Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Time β ΠΎΠ½ ΡΠΎΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, ΡΡΠΎ Π½Π°ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ, β Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅ ΠΈΠ³ΡΠ°ΡΡ. ΠΠ° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Random β ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π²ΡΡ ΡΡΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° Π½Π° Python:
ΠΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΡΠΌΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
Π¨Π°ΡΠΈΠΊ
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡ ΡΠ°ΡΠΈΠΊΠ°. ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ:
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ β ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΠΈΡΠ΅ΠΌ Π΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠΌ Π² ΠΊΠΎΠ΄. ΠΡΠ°ΠΊ, Π²ΠΎΡ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΌΠ΅ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°:
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π°:
ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΡΡ ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΠΎ Π·Π΄Π΅ΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ»Π°ΡΡ, Π·Π°Π΄Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠ°ΠΌΠΈ ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΡΡΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°ΡΡ.
ΠΡ ΡΡΡΡΠ° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ (ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°) β ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π» Π½Π° ΠΊΠ°ΡΠ°Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π» ΡΠΈΡΠ»ΠΎ ΠΎΡΠΊΠΎΠ² ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠ» ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½:
Π£ Π½Π°Ρ Π²ΡΡ Π³ΠΎΡΠΎΠ²ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡ ΠΈΠ³ΡΡ. ΠΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ Π½Π°ΠΌ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΡΠΈΠΊΠ°, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΡΡΡΡΠ° ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
Π‘ΠΌΡΡΠ» ΠΈΠ³ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠΎΠ½ΠΈΡΡ ΡΠ°ΡΠΈΠΊ. ΠΠΎΠΊΠ° ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ β Π²ΡΡ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ, Π½ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΈΠΊ ΡΠΏΠ°Π» β Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠ½ΡΠ΅ ΠΈΠ³ΡΡ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΠ΄ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΈΠ³ΡΡ:
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ³ΡΡ:
Code Pac-Man in Python
By Lucy Hattersley. Posted over 2 years ago.
Pac-Man captured the hearts and pocket money of many young people in the eighties. Since then, it has made its way onto just about every computer system and console
The MagPi issue 109 out now
Build incredible things with microcontroller boards in this monthβs edition of The MagPi magazine. Discover how deceptively powerful Pico can be, with projects ranging from game controllers and stream decks to animated signs and robots.
The concept of Pac-Man is quite simple. Pac-Man eats dots in a maze to score points. Avoid the ghosts unless you have just eaten a power-up, in which case ghosts are tasty. In this series we have gradually introduced new elements of Pygame Zero and also concepts around writing games. This is the first instalment in a two-part tutorial which will show you some more tricks to writing arcade games with Pygame Zero. We will also use some more advanced programming concepts to make our games even better. In this first part, we will put together the basics of the Pac-Man game and introduce the concept of adding extra Python modules to our program.
This article was written by Mark Vanstone and first appeared in The MagPi magazine issue #76. Sign up to our newsletter to get a free digital PDF of The MagPi every month, or click here to subscribe to our print magazine.
Code your own Pac-Man in Python
As with the more recent episodes of this series, letβs jump straight in, assuming that we have our basic Pygame Zero setup done. Letβs set our window size to WIDTH = 600 and HEIGHT = 660. This will give us room for a roughly square maze and a header area for some game information. We can get our gameplay area set up straight away by blitting two graphics β βheaderβ and βcolourmapβ β to 0,0 and 0,80 respectively in the draw() function. You can make these graphics yourself or you can use ours, which can be found on this GitHub repository.
Pac-Man is a-mazing
The original game had a very specific layout to the maze, but many different ones have appeared in later versions. The one we will be using is very similar to the original, but you can make your own design if you want. If you make your own, youβll also have to make two more maps (weβll come to those in a bit) which help with the running of the game. The main things about the map is that it has a central area where the ghosts start from and it doesnβt have any other closed-in areas that the ghosts are likely to get trapped in (they can be a bit stupid sometimes).
Hmmm, pizza
Our next challenge is to get a player actor moving around the maze. For some unknown reason, the gameβs creator, Toru Iwatani, decided to make the main character a pizza that ate dots. Well, the eighties were a bit strange and that seemed perfectly reasonable at the time. Weβll need two frames for our character: one with the mouth open and one with it closed. We can create our player actor near the top of the code using player = Actor(«pacman_o»). This will create the actor with the mouth-open graphic. We will then set the actorβs location in an init() function, as in previous programs.
Modulify to simplify
We can get our player onto the play area by setting player.x = 290 and player.y = 570 in the init() function and then call player.draw() in the draw() function, but to move the player character weβll need to get some input from the player. Previously we have used keyboard and mouse input, but this time we are going to have the option of joystick or gamepad input. Pygame Zero doesnβt currently directly support gamepads, but we are going to borrow a bit of the Pygame module to get this working. We are also going to make a separate Python module for our input.
Itβs a joystick.init
Setting up a new module is easy. All we need to do is make a new file, in this case gameinput.py, and in our main program at the top, write import gameinput. In this new file we can import the Pygame functions we need with from pygame import joystick, key and from pygame.locals import *. We can then initialise the Pygame joystick object (this also includes gamepads) by typing joystick.init(). We can find out how many joysticks or gamepads are connected by using joystickcount = joystick.getcount(). If we find any joysticks connected, we need to initialise them individually β see figure1.py.
Checking the input
Up, down, left, or right
The variable p that we are passing into our checkInput() function will be the player actor. We can test each of the directions of the joystick at the same time as the keyboard and then set the player angle (so that it points in the correct direction for movement) and also how much it needs to move. Weβll set these by saying (for example, if the left arrow is pressed or the joystick is moved to the left) if key.getpressed()[KLEFT] or xaxis
Lucy is Editor of The MagPi, the official Raspberry Pi magazine.
ΠΠ°ΠΊ Ρ ΠΏΠΈΡΠ°Π» Pacman’a, ΠΈ ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. Π§Π°ΡΡΡ 1
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, ΡΠ²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ Ρ
Π°Π±ΡΠ°Π»ΡΠ΄ΠΈ!
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΡΠ΅Π², Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Ρ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΊΠ»ΠΎΠ½Π° Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΠΉ ΠΈΠ³ΡΡ Pacman Π΄Π»Ρ ΠΠ‘ Android. ΠΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ, ΠΈ ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ»ΠΎ Ρ Ρ
ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠΎΡΠ΅ΠΌΡ Pacman?
ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ ΠΌΠ΅Π»ΡΠΊΠ½ΡΠ» Π² ΠΌΡΡΠ»ΡΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΈΠ· ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π²Π΅ΡΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ZeptoLab. ΠΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΡΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ½ΡΡΠ½Ρ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅: Android NDK, C++, OpenGL.
Pacman: Π½Π°ΡΠ°Π»ΠΎ
ΠΡΠ°ΠΊ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΡΠΎ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠ±ΡΠ°Π½Ρ. Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅? ΠΠΏΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ Android NDK Π½Π΅Ρ, ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ OpenGL ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΎΡΠΈΠ΅ΠΉ ΠΈ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΠΌΠΈ ΠΈΠ· ΠΊΡΡΡΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ 2011 Π³ΠΎΠ΄Π°. ΠΠΏΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Π‘++ Π΅ΡΡΡ, Π½ΠΎ Π½Π΅ Π² Π³Π΅ΠΉΠΌΠ΄Π΅Π²Π΅. Π§ΡΠΎ ΠΆ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π», ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Android NDK (ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½Π° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠ°ΠΊ ΠΈΠ½ΠΎΡΡΡΠ°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΈ ΡΡΠ½Π΅ΡΠ°) ΠΈ Π·Π°ΠΏΡΡΡΠΈΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· Π΅Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ: Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ GL2JNI, Π²ΠΎ-Π²ΡΠΎΡΡΡ SanAngeles. ΠΠ΅ΡΠ²ΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ OpenGL ES 2.0, Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ 3D-ΡΠΎΠ»ΠΈΠΊ, ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΈΠ· ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ OpenGL ES. ΠΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΆΡΡΠΊΠΎΠ²Π°ΡΠΎ. ΠΠ° ΠΈ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠΆΠ΅. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π» ΡΠ°ΠΉΠ» gl_code.cpp ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ° GL2JNI.
ΠΠΎΡΠ΅ΠΌΡ OpenGL ES 2.0?
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠΉ 2D-ΠΈΠ³ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° OpenGL ES, Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Π½Π΅ Π½Π°Π΄ΠΎ, Π·Π°ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΡΠΎ? ΠΡΠ²Π΅Ρ: Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ. Π Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ ΠΏΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΏΠΎΡΡΠΏΠ°ΡΡ ΡΠ΅ΠΉΠ΄Π΅ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ, ΡΠ°ΠΊ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ Π½Π°Π²Π΅ΡΡΡΠ°ΡΡ ΡΠΏΡΡΠ΅Π½Π½ΠΎΠ΅?
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ OpenGL ES 2.0 Π½Π°ΡΠ°Π» ΠΎΡΡΡΠ΄Π°, Ρ Ρ Π°Π±ΡΠ°Ρ Π°Π±ΡΠ°, Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΠ°ΡΡΠΈ All about OpenGL ES 2.x β (part 1/3). Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΉΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠ³Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π°Π²ΡΠΎΡ ΡΠ±ΡΠ°Π» Π΅Π³ΠΎ Π² ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊΠΈ. ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎΠ± OpenGL ES 2.x ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ iOS, Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²Π΅ΡΠ½ΠΎ ΠΈ Π΄Π»Ρ Android. ΠΠΎΡΠΈΡΠ°Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΈ ΠΏΠΎΠ½ΡΠ², ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΎ, Ρ ΡΡΡΡΠ΅ΠΌΠΈΠ»ΡΡ Π½Π° Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ β ΡΠ°ΡΡΡ 2 ΠΈ 3 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»), Π³Π΄Π΅ ΠΈ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΠ» Π²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ OpenGL ES 2.0, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ.
ΠΠ°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠΊΡΠΈΠ½ΡΠΎΡΠ°
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΠΊΡΡΡΡ
ΠΠ°ΡΡΠ°
Π‘ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π΄ΡΠΌΠ°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΠΎΠ²Π½Π΅ΠΉ. Π‘Ρ
ΠΎΠ΄Ρ Π½Π° ΡΠΌ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Β«Π·Π°Ρ
Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΡΡΒ» ΠΈ Β«ΡΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°Β». ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΠΎΠ³Π΄Π° Π½ΠΈ ΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π»Π΅Π³ΠΊΠΎΠΉ ΠΏΡΠ°Π²ΠΊΠ΅ ΠΊΠ°ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π½Π΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ. Π Π³ΠΎΠ»ΠΎΠ²Ρ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ ΠΌΡΡΠ»ΠΈ ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΡΡΠΎΠ²Π½Π΅ΠΉ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ Π²ΠΈΠ΄Π΅Π» Π²ΠΊΡΡΠ½ΡΡ ΡΡΠ°ΡΡΡβ¦ ΠΠ΅Ρ! Π’Π°ΠΊ Π·Π° Π΄Π΅ΡΠ΅Π²ΡΡΠΌΠΈ Π»Π΅ΡΠ° Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π±ΡΠ΄Π΅Ρ. ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Ρ ΡΠ΅Π±Π΅, ΡΡΠΎ ΡΠ΅Π»Ρ β ΡΠ°Π±ΠΎΡΠΈΠΉ Pacman ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅.
ΠΠΎ Π²Π΅Π΄Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Ρ Π½Π°ΡΡΠΈΠ»ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ png! ΠΠΈΠΊΡΠ΅Π»Π°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ ΠΊΠ»Π΅ΡΠΊΠΈ ΡΡΠ΅Π½, Π΅Π΄Ρ, ΠΏΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Pacman’Π° ΠΈ Ρ.Π΄. Π Paint Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΡΡΠΎΠ²Π½Π΅ΠΉ. Π Π°Π·ΠΌΠ΅Ρ ΠΊΠ°ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ 32Ρ
32.
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΎΠΏΡΠ°Π²Π΄Π°Π» ΡΠ΅Π±Ρ Π½Π° 100%. Π― ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
ΠΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΉ
Π ΠΈΠ³ΡΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ Pacman’a ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΌΠΎΠ½ΡΡΡΡ-ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΏΠΎ Π»Π°Π±ΠΈΡΠΈΠ½ΡΡ, ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΡΠΎ ΡΡΠ΅Π½Π°ΠΌΠΈ, Π΅ΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ². ΠΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ² (StateMachine). ΠΠ»Ρ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π±ΡΠ»Π° Π²ΡΡΡΡΠΎΠ΅Π½Π° ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ:
StupidMonster ΠΈ CleverMonster ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ newDirectionEvent() : StupidMonster Ρ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π»Π°Π±ΠΈΡΠΈΠ½ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Pacman βa. CleverMonster Π³ΠΎΠ½ΠΈΡΡΡ Π·Π° Pacman βΠΎΠΌ ΠΏΠΎ ΡΠ°ΠΌΠΎΠΌΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΌΠ°ΡΡΡΡΡΡ. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ-Π½Π°ΡΡΠ½ΠΎΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡΒ»
ΠΠΎΠΈΡΠΊ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ.
ΠΡΠΎΠ³ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ
Π’Π°ΠΊΠΈΠΌ Π±ΡΠ» ΠΈΡΠΎΠ³ ΠΏΠΎΡΡΠΈ ΡΡΠ΅Ρ
Π½Π΅Π΄Π΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΎΠ½ΡΡΡΡ Π±Π΅Π³Π°ΡΡ Π·Π° Pacman’ΠΎΠΌ, Pacman Π΅ΡΡ Π΅Π΄Ρ ΠΈ ΡΠΌΠ΅Π΅Ρ ΡΠΌΠΈΡΠ°ΡΡ ΡΡΠΈ ΡΠ°Π·Π°. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ³ΡΡ Π½Π° ΠΏΠ°ΡΠ·Ρ, ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠ±Π΅Π΄Π΅, ΠΈΠ»ΠΈ Π²Π΅ΡΠ½ΡΡΡΡΡ Π² ΠΌΠ΅Π½Ρ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ. Pacman’ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½, ΠΌΠΎΠ½ΡΡΡΡ β Π½Π΅Ρ. ΠΠ± Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Pacman’Π° Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ.
Π ΡΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π² ZeptoLab, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ΠΊΠ°ΠΆΡ ΡΠ΅ΡΡΠ½ΠΎ β Π½ΠΈ Π΄ΠΎ, Π½ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Ρ ΡΠ°ΠΊ Π½Π΅ Π²ΠΎΠ»Π½ΠΎΠ²Π°Π»ΡΡ ΠΈ Π½Π΅ ΡΡΠΏΠΈΠ» Π½Π° ΡΠ°ΠΌΡΡ
ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ
Π²ΠΎΠΏΡΠΎΡΠ°Ρ
. ΠΠΎ ΠΌΠΎΠΈΠΌ ΠΎΡΡΡΠ΅Π½ΠΈΡΠΌ, ΡΡΠΎ Π±ΡΠ» epic fail. ΠΠ½Π΅ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌ ΠΈ Π‘++, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ Π΅ΡΠ΅ ΡΠ°Π· Π² ΡΠ΅Π²ΡΠ°Π»Π΅. ΠΠ± ΠΈΠ³ΡΠ΅ Π±ΡΠ» ΠΎΡΠ·ΡΠ² HR: Β«ΠΠ΄Π½Π° ΠΈΠ· Π»ΡΡΡΠΈΡ
ΠΏΡΠΈΡΠ»Π°Π½Π½ΡΡ
ΡΠ°Π±ΠΎΡΒ». Π, ΠΊΡΡΠ°ΡΠΈ, Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΎΠ΅ΠΊΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ Π½Π° github. Π Π² Google Play Market Π‘ΡΡΠ»ΠΊΠ° ΡΠ±ΡΠ°Π½Π°, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΏΡΠΎΡΠΈΠ»ΡΠ½ΡΡ
Ρ
Π°Π±Π°Ρ
.
pacman-game 1.0.3.dev1
pip install pacman-game Copy PIP instructions
Released: Jan 1, 2016
A Pacman Like Game with new and interesting new features.
Navigation
Project links
Statistics
View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery
License: BSD
Tags pacman, console, ai, game
Maintainers
Classifiers
Project description
version number: 1.0.3.dev1 author: Parth Kolekar
Overview
A Pacman Like Game with new and interesting new features.
Installation / Usage
To install use pip:
Project details
Project links
Statistics
View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery
License: BSD
Tags pacman, console, ai, game
Maintainers
Classifiers
Download files
Download the file for your platform. If you’re not sure which to choose, learn more about installing packages.