Pygame从游戏结束的地方开始



游戏结束后,当我再次开始游戏时,它从同一位置开始。按Backspace键退出推送模式(这样您也可以向上移动和向下移动(。

import pygame, sys

WIDTH, HEIGHT = 800, 600
pygame.init()
win = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
game_over = False

# Player Class

class Player:

def __init__(self, x, y):
self.x = int(x)
self.y = int(y)
self.rect = pygame.Rect(self.x, self.y, 32, 32)
self.color = (250, 120, 60)
self.velX = 0
self.velY = 0
self.left_pressed = False
self.right_pressed = False
self.up_pressed = False
self.down_pressed = False
self.speed = 6
self.trail = []
self.running = False

def  main(self):
self.update()
self.check_collisons()
self.draw()
sparc.main()

def draw(self):
global win
pygame.draw.rect(win, self.color, self.rect)

pygame.draw.rect(win,(sparc.color), sparc.Rect)

def check_collisons(self):
if self.x >= 760:
self.x = 760
elif self.x <= 0 :
self.x = 0
if self.y >=570:
self.y = 570
elif self.y<=0:
self.y = 0
def update(self):
self.velX = 0
self.velY = 0
if self.left_pressed and not self.right_pressed:
self.velX = -self.speed
if self.right_pressed and not self.left_pressed:
self.velX = self.speed
if self.up_pressed and not self.down_pressed :
self.velY = -self.speed
if self.down_pressed and not self.up_pressed :
self.velY = self.speed
self.x += self.velX
self.y += self.velY
self.rect = pygame.Rect(self.x, self.y, 32, 32)
pos = self.rect.midbottom
if self.trail:
if self.trail[-1] != pos:
self.trail.append(pos)
else:
self.trail = [pos, pos]
def push(self):
global win,player,game_over
game_over = False
win.fill((255, 255, 255, 0))
self.y = 570
while self.running == False and game_over==False:

for event in  pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
self.left_pressed = True
if event.key==pygame.K_RIGHT:
self.right_pressed = True
if event.key == pygame.K_BACKSPACE:
self.running = True
main_game()
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
player.left_pressed = False
if event.key == pygame.K_RIGHT:
player.right_pressed = False

win.fill((12, 24, 36))
player.main()
pygame.draw.lines(win, (player.color), False, player.trail, 2)


pygame.display.update()
clock.tick(60)



class Sparc:
def __init__(self):
self.x = WIDTH-40
self.y = HEIGHT-40
self.color = (255,255,255)
self.Rect = pygame.Rect(self.x,self.y, 30,30)
self.velx = 2
self.vely = 3


def move(self):
if self.Rect.y==HEIGHT-40:
self.Rect.x -= self.velx
if self.Rect.x<=5:
self.Rect.x = 5
self.Rect.y -=self.vely
if self.Rect.y<=5:
self.Rect.y = 5
self.Rect.x +=self.velx
if self.Rect.x>=WIDTH-40:
self.Rect.x = WIDTH-40
self.Rect.y+= self.vely



def check_collisons(self):
if self.Rect.colliderect(player.rect):
you_lost()
def main(self):
self.check_collisons()
self.move()


player = Player(WIDTH / 2, 570)
sparc = Sparc()

def main_game():
while player.running==  True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.left_pressed = True
if event.key == pygame.K_RIGHT:
player.right_pressed = True
if event.key == pygame.K_UP:
player.up_pressed = True
if event.key == pygame.K_DOWN:
player.down_pressed = True
if player.y >= 560:
if event.key == pygame.K_BACKSPACE:
player.running = False
player.push()
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
player.left_pressed = False
if event.key == pygame.K_RIGHT:
player.right_pressed = False
if event.key == pygame.K_UP:
player.up_pressed = False
if event.key == pygame.K_DOWN:
player.down_pressed = False
win.fill((12, 24, 36))
player.main()
pygame.draw.lines(win, (player.color), False, player.trail, 2)
clock.tick(60)
pygame.display.flip()

def you_lost():
global game_over
game_over = True
while game_over == True:
win.fill((120, 24, 36))
font = pygame.font.Font('freesansbold.ttf', 32)
text = font.render('GAME OVER', True, ((255, 100, 0)))
textRect = text.get_rect()
textRect.center = (WIDTH // 2, HEIGHT// 2)
win.blit(text,textRect)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
pass

pygame.display.update()
clock.tick(60)

player.push()

有办法重新启动吗?当我按下回车键时,游戏结束后,一切都会重新开始。我正试图建造这样的东西——https://drive.google.com/file/d/1vAxbIKjbq8HRnjbAAUOffyH3efynjbXM/view?usp=sharing

如果你能建立一个函数来填充轨迹之间的区域(你可以看到docx以获得更好的解释(,那么请把它放在答案中。

我相信您需要创建变量来存储状态。然后当你结束比赛时,你可以带着那种状态回来。

最新更新