我想创建一个简单的游戏,你移动基本图像和一堆僵尸图像产生并追逐你。这个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()
答案 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()
这样的事情应该做。