美文网首页
小游戏设计之Pacman

小游戏设计之Pacman

作者: 小麦哥 | 来源:发表于2020-01-25 09:02 被阅读0次

首先布置场景。
初始化 640 * 640 的窗口,黑色背景,布满 100 个豆子。
在 [310, 310] 位置画一个 pacman 。
主程序框架如下:

import pygame
from bean import Bean
from pacman import Pacman
from patrolmonster import PatrolMonster
from trackingmonster import TrackingMonster

pygame.init()

screen = pygame.display.set_mode([640, 640]) 
clock = pygame.time.Clock()
pygame.key.set_repeat(10,10)

# 100颗豆子
beans = []
for x in range(10):
    for y in range(10):
        bean = Bean(x*64+20, y*64+20) 
        beans.append(bean)

# 怪物列表
monsters = []
# monsters.append(PatrolMonster(300, 0))     # 添加一个巡逻怪
# monsters.append(TrackingMonster(100, 100)) # 添加一个追踪怪

# 吃豆人角色
pacman = Pacman(310, 310)

def update():
    screen.fill([0,0,0])
    for bean in beans:
        bean.draw(screen)
    for monster in monsters:
        monster.update()
        monster.draw(screen)
    pacman.update()
    pacman.draw(screen)
    pygame.display.flip()

def keydown(e):
    pass

running = True
while running:
    update()
    clock.tick(30)  
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            running = False
        if e.type == pygame.KEYDOWN:
            keydown(e)

pygame.quit()

任务一:让 pacman 动起来
实现键盘控制 pacman 的上下左右移动,每次移动 5 个像素,碰到边界后停止移动;
每 5 帧切换一次 pacman 的造型,实现 pacman 不断张嘴闭嘴的效果。

任务二:吃掉豆子得分
初始分数为 0。 pacman 每碰到一颗豆子,加 1 分,同时将豆子从列表中移除。
将分数显示在 [280, 40] 的位置,字体大小为 100。

任务三:增加一个巡逻怪
patrolmonster.py 中的 PatrolMonster 类代表巡逻怪。
创建一个巡逻怪的角色,初始位置为 [300, 0],添加到怪物列表里。
请完善巡逻怪的逻辑,让怪物从初始位置向下移动,到达底部之后向上移动,到顶部之后又向下移动,如此往复。
巡逻怪每帧移动 2 个像素。每 10 帧切换一次造型。

任务四:game over
pacman 碰到怪物后,不再显示pacman,也不能控制pacman移动,同时在屏幕中央显示“Game Over”的文本。
将 Game Over 显示在 [120, 280] 的位置上。

任务五:增加一个追踪怪
trackingmonster.py 中的 TrackingMonster 类代表追踪怪。
创建一个追踪怪的角色,初始位置为 [10, 10],添加到怪物列表里。
请完善追踪怪的逻辑,让怪物先从 X 方向靠近 pacman,当 X 方向的距离小于 20 像素之后再从 Y 方向靠近 pacman
提示:可以用函数 abs(x1 - x2) 求出 x1 和 x2 之间的距离。
追踪怪每帧移动 2 个像素。它也是每 10 帧切换一次造型。

任务六:新的巡逻怪和跟踪怪
再增加一个巡逻怪,让这个怪物在 X 方向保持来回的水平运动;
再增加一个跟踪怪,让这个怪物优先从 Y 方向靠近 pacman。

任务七:改进 pacman 的显示效果
让 pacman 只在移动时才张嘴,同时保持 pacman 的嘴始终朝着移动方向。
提示:pygame.transform.rotate() 函数能够旋转图片。例如 pygame.transform.rotate(img1, 90) 表示将 img1 逆时针旋转 90 度。

任务八:超能力豆子
实现一个特殊的豆子,吃掉之后 pacman 具有超能力,可以消灭怪物。
超能力持续 5 秒钟结束。

相关文章

网友评论

      本文标题:小游戏设计之Pacman

      本文链接:https://www.haomeiwen.com/subject/eycrthtx.html