如何解决为什么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 举报,一经查实,本站将立刻删除。