为什么pygame的功能在重启时不起作用? 如何重置 pygame 功能?

问题描述

import pygame,time


pygame.init()


screen_width = 1800
screen_height = 900
screen = pygame.display.set_mode((screen_width,screen_height ))



life1 = 200
rill1 = 0 
timer1 = 9400


font=pygame.font.Font("HMKMRHD.ttf",140)
font2=pygame.font.Font("HMKMRHD.ttf",40)
white = (255,255,255)
black = (0,0)
red = (255,0)
green = (0,0)
blue = (0,255)
skyblue = (0,255)
purple = (255,255)
yellow = (255,0)
gray = (128,128,128)


charac = pygame.image.load("C:/~~")
charac_rect = charac.get_rect()
charac_size = charac.get_rect().size
charac_width = charac_size[0] #80
charac_height = charac_size[1] #80
charac_x_pos = 880
charac_y_pos = 400


go_x = 0
go_y = 0



blocklist1 = [ ... ]
.
.
.
blocklist23 = [ ... ]


class Button2:
    def __init__(pic,img_in,x,y,width,height,img_act,x_act,y_act,action = None):
        mouse = pygame.mouse.get_pos()
        click = pygame.mouse.get_pressed()
        if x + width > mouse[0] > x and y + height > mouse[1] > y:
            screen.blit(img_act,(x_act,y_act))
            if click[0] and action != None:
                time.sleep(1.7)
                action()
        else:
            screen.blit(img_in,(x,y))

class Button4:
    def __init__(pic,y_act))
            if click[0] and action != None:
                time.sleep(0.1)
                action()
        else:
            screen.blit(img_in,y))

        

def a():
    global blocklist1,life1
    for block in blocklist1:
        pygame.draw.rect(screen,black,[block[0],block[1],80,60])
        blockob1 = pygame.Rect([block[0],100,80])

        if block[2] == 'left':
            block[0] += 32

        elif block[2] == 'right':
            block[0] -= 32
        
       if block[2] == 'up':
            block[1] += 32
        
        elif block[2] == 'down':
            block[1] -= 32

        if pygame.Rect.colliderect(charac_rect,blockob1):
            life1 -= 2
            #Hit()
        
def s():
    global blocklist2,life1
    for block in blocklist2:
        pygame.draw.rect(screen,60])
        blockob2 = pygame.Rect([block[0],60])
    
        if block[2] == 'left':
            block[0] += 37

        elif block[2] == 'right':
            block[0] -= 37
        
        if block[2] == 'up':
            block[1] += 35
        
        elif block[2] == 'down':
            block[1] -= 35
        
        if pygame.Rect.colliderect(charac_rect,blockob2):
            life1 -= 2
            #Hit()
        
def ff():
   global blocklist23,life1
    for block in blocklist23:
        pygame.draw.rect(screen,gray,120,100])
        blockob23 = pygame.Rect([block[0],100])
    
        if block[2] == 'left':
            block[0] += 37

        elif block[2] == 'right':
            block[0] -= 37
        
        if block[2] == 'up':
            block[1] += 35
        
        elif block[2] == 'down':
            block[1] -= 35

        if pygame.Rect.colliderect(charac_rect,blockob23):
            life1 -= 2
            #Hit()
        

def score():
    global rill1  
    rill1 += 1
    rill1text=font2.render(("score: " +str(int(rill1)) ),False,[255,0])
    screen.blit(rill1text,(20,20))


def tiktok():

    global timer1  
    timer1 -= 1
    rill1text=font2.render(("time: " +str(int(timer1)) ),(700,20))


def health():
    global life1
    life1text = font2.render(("HEALTH: " ),0])
    screen.blit(life1text,(1150,20))
    pygame.draw.rect(screen,red,(1370,20,300,40))
    pygame.draw.rect(screen,green,life1,40))




def play1():
    global screen,rill1,timer1,total_time,FPS,charac_x_pos,charac_y_pos,go_x,go_y


    running = True
    while running:
        screen.fill(white)       
    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit(0)
            
  
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                   go_x -= 16
                elif event.key == pygame.K_RIGHT:
                    go_x += 16
                elif event.key == pygame.K_UP:
                    go_y -= 16
                elif event.key == pygame.K_DOWN:
                    go_y += 16

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    go_x = 0
                elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                    go_y = 0    
                            
        charac_x_pos += go_x
        charac_y_pos += go_y



       if charac_x_pos < 0:
            charac_x_pos = 0
        elif charac_x_pos > screen_width - charac_width:
            charac_x_pos = screen_width - charac_width

        if charac_y_pos < 0:
            charac_y_pos = 0
        elif charac_y_pos > screen_height - charac_height:
            charac_y_pos = screen_height - charac_height


        charac_rect.left = charac_x_pos
        charac_rect.top = charac_y_pos
    

        score()
        tiktok()
        health()

    
        if rill1 <= 100:
            a()
        
        elif rill1 <= 300:
            s()
                
        elif rill1 <= 470:
            d()
        .
        .
        .
        elif rill1 <= 5380:
            ff()
      
    


        elif timer1 > 0 and life1 <= 0 :
            bgm_one.stop()
            time.sleep(0.5)
            running = False
            failscreen()
    

    
       screen.blit(charac,(charac_x_pos,charac_y_pos))

        pygame.display.update()
    
        pygame.display.flip()




def failscreen():
    global life1,go_y
    rill1 = rill1 * 0
    timer1 = timer1 * 0 + 9400
    life1 = life1 * 0 + 100

    running = True
    while running:
        go_x = 0
        go_y = 0
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()



       screen.fill(white)
    
        screen.blit(overImg,(550,170))
    
    
        selectButton = Button2(reImg,590,820,200,70,clickreImg,play1)
    


        pygame.display.update()
    
        pygame.display.flip()
    
        frame.tick(FPS)


play1()

嗨,我是初学者编码器 我在python上用pygame做了这个游戏,但是这里有一个严重的问题。 首先,我粗暴地解释一下这段代码

play1() 函数是游戏函数。 def a(),s(),d(),...... 这些是障碍物实现函数,在play1()函数中。 障碍功能就像 如果 rill1

elif rill1

elif rill1

我移动角色使用键盘上的箭头键,也出现了障碍。 当我遇到障碍物时,我的健康状况会下降,如果我的健康状况为 0,我就死了,游戏结束。 failscreen() 是游戏结束函数,这个屏幕有重启按钮。 (selectButton = Button2(reImg,play1) ) 像这样。 当我按下按钮时,调用 play1 功能并将游戏重新启动到第一时刻。 这就是问题开始的地方。

例如,我在这里死了“elif rill1

我需要尽快帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)