ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Код ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Pacman by David Reilly

With contributions by Andy Sommerville (2007)

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. screenshot 1. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-screenshot 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° screenshot 1. 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

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. screenshot maze editor 1. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-screenshot maze editor 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° screenshot maze editor 1. With contributions by Andy Sommerville (2007) ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. screenshot maze editor 2. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-screenshot maze editor 2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° screenshot maze editor 2. With contributions by Andy Sommerville (2007)

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:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. screenshot maze editor x paintwall. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-screenshot maze editor x paintwall. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° screenshot maze editor x paintwall. With contributions by Andy Sommerville (2007)

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:

ΠœΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, сдСлали ΠΈ настроили ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ займёмся классами.

Π¨Π°Ρ€ΠΈΠΊ

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ словами, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ ΡˆΠ°Ρ€ΠΈΠΊΠ°. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ:

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ β€” сначала опишСм Π΅Ρ‘ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ словами, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘ΠΌ Π² ΠΊΠΎΠ΄. Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ это Π±ΡƒΠ΄Π΅Ρ‚ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π°:

МоТно Π±Ρ‹Π»ΠΎ Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ счёт Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Но здСсь Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ класс, Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ сами ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Ρ‚ΡŒ.

ΠžΡ‚ счёта Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ (ΠΊΡ€ΠΎΠΌΠ΅ конструктора) β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π» Π½Π° касаниС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π» число ΠΎΡ‡ΠΊΠΎΠ² ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ» ΠΈΡ… Π½Π° экран:

Π£ нас всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ саму ΠΈΠ³Ρ€Ρƒ. ΠœΡ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ всСх элСмСнтов, ΠΈ Π½Π°ΠΌ остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡˆΠ°Ρ€ΠΈΠΊΠ°, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ счёта ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Бмысл ΠΈΠ³Ρ€Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡ€ΠΎΠ½ΠΈΡ‚ΡŒ ΡˆΠ°Ρ€ΠΈΠΊ. Пока этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ β€” всё двиТСтся, Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠ°Ρ€ΠΈΠΊ ΡƒΠΏΠ°Π» β€” Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ сообщСниС ΠΎ ΠΊΠΎΠ½Ρ†Π΅ ΠΈΠ³Ρ€Ρ‹ ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ выглядит ΠΊΠΎΠ΄ нСпосрСдствСнно самой ΠΈΠ³Ρ€Ρ‹:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. 0. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-0. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 0. With contributions by Andy Sommerville (2007)

Π§Ρ‚ΠΎ дальшС

На основС этого ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свою ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ³Ρ€Ρ‹:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Code Pac-Man in Python

By Lucy Hattersley. Posted over 2 years ago.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. pacman1. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-pacman1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° pacman1. With contributions by Andy Sommerville (2007)

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

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. 001 MagPi109 COVER. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-001 MagPi109 COVER. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 001 MagPi109 COVER. With contributions by Andy Sommerville (2007)

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.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. apple app store 01f99066cee4ad3e87a3b4aff63e571ec96f86907e2945e50bc2705ea4f12333. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-apple app store 01f99066cee4ad3e87a3b4aff63e571ec96f86907e2945e50bc2705ea4f12333. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° apple app store 01f99066cee4ad3e87a3b4aff63e571ec96f86907e2945e50bc2705ea4f12333. With contributions by Andy Sommerville (2007)

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. google play store a0bc1b3038a34936be22269b5d3044697551826287decc9b5b9665928006823a. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-google play store a0bc1b3038a34936be22269b5d3044697551826287decc9b5b9665928006823a. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° google play store a0bc1b3038a34936be22269b5d3044697551826287decc9b5b9665928006823a. With contributions by Andy Sommerville (2007)

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.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Gamescreen1. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-Gamescreen1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Gamescreen1. With contributions by Andy Sommerville (2007)

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.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. allmaps. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-allmaps. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° allmaps. With contributions by Andy Sommerville (2007)

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.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Gamepad. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-Gamepad. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Gamepad. With contributions by Andy Sommerville (2007)

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

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. 92FF7C1D A6CE 46E2 8096 2EF653BE70EB 1. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-92FF7C1D A6CE 46E2 8096 2EF653BE70EB 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 92FF7C1D A6CE 46E2 8096 2EF653BE70EB 1. With contributions by Andy Sommerville (2007)

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%. Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ практичСски бСсплатно.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. image loader. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. With contributions by Andy Sommerville (2007)

Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… пСрсонаТСй

Π’ ΠΈΠ³Ρ€Π΅ ΠΏΠΎΠΌΠΈΠΌΠΎ Pacman’a ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ монстры-ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Ρƒ, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ со стСнами, Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ². Π˜Ρ… Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² (StateMachine). Для ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π»Π° выстроСна иСрархия:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. image loader. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. With contributions by Andy Sommerville (2007)

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

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. blue cube.e6165d35. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-blue cube.e6165d35. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° blue cube.e6165d35. With contributions by Andy Sommerville (2007)

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. white cube.8c3a6fe9. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-white cube.8c3a6fe9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° white cube.8c3a6fe9. With contributions by Andy Sommerville (2007)

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. white cube.8c3a6fe9. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-white cube.8c3a6fe9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° white cube.8c3a6fe9. With contributions by Andy Sommerville (2007)

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. white cube.8c3a6fe9. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅-white cube.8c3a6fe9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ ΠΏΠ°ΠΊΠΌΠ°Π½ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° white cube.8c3a6fe9. With contributions by Andy Sommerville (2007)

Download files

Download the file for your platform. If you’re not sure which to choose, learn more about installing packages.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *