ผลต่างระหว่างรุ่นของ "Prg2/pacman (applying design patterns)"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 2: | แถว 2: | ||
== Overview == | == Overview == | ||
− | In this assignment, you and your friend will apply design patterns to the provided Pacman code. This version of the Pacman game is a 2-player game, where each player tries to score as many points as possible. | + | In this assignment, you and your friend will apply design patterns to the provided Pacman code. This version of the Pacman game is a 2-player game, where each player tries to score as many points as possible. The first Pacman is controlled by WASD keys, while the other Pacman is controlled by IJKL keys. |
[[Image:Prg2-pacman-2players.png]] | [[Image:Prg2-pacman-2players.png]] | ||
+ | |||
+ | === Understanding the current code === | ||
+ | |||
+ | There are three main classes: | ||
+ | |||
+ | * PacmanGame | ||
+ | * Pacman | ||
+ | * Maze | ||
+ | |||
+ | '''PacmanGame''' is the main class. It creates a Maze and 2 Pacman's. It feeds two Pacman's with user inputs. The following is its <tt>on_key_pressed</tt> method, which looks pretty ugly. | ||
+ | |||
+ | <syntaxhighlight lang="python"> | ||
+ | def on_key_pressed(self, event): | ||
+ | if event.char.upper() == 'A': | ||
+ | self.pacman1.set_next_direction(DIR_LEFT) | ||
+ | elif event.char.upper() == 'W': | ||
+ | self.pacman1.set_next_direction(DIR_UP) | ||
+ | elif event.char.upper() == 'S': | ||
+ | self.pacman1.set_next_direction(DIR_DOWN) | ||
+ | elif event.char.upper() == 'D': | ||
+ | self.pacman1.set_next_direction(DIR_RIGHT) | ||
+ | |||
+ | if event.char.upper() == 'J': | ||
+ | self.pacman2.set_next_direction(DIR_LEFT) | ||
+ | elif event.char.upper() == 'I': | ||
+ | self.pacman2.set_next_direction(DIR_UP) | ||
+ | elif event.char.upper() == 'K': | ||
+ | self.pacman2.set_next_direction(DIR_DOWN) | ||
+ | elif event.char.upper() == 'L': | ||
+ | self.pacman2.set_next_direction(DIR_RIGHT) | ||
+ | </syntaxhighlight> | ||
== Dev 1: Observer pattern == | == Dev 1: Observer pattern == |
รุ่นแก้ไขเมื่อ 16:24, 17 มีนาคม 2564
- This is part of Programming 2 2563
เนื้อหา
Overview
In this assignment, you and your friend will apply design patterns to the provided Pacman code. This version of the Pacman game is a 2-player game, where each player tries to score as many points as possible. The first Pacman is controlled by WASD keys, while the other Pacman is controlled by IJKL keys.
Understanding the current code
There are three main classes:
- PacmanGame
- Pacman
- Maze
PacmanGame is the main class. It creates a Maze and 2 Pacman's. It feeds two Pacman's with user inputs. The following is its on_key_pressed method, which looks pretty ugly.
def on_key_pressed(self, event):
if event.char.upper() == 'A':
self.pacman1.set_next_direction(DIR_LEFT)
elif event.char.upper() == 'W':
self.pacman1.set_next_direction(DIR_UP)
elif event.char.upper() == 'S':
self.pacman1.set_next_direction(DIR_DOWN)
elif event.char.upper() == 'D':
self.pacman1.set_next_direction(DIR_RIGHT)
if event.char.upper() == 'J':
self.pacman2.set_next_direction(DIR_LEFT)
elif event.char.upper() == 'I':
self.pacman2.set_next_direction(DIR_UP)
elif event.char.upper() == 'K':
self.pacman2.set_next_direction(DIR_DOWN)
elif event.char.upper() == 'L':
self.pacman2.set_next_direction(DIR_RIGHT)