Python Pygame编码敌人重生
我想知道如何在我的游戏中添加敌人重生,当敌人死亡时,它基本上是隐形的,你仍然可以射击它。我尝试了不同类型的代码,并在不同的文章中寻找答案,但什么也找不到。还需要帮助寻找一种结束游戏的方法,可能是在计时器上。谢谢你的帮助,我真的很感激Python Pygame编码敌人重生,python,pygame,Python,Pygame,我想知道如何在我的游戏中添加敌人重生,当敌人死亡时,它基本上是隐形的,你仍然可以射击它。我尝试了不同类型的代码,并在不同的文章中寻找答案,但什么也找不到。还需要帮助寻找一种结束游戏的方法,可能是在计时器上。谢谢你的帮助,我真的很感激 import pygame pygame.init() win = pygame.display.set_mode((500, 480)) pygame.display.set_caption("First Game") walk
import pygame
pygame.init()
win = pygame.display.set_mode((500, 480))
pygame.display.set_caption("First Game")
walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'),
pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png'),
pygame.image.load('R7.png'), pygame.image.load('R8.png'), pygame.image.load('R9.png')]
walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'),
pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png'),
pygame.image.load('L7.png'), pygame.image.load('L8.png'), pygame.image.load('L9.png')]
bg = pygame.image.load('bg.jpg')
char = pygame.image.load('standing.png')
clock = pygame.time.Clock()
bulletSound = pygame.mixer.Sound('bullet.wav')
hitSound = pygame.mixer.Sound('hit.wav')
music = pygame.mixer.music.load('music.mp3')
pygame.mixer.music.play(-1)
score = 0
def enemy(param, param1, param2, param3, param4):
pass
goblins = [enemy(100, 410, 64, 64, 450)]
class player(object):
def __init__(self, x, y, width, height):
self.x = x
self.y = y
self.width = width
self.height = height
self.vel = 5
self.isJump = False
self.left = False
self.right = False
self.walkCount = 0
self.jumpCount = 10
self.standing = True
self.hitbox = (self.x + 17, self.y + 11, 29, 52)
def draw(self, win):
if self.walkCount + 1 >= 27:
self.walkCount = 0
if not (self.standing):
if self.left:
win.blit(walkLeft[self.walkCount // 3], (self.x, self.y))
self.walkCount += 1
elif self.right:
win.blit(walkRight[self.walkCount // 3], (self.x, self.y))
self.walkCount += 1
else:
if self.right:
win.blit(walkRight[0], (self.x, self.y))
else:
win.blit(walkLeft[0], (self.x, self.y))
self.hitbox = (self.x + 17, self.y + 11, 29, 52)
# pygame.draw.rect(win, (255,0,0), self.hitbox,2)
def hit(self):
self.isJump = False
self.jumpCount = 10
self.x = 100
self.y = 410
self.walkCount = 0
font1 = pygame.font.SysFont('comicsans', 100)
text = font1.render('-5', 1, (255, 0, 0))
win.blit(text, (250 - (text.get_width() / 2), 200))
pygame.display.update()
i = 0
while i < 200:
pygame.time.delay(10)
i += 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
i = 201
pygame.quit()
class projectile(object):
def __init__(self, x, y, radius, color, facing):
self.x = x
self.y = y
self.radius = radius
self.color = color
self.facing = facing
self.vel = 8 * facing
def draw(self, win):
pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)
class enemy(object):
walkRight = [pygame.image.load('R1E.png'), pygame.image.load('R2E.png'), pygame.image.load('R3E.png'),
pygame.image.load('R4E.png'), pygame.image.load('R5E.png'), pygame.image.load('R6E.png'),
pygame.image.load('R7E.png'), pygame.image.load('R8E.png'), pygame.image.load('R9E.png'),
pygame.image.load('R10E.png'), pygame.image.load('R11E.png')]
walkLeft = [pygame.image.load('L1E.png'), pygame.image.load('L2E.png'), pygame.image.load('L3E.png'),
pygame.image.load('L4E.png'), pygame.image.load('L5E.png'), pygame.image.load('L6E.png'),
pygame.image.load('L7E.png'), pygame.image.load('L8E.png'), pygame.image.load('L9E.png'),
pygame.image.load('L10E.png'), pygame.image.load('L11E.png')]
def __init__(self, x, y, width, height, end):
self.x = x
self.y = y
self.width = width
self.height = height
self.end = end
self.path = [self.x, self.end]
self.walkCount = 0
self.vel = 3
self.hitbox = (self.x + 17, self.y + 2, 31, 57)
self.health = 10
self.visible = True
def draw(self, win):
self.move()
if self.visible:
if self.walkCount + 1 >= 33:
self.walkCount = 0
if self.vel > 0:
win.blit(self.walkRight[self.walkCount // 3], (self.x, self.y))
self.walkCount += 1
else:
win.blit(self.walkLeft[self.walkCount // 3], (self.x, self.y))
self.walkCount += 1
pygame.draw.rect(win, (255, 0, 0), (self.hitbox[0], self.hitbox[1] - 20, 50, 10))
pygame.draw.rect(win, (0, 128, 0), (self.hitbox[0], self.hitbox[1] - 20, 50 - (5 * (10 - self.health)), 10))
self.hitbox = (self.x + 17, self.y + 2, 31, 57)
# pygame.draw.rect(win, (255,0,0), self.hitbox,2)
def move(self):
if self.vel > 0:
if self.x + self.vel < self.path[1]:
self.x += self.vel
else:
self.vel = self.vel * -1
self.walkCount = 0
else:
if self.x - self.vel > self.path[0]:
self.x += self.vel
else:
self.vel = self.vel * -1
self.walkCount = 0
def hit(self):
if self.health > 0:
self.health -= 1
else:
self.visible = False
print('hit')
def redrawGameWindow():
win.blit(bg, (0, 0))
text = font.render('Score: ' + str(score), 1, (0, 0, 0))
win.blit(text, (350, 10))
man.draw(win)
goblins.draw(win)
for bullet in bullets:
bullet.draw(win)
pygame.display.update()
# mainloop
font = pygame.font.SysFont('comicsans', 30, True)
man = player(200, 410, 64, 64)
goblins = enemy(100, 410, 64, 64, 450)
shootLoop = 0
bullets = []
run = True
while run:
clock.tick(27)
if goblins.visible == True:
if man.hitbox[1] < goblins.hitbox[1] + goblins.hitbox[3] and man.hitbox[1] + man.hitbox[3] > goblins.hitbox[1]:
if man.hitbox[0] + man.hitbox[2] > goblins.hitbox[0] and man.hitbox[0] < goblins.hitbox[0] + goblins.hitbox[2]:
man.hit()
score -= 5
if shootLoop > 0:
shootLoop += 1
if shootLoop > 3:
shootLoop = 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if goblins:
for bullet in bullets:
if bullet.y - bullet.radius < goblins[0].hitbox[1] + goblins[0].hitbox[3] and bullet.y + bullet.radius > \
goblins[0].hitbox[
1]:
if bullet.x + bullet.radius > goblins[0].hitbox[0] and bullet.x - bullet.radius < goblins[0].hitbox[0] + \
goblins[0].hitbox[2]:
hitSound.play()
goblins[0].hit()
score += 1
bullets.pop(bullets.index(bullet))
if bullet.x < 500 and bullet.x > 0:
bullet.x += bullet.vel
else:
bullets.pop(bullets.index(bullet))
keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE] and shootLoop == 0:
bulletSound.play()
if man.left:
facing = -1
else:
facing = 1
if len(bullets) < 5:
bullets.append(
projectile(round(man.x + man.width // 2), round(man.y + man.height // 2), 6, (0, 0, 0), facing))
if enemy.health < 0:
goblins.remove(0)
shootLoop = 1
if keys[pygame.K_LEFT] and man.x > man.vel:
man.x -= man.vel
man.left = True
man.right = False
man.standing = False
elif keys[pygame.K_RIGHT] and man.x < 500 - man.width - man.vel:
man.x += man.vel
man.right = True
man.left = False
man.standing = False
else:
man.standing = True
man.walkCount = 0
if not (man.isJump):
if keys[pygame.K_UP]:
man.isJump = True
man.right = False
man.left = False
man.walkCount = 0
else:
if man.jumpCount >= -10:
neg = 1
if man.jumpCount < 0:
neg = -1
man.y -= (man.jumpCount ** 2) * 0.5 * neg
man.jumpCount -= 1
else:
man.isJump = False
man.jumpCount = 10
if not goblins:
goblins.append(enemy(100, 410, 64, 64, 450))
redrawGameWindow()
pygame.quit()
导入pygame
pygame.init()
win=pygame.display.set_模式((500480))
pygame.display.set_标题(“第一场游戏”)
walkRight=[pygame.image.load('R1.png')、pygame.image.load('R2.png')、pygame.image.load('R3.png'),
pygame.image.load('R4.png')、pygame.image.load('R5.png')、pygame.image.load('R6.png'),
pygame.image.load('R7.png')、pygame.image.load('R8.png')、pygame.image.load('R9.png')]
walkLeft=[pygame.image.load('L1.png')、pygame.image.load('L2.png')、pygame.image.load('L3.png'),
pygame.image.load('L4.png')、pygame.image.load('L5.png')、pygame.image.load('L6.png'),
pygame.image.load('L7.png')、pygame.image.load('L8.png')、pygame.image.load('L9.png')]
bg=pygame.image.load('bg.jpg')
char=pygame.image.load('standing.png')
clock=pygame.time.clock()
bulletSound=pygame.mixer.Sound('bullet.wav')
hitSound=pygame.mixer.Sound('hit.wav'))
music=pygame.mixer.music.load('music.mp3')
pygame.mixer.music.play(-1)
分数=0
def敌人(参数、参数1、参数2、参数3、参数4):
通过
地精=[敌人(1004106464450)]
类播放器(对象):
定义初始值(自、x、y、宽度、高度):
self.x=x
self.y=y
self.width=宽度
自我高度=高度
self.vel=5
self.isJump=False
self.left=False
self.right=False
self.walkCount=0
self.jumpCount=10
自立
self.hitbox=(self.x+17,self.y+11,29,52)
def抽签(自我,赢):
如果self.walkCount+1>=27:
self.walkCount=0
如果不是(自立):
如果self.left:
blit(walkLeft[self.walkCount//3],(self.x,self.y))
self.walkCount+=1
elif self.right:
blit(walkRight[self.walkCount//3],(self.x,self.y))
self.walkCount+=1
其他:
如果你是对的:
win.blit(walkRight[0],(self.x,self.y))
其他:
win.blit(walkleet[0],(self.x,self.y))
self.hitbox=(self.x+17,self.y+11,29,52)
#pygame.draw.rect(赢,(255,0,0),self.hitbox,2)
def命中(自身):
self.isJump=False
self.jumpCount=10
self.x=100
self.y=410
self.walkCount=0
font1=pygame.font.SysFont('comicsans',100)
text=font1.render('-5',1,(255,0,0))
blit(text,(250-(text.get_width()/2),200))
pygame.display.update()
i=0
当我<200时:
pygame。时间。延迟(10)
i+=1
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
i=201
pygame.quit()
类(对象):
定义初始(自、x、y、半径、颜色、面):
self.x=x
self.y=y
自半径=半径
self.color=颜色
自我面对
self.vel=8*端面
def抽签(自我,赢):
pygame.draw.circle(赢,self.color,(self.x,self.y),self.radius)
类敌人(对象):
walkRight=[pygame.image.load('R1E.png')、pygame.image.load('R2E.png')、pygame.image.load('R3E.png'),
pygame.image.load('R4E.png')、pygame.image.load('R5E.png')、pygame.image.load('R6E.png'),
pygame.image.load('R7E.png')、pygame.image.load('R8E.png')、pygame.image.load('R9E.png'),
pygame.image.load('R10E.png')、pygame.image.load('R11E.png')]
walkLeft=[pygame.image.load('L1E.png')、pygame.image.load('L2E.png')、pygame.image.load('L3E.png'),
pygame.image.load('L4E.png')、pygame.image.load('L5E.png')、pygame.image.load('L6E.png'),
pygame.image.load('L7E.png')、pygame.image.load('L8E.png')、pygame.image.load('L9E.png'),
pygame.image.load('L10E.png')、pygame.image.load('L11E.png')]
定义初始(自、x、y、宽度、高度、终点):
self.x=x
self.y=y
self.width=宽度
自我高度=高度
self.end=结束
self.path=[self.x,self.end]
self.walkCount=0
self.vel=3
self.hitbox=(self.x+17,self.y+2,31,57)
自我健康=10
self.visible=True
def抽签(自我,赢):
self.move()
如果自可见:
如果self.walkCount+1>=33:
self.walkCount=0
如果self.vel>0:
blit(self.walkRight[self.walkCount//3],(self.x,self.y))
self.walkCount+=1
其他:
blit(self.walkLeft[self.walkCount//3],(self.x,self.y))
self.walkCount+=1
pygame.draw.rect(赢,(255,0,0),(self.hitbox[0],self.hitbox[1]-20,50,10))
pygame.draw.rect(赢,(0,128,0),(self.hitbox[0],self.hitbox[1]-20,50-(5*(10-自我健康)),10))
self.hitbox=(self.x+17,self.y+2,31,57)
#pygame.draw.rect(赢,(255,0,0),self.hitbox,2)
def移动(自我):
如果self.vel>0:
如果self.x+self.velself.path[0]:
self.x+=self.vel
其他:
self.vel=self.vel*-1
self.walkCount=0
def命中(自身):
如果self.health>0:
自我健康-=1
其他:
self.visible=False
打印('hit')
def重画
goblins = [enemy(100, 410, 64, 64, 450)]
if goblins:
for bullet in bullets:
if bullet.y - bullet.radius < goblins[0].hitbox[1] + goblins[0].hitbox[3] and bullet.y + bullet.radius > goblins[0].hitbox[
1]:
if bullet.x + bullet.radius > goblins[0].hitbox[0] and bullet.x - bullet.radius < goblins[0].hitbox[0] + \
goblins[0].hitbox[2]:
hitSound.play()
goblins[0].hit()
score += 1
bullets.pop(bullets.index(bullet))
if enemy.health < 1:
goblins.remove(0)
if not goblins:
goblins.append(enemy(100, 410, 64, 64, 450))