Python游戏重启

Python游戏重启,python,python-3.x,python-2.7,python-requests,Python,Python 3.x,Python 2.7,Python Requests,所以我在学习python,我完成了游戏,一切正常,但现在我不知道如何重新启动游戏,我的意思是当游戏结束时,下一步是什么?如何重新开始 我将为我的完整代码放一个标签,这里是到目前为止所做的 非常感谢你 if Bullet_state is "fire": fire(BulletX, BulletY) BulletY -= Bullet_MovementY player(playerX, playerY) score(textX,

所以我在学习python,我完成了游戏,一切正常,但现在我不知道如何重新启动游戏,我的意思是当游戏结束时,下一步是什么?如何重新开始 我将为我的完整代码放一个标签,这里是到目前为止所做的

非常感谢你

if Bullet_state is "fire":
        fire(BulletX, BulletY)
        BulletY -= Bullet_MovementY
    player(playerX, playerY)
    score(textX, textY)
    pygame.display.update()

对于重启逻辑,保持当前游戏循环,但添加一个标志以指示游戏已结束。在循环中,检查此标志,如果设置了该标志,则显示重新启动提示。还将初始化过程封装在函数中,以便在每次重新启动时调用

注意,我在Python3.8中对此进行了测试

试试这个代码。当比分达到3分时,游戏结束并显示重新启动提示

import pygame
import random
import math

pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Space Invadors')
icon = pygame.image.load('1.png')
pygame.display.set_icon(icon)
#Background
Background = pygame.image.load('background.png')

def SetGameStart():    # initialize variables
    global Player_Image,playerX,playerY,Key_Movement,Enemy_Image,EnemyX,EnemyY,Enemy_MovementX,Enemy_MovementY
    global Bullet_Image,BulletX,BulletY,Bullet_MovementX,Bullet_MovementY,Bullet_state,Score
    # Player
    Player_Image = pygame.image.load('player.png')
    playerX = 370
    playerY = 480
    Key_Movement = 0
    # Enemy
    Enemy_Image = pygame.image.load('monster2.png')
    EnemyX = random.randint(0, 735)
    EnemyY = random.randint(50, 150)
    Enemy_MovementX = 1.5
    Enemy_MovementY = 40
    # Bullet
    Bullet_Image = pygame.image.load('bullet.png')
    BulletX = 0
    BulletY = 480
    Bullet_MovementX = 0
    Bullet_MovementY = 10
    Bullet_state = "Ready"

    Score = 0

def Fire(x, y):
    global Bullet_state
    Bullet_state = "Fire"
    screen.blit(Bullet_Image, (x + 16, y + 10))


def player(x, y):
    # blit is draw! draw an image on the screen
    screen.blit(Player_Image, (x, y))


def Enemy(x, y):
    screen.blit(Enemy_Image, (x, y))

def is_Collided(BulletX, BulletY, EnemyX, EnemyY):
    distance = math.sqrt(math.pow(BulletX - EnemyX, 2) + math.pow(BulletY - EnemyY, 2))
    if distance < 27:
        return True
    else:
        return False
        

SetGameStart()  # initialize variables
GameDone = False

def text_objects(text, font):
    textSurface = font.render(text, True, (0,200,0))
    return textSurface, textSurface.get_rect()

Close = True
while Close:
    screen.fill((0, 0, 0))
    screen.blit(Background, (0, 0))

    if GameDone:  # pause game loop, show restart prompt
        largeText = pygame.font.SysFont("comicsansms",20)
        TextSurf, TextRect = text_objects("Game Over.    Press Space to restart.", largeText)
        TextRect.center = ((800/2),(600/2))
        screen.blit(TextSurf, TextRect)
        pygame.display.update() 
        for event in pygame.event.get():
           if event.type == pygame.QUIT:
               Close = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_q:  # press Q to quit
                Close = False
                break
            if event.key == pygame.K_SPACE:  # press space to restart
                GameDone = False
                SetGameStart()  # initialize variables
        continue  # skip game process

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            Close = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                Key_Movement = -4
            if event.key == pygame.K_RIGHT:
                Key_Movement = 4
            if event.key == pygame.K_SPACE:
                # to fix the Pressing on space will reload the Bullet
                if Bullet_state is "Ready":
                    BulletX = playerX
                    Fire(BulletX, playerY)
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                Key_Movement = 0
    playerX += Key_Movement
    if playerX <= 0:
        playerX = 0
    elif playerX >= 736:
        playerX = 736
    # Enemy movement limit
    EnemyX += Enemy_MovementX
    if EnemyX <= 0:
        Enemy_MovementX = 1.5
        EnemyY += Enemy_MovementY
    elif EnemyX >= 736:
        Enemy_MovementX = -1.5
        EnemyY += Enemy_MovementY
    if BulletY <= 0:
        BulletY = 480
        Bullet_state = "Ready"
    if Bullet_state is "Fire":
        Fire(BulletX, BulletY)
        BulletY -= Bullet_MovementY
    Collision = is_Collided(EnemyX, EnemyY, BulletX, BulletY)
    if Collision:
        BulletY = 480
        Bullet_state = "Ready"
        Score += 1
        print(Score)
        EnemyX = random.randint(0, 735)
        EnemyY = random.randint(50, 150)
    Enemy(EnemyX, EnemyY)
    player(playerX, playerY)
    pygame.display.update() 
    if Score == 3:
        GameDone = True
导入pygame
随机输入
输入数学
pygame.init()
screen=pygame.display.set_模式((800600))
pygame.display.set_标题('空间入侵者')
icon=pygame.image.load('1.png')
pygame.display.set_图标(图标)
#背景
Background=pygame.image.load('Background.png')
def SetGameStart():#初始化变量
全球玩家图像,玩家,游戏,按键移动,敌人图像,敌人,敌人移动,敌人移动
全局项目符号图像,项目符号,项目符号,项目符号移动,项目符号移动,项目符号状态,分数
#玩家
Player\u Image=pygame.Image.load('Player.png')
playerX=370
playerY=480
按键移动=0
#敌人
敌人_Image=pygame.Image.load('monster2.png')
EnemyX=random.randint(0735)
EnemyY=random.randint(50150)
敌人的行动x=1.5
敌人的行动=40
#子弹头
Bullet\u Image=pygame.Image.load('Bullet.png')
BulletX=0
BulletY=480
Bullet_MovementX=0
Bullet_MovementY=10
Bullet_state=“就绪”
分数=0
def火灾(x,y):
全球子弹头状态
Bullet_state=“火灾”
屏幕。blit(子弹头图像,(x+16,y+10))
def播放器(x,y):
#布利特是抽签!在屏幕上绘制图像
屏幕blit(播放器图像,(x,y))
def敌人(x,y):
屏幕。光点(敌人_图像,(x,y))
def发生碰撞(子弹、子弹、灌肠、灌肠):
距离=math.sqrt(math.pow(BulletX-EnemyX,2)+math.pow(BulletY-EnemyY,2))
如果距离小于27:
返回真值
其他:
返回错误
SetGameStart()#初始化变量
GameDone=False
def text_对象(文本、字体):
textSurface=font.render(文本,真,(0200,0))
返回textSurface,textSurface.get_rect()
关闭=真
关闭时:
屏幕填充((0,0,0))
屏幕光点(背景,(0,0))
如果游戏完成:#暂停游戏循环,显示重启提示
largeText=pygame.font.SysFont(“comicsansms”,20)
TextSurf,TextRect=text_对象(“游戏结束,按空格重新启动。”,largeText)
TextRect.center=((800/2)、(600/2))
screen.blit(TextSurf,TextRect)
pygame.display.update()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
关闭=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_q:#按q退出
关闭=错误
打破
如果event.key==pygame.K_空格:#按空格重新启动
GameDone=False
SetGameStart()#初始化变量
继续#跳过游戏过程
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
关闭=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
按键移动=-4
如果event.key==pygame.K_RIGHT:
按键移动=4
如果event.key==pygame.K_空间:
#要固定压紧空间,将重新加载子弹
如果Bullet_状态为“就绪”:
BulletX=playerX
火(子弹,游戏)
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左或event.key==pygame.K_右:
按键移动=0
playerX+=按键移动
如果playerX=736:
playerX=736
#敌军行动限制
EnemyX+=敌人的行动
如果EnemyX=736:
敌人的行动x=-1.5
敌人+=敌人移动

如果BulletY非常感谢你Mike我能问你一些编程技巧吗?我刚刚开始使用python,我不知道该做什么,也不知道如何做才好,也不知道我需要做什么。再次感谢你:D