如何在pygame中获取图像来追逐我的角色?

2024-09-29 00:16:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个简单的游戏是你移动一个基本图像和一堆僵尸图像产卵和追逐你。其他的答案似乎没有帮助。有人能给我一些简单易懂的东西来帮助我理解吗

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

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()

Tags: key图像imageimporteventiftypedisplay
2条回答

你应该开始思考游戏,然后再去做一个代码,你所拥有的对我来说并不好,任何模块化的游戏只会导致你的工作更难。。。 尝试为僵尸创建一个类,并使用make和update()函数执行您希望它们执行的行为(在本例中,搜索主要角色),它们应该具有图像、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)内的i: zombiLst.append(僵尸(100100僵尸.png“))

然后在你的循环中:

^{pr2}$

像这样的事情就可以了。在

好吧,让我们把它分解一下:

a bunch of zombie images spawn

我们需要一个僵尸坐标的列表,这样我们就知道在哪里画僵尸了。在

zombies = []

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

^{pr2}$

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

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以及如何在{a2}的上下文中使用它们。在

单独追踪僵尸、玩家、子弹和其他所有东西都会很痛苦,而且一旦你的游戏变得足够复杂,只追踪精灵就容易多了。在

相关问题 更多 >