我想做一个游戏,我有敌人从屏幕的两边来。 现在我有了它,这样敌人就可以一次滚动一个屏幕。 我希望有更多的一次来慢慢增加他们遇到的频率。 这是我的密码
import pygame, sys, time, random
from pygame.locals import *
pygame.init()
winW = 1000
winH = 600
surface = pygame.display.set_mode ((winW, winH),0,32)
pygame.display.set_caption ('Moving Orc')
class Enemy:
def __init__(self, char, startY, startX):
self.char=char
self.startY=startY
self.startX=startX
self.drawChar()
def drawChar (self):
self.space = pygame.image.load (self.char)
self.spaceRect = self.space.get_rect ()
self.spaceRect.topleft = (self.startX,self.startY)
self.moveChar()
def moveChar (self):
if self.startX == 0:
self.xMoveAmt = 5
elif self.startX == 800:
self.xMoveAmt = -5
while True:
surface.fill ((255,255,255))
self.spaceRect.left += self.xMoveAmt
surface.blit (self.space, self.spaceRect)
pygame.display.update()
time.sleep (0.02)
if self.spaceRect.right >= winW:
surface.fill ((255,255,255))
break
elif self.spaceRect.left <= 0:
surface.fill ((255,255,255))
break
#MAINLINE
while True:
enemyList=[]
leftOrRight = random.randint(0,1)
if leftOrRight == 0:
leftOrRight = 0
elif leftOrRight == 1:
leftOrRight = 800
enemyList.append(Enemy(("orc.png"), random.randint(50, 500), leftOrRight))
for i in range (0,len(enemyList)):
enemyList[i].drawChar()
break
我有它,这样每次你进入循环,它都会重置列表,它在我创建的类中运行。一个人会从左边或右边穿过屏幕。在
我从哪里开始呢?在
为了有多个敌人,你应该修正一些事情。在
一个简单的pygame程序结构是怎样的
我看你已经为敌人写了一个移动和移动功能,但是他们没有做他们应该做的。在
draw方法加载图像,并调用move函数。加载通常应在
__init__()
中完成。在你的move函数绘制和移动字符,但是它有一个While循环,这使得它一直保持到该字符离开屏幕。在
示例解决方案:
^{pr2}$杀死一个对象的一种可能的方法是设置一个标志,在While方法中,检查它是否可以从对象列表中删除。在
现在你可以创建一个敌人的列表,调用draw,并为每个敌人更新。在for循环中。在
去掉
drawChar
函数;让敌方类知道只存在于游戏逻辑中的surface
是一种不好的做法。更改moveChar
函数,使其只更新对象的位置。从moveChar
中取出循环,并处理主游戏循环中的移动。在敌人阶级:
游戏循环:
^{pr2}$相关问题 更多 >
编程相关推荐