如何让图像在pygame中追逐我的角色?

时间:2014-01-04 20:40:57

标签: python pygame

我想创建一个简单的游戏,你移动基本图像和一堆僵尸图像产生并追逐你。这个dident的其他答案似乎有所帮助。有人可以给我一些容易理解的东西,这将有助于我实现这个目标

这是我的代码。虽然缩进是关闭的,但我永远无法正确复制:

import pygame,sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((894, 894))
pygame.display.set_caption('Zombie Survival')
grumpy = pygame.image.load('grumpy.jpg')
grumpy_x = 800
grumpy_y = 100
grumpy = pygame.transform.scale(grumpy, (50, 50))
background  = pygame.image.load('grass.jpg').convert()
while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
            if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RIGHT:
                            grumpy_x = grumpy_x + 20
            if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_LEFT:
                            grumpy_x = grumpy_x - 20
            if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_UP:
                            grumpy_y = grumpy_y - 20
            if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_DOWN:
                            grumpy_y = grumpy_y + 20
    screen.blit(background, (0, 0))
    screen.blit(grumpy, (grumpy_x, grumpy_y))
    pygame.display.update()

2 个答案:

答案 0 :(得分:1)

好的,让我们分解一下:

  

一堆僵尸图像产生

我们需要一个僵尸坐标列表,所以我们知道在哪里绘制僵尸。

zombies = []

然后我们让僵尸在随机的某个地方有一个初始位置。

for _ in range(10):
    new_zombie = (random.randrange(SCREENX), random.randrange(SCREENY))
    zombies.append(new_zombie)

我们也希望能够画出僵尸。

for zombie in zombies:
    screen.blit(zombieimg, zombie)

现在让我们看看另一部分,更新僵尸阵地。

为了移动我们的僵尸,我们希望将它们向玩家的方向移动一些。

ZOMBIE_SPEED = 3

def update(zombie):
    x, y = zombie
    if grumpy_x > x:
        x += ZOMBIE_SPEED
    else:
        x -= ZOMBIE_SPEED
    if grumpy_y > y:
        y += ZOMBIE_SPEED
    else:
        y -= ZOMBIE_SPEED
    return x, y

zombies = [update(zombie) for zombie in zombies]

换句话说,在每个时间步,我们都希望将每个僵尸向玩家移动一定数量。


警告:这可能是最简单的方法,因为它会掩盖您稍后会面临的一些复杂性。您应该了解objects and classes以及如何在pygame sprites的上下文中使用它们,然后才会感到不知所措。

跟踪僵尸,玩家和子弹以及其他所有内容都会让人感到痛苦,而且一旦游戏变得足够复杂,就更容易跟踪精灵。

答案 1 :(得分:0)

你应该在绕过代码之前开始思考游戏吧,你所拥有的东西对我来说并不好看,游戏的任何模块化都会让你的工作变得更难...... 尝试为僵尸创建一个类,并使用你希望它们做的行为来创建和更新()函数(在这种情况下寻找主角),它们应该有一个图像和x和y位置以及你的玩家;转换x和y坐标,使得zoombie更接近玩家的当前位置。

class Zombie:
    def __init__(self, initX, initY, image = "default.png"):
        self.x = initX
        self.y = initY
        self.image = pygame.image.load(image)

    def update(self, playerX, playerY):
         ##stuff to get to player and update the zombie position

生成僵尸:     zombiLst = []     我在范围内(10):         zombiLst.append(Zombie(100,100,“zombie.png”))

然后在你的循环中:

while True:
    ##your stuff here
    ##update the zombies
    for i in zombiLst.length():
        zombiLst[i].update()

这样的事情应该做。

相关问题