我的问题是,在我按下开始图像后,图形,图像和画布出现在屏幕上,但它根本不起作用。我检查了主程序中的每个阶段是否正常运行,结果发现它们正在运行。但是,我无法在此处检测到错误。我对endgame()函数持怀疑态度,但不确定问题出在哪里。
这是游戏的开始屏幕,您可以点击开始图像开始玩游戏。
def start():
global screen, canvas, clock, sound, random
global player_1, x1, y1, score1
global player_2, x2, y2, score2
global starfish, s_x, s_y, starfish_list,starfish_quantity
global rock, r_x, r_y
global you_win,y_x,y_y
global start_button, sb_x, sb_y
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
screen.blit(canvas,[0,0])
screen.blit(start_button,[sb_x,sb_y])
font_start=pygame.font.Font("DFTTNC5.TTC",50) #這個字體顯示數字有異常
text_start=font_start.render("Turtle Battle!",True,[0,0,0])
screen.blit(text_start,[sb_x-60,sb_y-80])
if 214+sb_x >mouse[0]>sb_x and sb_y+114>mouse[1]>sb_y:
if click[0]==1:
mainloop()
pygame.display.update()
这是决定谁最终获胜的功能。
def End_Game():
global screen, canvas, clock, sound, random
global player_1, x1, y1, score1
global player_2, x2, y2, score2
global starfish, s_x, s_y, starfish_list,starfish_quantity
global rock, r_x, r_y
global you_win,y_x,y_y
global start_button, sb_x, sb_y
if len(starfish_list)==0 and score1>score2:
font_w1 = pygame.font.Font("DFTTNC5.TTC",50)
text_w1 = font_w1.render("Green Turtle", True, [134,53,20])
screen.blit(text_w1,[y_x+40, y_y-40])
screen.blit(you_win, [y_x,y_y])
pygame.display.update()
#time.sleep(10)
return False
elif len(starfish_list)==0 and score1<score2:
font_w2 = pygame.font.Font("DFTTNC5.TTC",50)
text_w2 = font_w2.render("Red Turtle", True, [134,53,20])
screen.blit(text_w2,[y_x+40, y_y-40])
screen.blit(you_win, [y_x,y_y])
pygame.display.update()
#time.sleep(10)
return False
这是运行游戏的主循环,在打开主循环后,屏幕应该回到开始菜单。
def mainloop():
init()
running = False
while not running:
CheckUserControl()
Update_Screen()
Object_Collision()
if End_Game()==False:
running = True
这是主程序。所以在你开始游戏之后,你将开始玩游戏,在决定胜利者之后,你应该回到开始菜单。如果按退出,程序将被终止。
renew = True
init()
while renew:
start()
for event in pygame.event.get():
if event.type == pygame.QUIT:
renew = False
pygame.quit()
答案 0 :(得分:0)
似乎你并没有在主游戏循环中运行mainloop()
。添加它,你应该没事。
renew = True
init()
while renew:
for event in pygame.event.get():
if event.type == pygame.QUIT:
renew = False
if gamestate == 'Game':
mainloop()
elif gamestate == 'Title':
title()
pygame.quit()
另外,我对你拥有和正在使用的全局变量有多少感兴趣,制作一个public.py文件,将变量放入其中,然后将其导入到脚本中,更不用说你做出的其他糟糕的代码选择。