如何修复退出代码为 -805306369 (0xCFFFFFFF) 的进程
How to fix Process finished with exit code -805306369 (0xCFFFFFFF)
我遇到了一个奇怪的错误,我的游戏在 PyCharm
中随机崩溃,退出代码为 -805306369 (0xCFFFFFFF)
而且我认为错误出在我的 while 循环中的某处,但 idk where
While 循环:
while True:
clock.tick(FPS)
# Start screen
if Starting_screen is True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
screen.fill((101, 67, 33))
screen.blit(Start_game_box, Start_game_box_rect)
screen.blit(Play_game_text, Play_game_text_rect)
screen.blit(Game_name_text, Game_name_text_rect)
screen.blit(Pepsi_credits_text, Pepsi_credits_text_rect)
screen.blit(Brew_credits_text, Brew_credits_text_rect)
screen.blit(Q_credits_text, Q_credits_text_rect)
screen.blit(mouse, mouse_rect)
mouse_pos = pygame.mouse.get_pos()
if pygame.MOUSEMOTION:
mx, my = mouse_pos
mouse_rect.x = mx
mouse_rect.y = my
mouse_pressed = pygame.mouse.get_pressed()
if (mouse_pressed[0]) and mouse_rect.colliderect(Start_game_box_rect):
Main_tycoon_screen = True
Play_game_text_rect.x = 9999
Game_name_text_rect.x = 9999
Start_game_box_rect.x = 9999
print(Main_tycoon_screen)
Starting_screen = False
print(Starting_screen)
pygame.display.update()
if Main_tycoon_screen is True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.fill((101, 67, 33))
screen.blit(dropper1, (100, 400))
screen.blit(conveyor1, (100, 450))
screen.blit(dropper1_block, dropperblock1_rect)
screen.blit(sell_block1, sell_block1_rect)
screen.blit(Buy_block1, Buy_block1_rect)
screen.blit(Buy1_cost_text, Buy1_cost_text_rect)
# functions
spawn_dropper2()
spawn_dropper3()
spawn_dropper4()
spawn_dropper5()
spawn_dropper6()
spawn_dropper7()
spawn_dropper8()
spawn_dropper9()
spawn_dropper10()
spawn_dropper11()
spawn_dropper_rainbow()
spawn_conveyor2()
setting_stuff()
dropperblock1_rect.x += 2
mouse_pos = pygame.mouse.get_pos()
if pygame.MOUSEMOTION:
mx, my = mouse_pos
mouse_rect.x = mx
mouse_rect.y = my
screen.blit(mouse, mouse_rect)
# sell block collisions
if dropperblock12_rect.colliderect(sell_block1_rect):
monet += 500
dropperblock12_rect.x = 70
print(monet)
if dropperblock11_rect.colliderect(sell_block1_rect):
monet += 100
dropperblock11_rect.x = 560
print(monet)
if dropperblock10_rect.colliderect(sell_block1_rect):
monet += 70
dropperblock10_rect.x = 460
print(monet)
if dropperblock9_rect.colliderect(sell_block1_rect):
monet += 50
dropperblock9_rect.x = 360
print(monet)
if dropperblock8_rect.colliderect(sell_block1_rect):
monet += 30
dropperblock8_rect.x = 260
print(monet)
if dropperblock7_rect.colliderect(sell_block1_rect):
monet += 20
dropperblock7_rect.x = 160
print(monet)
if dropperblock6_rect.colliderect(sell_block1_rect):
monet += 15
dropperblock6_rect.x = 600
print(monet)
if dropperblock5_rect.colliderect(sell_block1_rect):
monet += 15
dropperblock5_rect.x = 500
print(monet)
if dropperblock4_rect.colliderect(sell_block1_rect):
monet += 10
dropperblock4_rect.x = 400
print(monet)
if dropperblock3_rect.colliderect(sell_block1_rect):
monet += 8
dropperblock3_rect.x = 300
print(monet)
if dropperblock2_rect.colliderect(sell_block1_rect):
monet += 6
dropperblock2_rect.x = 200
print(monet)
if dropperblock1_rect.colliderect(sell_block1_rect):
monet += 5
dropperblock1_rect.x = 100
print(monet)
# Buy block collisions
mouse_pressed = pygame.mouse.get_pressed()
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block1_rect) and monet >= 10:
monet -= 10
Buy_block1_rect.x = 999
Buy_block1_rect.y = 999
Spawn_dropper2 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block2_rect) and monet >= 30:
monet -= 30
Buy_block2_rect.x = 999
Buy_block2_rect.y = 999
Buy2_cost_text_rect.x = 999
Spawn_dropper3 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block3_rect) and monet >= 100:
monet -= 100
Buy_block3_rect.x = 999
Buy_block3_rect.y = 999
Buy3_cost_text_rect.x = 999
Spawn_dropper4 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block4_rect) and monet >= 200:
monet -= 200
Buy_block4_rect.x = 999
Buy_block4_rect.y = 999
Buy4_cost_text_rect.x = 999
Spawn_dropper5 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block5_rect) and monet >= 500:
monet -= 500
Buy_block5_rect.x = 999
Buy_block5_rect.y = 999
Buy5_cost_text_rect.x = 999
Spawn_dropper6 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block6_rect) and monet >= 1000:
monet -= 1000
Buy_block6_rect.x = 999
Buy_block6_rect.y = 999
Buy6_cost_text_rect.x = 999
Spawn_dropper7 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block7_rect) and monet >= 1500:
monet -= 1500
Buy_block7_rect.x = 999
Buy_block7_rect.y = 999
Buy7_cost_text_rect.x = 999
Spawn_dropper8 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block8_rect) and monet >= 2000:
monet -= 2000
Buy_block8_rect.x = 999
Buy_block8_rect.y = 999
Buy8_cost_text_rect.x = 999
Spawn_dropper9 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block9_rect) and monet >= 3000:
monet -= 3000
Buy_block9_rect.x = 999
Buy_block9_rect.y = 999
Buy9_cost_text_rect.x = 999
Spawn_dropper10 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block10_rect) and monet >= 4000:
monet -= 4000
Buy_block10_rect.x = 999
Buy_block10_rect.y = 999
Buy10_cost_text_rect.x = 999
Spawn_dropper11 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block11_rect) and monet >= 5000:
monet -= 5000
Buy_block11_rect.x = 999
Buy_block11_rect.y = 999
Buy11_cost_text_rect.x = 999
Spawn_dropper12 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_conveyor2_block_rect) and monet >= 10000:
monet -= 10000
Buy_conveyor2_block_rect.x = 999
Buy_conveyor2_text_rect.x = 999
Spawn_conveyor2 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
draw_monet_counter(f"monet: {monet}", "white", 60, 600, 50)
pygame.display.update()
这是函数
Spawn_conveyor2 = False
Spawn_dropper2 = False
Spawn_dropper3 = False
Spawn_dropper4 = False
Spawn_dropper5 = False
Spawn_dropper6 = False
Spawn_dropper7 = False
Spawn_dropper8 = False
Spawn_dropper9 = False
Spawn_dropper10 = False
Spawn_dropper11 = False
Spawn_dropper12 = False
Spawn_pho_dropper1 = False
def spawn_conveyor2():
if Spawn_conveyor2 is True:
screen.blit(conveyor2, (100, 200))
Buy_conveyor2_block_rect.x = 999
Buy_conveyor2_text_rect.x = 9999
Buy_pho1_rect.x = 110
screen.blit(Buy_pho1, Buy_pho1_rect)
def spawn_dropper2():
if Spawn_dropper2 is True:
Buy_block1_rect.x = 2400
screen.blit(Buy2_cost_text, Buy2_cost_text_rect)
screen.blit(dropper2, (200, 390))
screen.blit(dropper2_block, dropperblock2_rect)
Buy_block2_rect.x = 300
screen.blit(Buy_block2, Buy_block2_rect)
dropperblock2_rect.x += 2
Buy1_cost_text_rect.x = 999
def spawn_dropper3():
if Spawn_dropper3 is True:
screen.blit(dropper3, (300, 390))
screen.blit(dropper3_block, dropperblock3_rect)
dropperblock3_rect.x += 2
Buy_block3_rect.x = 400
screen.blit(Buy_block3, Buy_block3_rect)
screen.blit(Buy3_cost_text, Buy3_cost_text_rect)
def spawn_dropper4():
if Spawn_dropper4 is True:
screen.blit(dropper4, (400, 390))
screen.blit(dropper4_block, dropperblock4_rect)
dropperblock4_rect.x += 2
Buy_block4_rect.x = 500
screen.blit(Buy_block4, Buy_block4_rect)
screen.blit(Buy4_cost_text, Buy4_cost_text_rect)
def spawn_dropper5():
if Spawn_dropper5 is True:
screen.blit(dropper5, (500, 390))
screen.blit(dropper5_block, dropperblock5_rect)
dropperblock5_rect.x += 2
Buy_block5_rect.x = 600
screen.blit(Buy_block5, Buy_block5_rect)
screen.blit(Buy5_cost_text, Buy5_cost_text_rect)
def spawn_dropper6():
if Spawn_dropper6 is True:
screen.blit(dropper6, (600, 390))
screen.blit(dropper6_block, dropperblock6_rect)
dropperblock6_rect.x += 1
Buy_block6_rect.x = 160
screen.blit(Buy_block6, Buy_block6_rect)
screen.blit(Buy6_cost_text, Buy6_cost_text_rect)
def spawn_dropper7():
if Spawn_dropper7 is True:
screen.blit(dropper7, (160, 500))
screen.blit(dropper7_block, dropperblock7_rect)
dropperblock7_rect.x += 2
Buy_block7_rect.x = 260
screen.blit(Buy_block7, Buy_block7_rect)
screen.blit(Buy7_cost_text, Buy7_cost_text_rect)
def spawn_dropper8():
if Spawn_dropper8 is True:
screen.blit(dropper8, (260, 500))
screen.blit(dropper8_block, dropperblock8_rect)
dropperblock8_rect.x += 2
Buy_block8_rect.x = 360
screen.blit(Buy_block8, Buy_block8_rect)
screen.blit(Buy8_cost_text, Buy8_cost_text_rect)
screen.blit(Buy_conveyor2_text, Buy_conveyor2_text_rect)
screen.blit(Buy_conveyor2_block, Buy_conveyor2_block_rect)
def spawn_dropper9():
if Spawn_dropper9 is True:
screen.blit(dropper9, (360, 500))
screen.blit(dropper9_block, dropperblock9_rect)
dropperblock9_rect.x += 2
Buy_block9_rect.x = 460
screen.blit(Buy_block9, Buy_block9_rect)
screen.blit(Buy9_cost_text, Buy9_cost_text_rect)
def spawn_dropper10():
if Spawn_dropper10 is True:
screen.blit(dropper10, (460, 500))
screen.blit(dropper10_block, dropperblock10_rect)
dropperblock10_rect.x += 2
Buy_block10_rect.x = 560
screen.blit(Buy_block10, Buy_block10_rect)
screen.blit(Buy10_cost_text, Buy10_cost_text_rect)
def spawn_dropper11():
if Spawn_dropper11 is True:
screen.blit(dropper11, (560, 500))
screen.blit(dropper11_block, dropperblock11_rect)
dropperblock11_rect.x += 2
Buy_block11_rect.x = 40
screen.blit(Buy_block11, Buy_block11_rect)
screen.blit(Buy11_cost_text, Buy11_cost_text_rect)
def spawn_dropper_rainbow():
if Spawn_dropper12 is True:
screen.blit(dropper12, (40, 450))
screen.blit(Rainbow_block_red, (15, 450))
screen.blit(Rainbow_block_blue, (35, 450))
screen.blit(Rainbow_block_yellow, (50, 450))
screen.blit(Rainbow_block_purple, (65, 450))
screen.blit(Rainbow_block_green, (80, 450))
screen.blit(dropper12_block, dropperblock12_rect)
dropperblock12_rect.x += 2
Starting_screen = True
Main_tycoon_screen = False
Setting_On = False
Setting_Off = True
Music = True
def setting_stuff():
global Setting_On, Setting_Off, Music, Tycoon_music1, Starting_screen_music, mouse_pressed
screen.blit(Setting_button, Setting_button_rect)
screen.blit(setting_button_icon, setting_button_icon_rect)
mouse_pressed = pygame.mouse.get_pressed()
if (mouse_pressed[0]) and mouse_rect.colliderect(Setting_button_rect):
Setting_Off = False
Setting_On = True
if Setting_On is True:
Setting_Background_rect.x = 200
exit_setting_button_rect.x = 470
screen.blit(Setting_Background, Setting_Background_rect)
screen.blit(exit_setting_button, exit_setting_button_rect)
setting_button_icon_rect.x = 999
Setting_button_rect.x = 999
pause_music_block_rect.x = 250
pause_music_text_rect.x = 260
screen.blit(pause_music_block, pause_music_block_rect)
screen.blit(pause_music_text, pause_music_text_rect)
unpause_music_block_rect.x = 250
unpause_music_text_rect.x = 260
screen.blit(unpause_music_block, unpause_music_block_rect)
screen.blit(unpause_music_text, unpause_music_text_rect)
if (mouse_pressed[0]) and mouse_rect.colliderect(exit_setting_button_rect):
Setting_On = False
Setting_Off = True
if (mouse_pressed[0]) and mouse_rect.colliderect(pause_music_block_rect):
Music = False
if (mouse_pressed[0]) and mouse_rect.colliderect(unpause_music_block_rect):
Music = True
if Music is False:
pygame.mixer.music.pause()
if Music is True:
pygame.mixer.music.unpause()
if Setting_Off is True:
pause_music_block_rect. x = 999
pause_music_text_rect.x = 999
unpause_music_block_rect.x = 999
unpause_music_text_rect.x = 999
Setting_Background_rect.x = 999
exit_setting_button_rect.x = 999
setting_button_icon_rect.x = 50
Setting_button_rect.x = 50
当我在游戏中点击一个按钮时会发生错误,有时会发生,有时不会,我不知道如何解决
很可能你的变量 Starting_screen
和 Main_tycoon_screen
都变成了 False
。如果这两个都为 false,您将不再处理 window 事件队列。操作系统注意到您的应用程序不再处理事件(即“无响应”),并采取终止它的操作。这导致 0xCFFFFFFF 代码。
我建议您修改程序以在一个地方处理 window 事件,并且 始终 处理事件队列。
START_SCREEN = 1
GAME_SCREEN = 2
current_screen = START_SCREEN
while True:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
mouse_pos = pygame.mouse.get_pos()
mouse_pressed = pygame.mouse.get_pressed()
clock.tick(FPS)
if ( current_screen == START_SCREEN ):
pass
# TODO paint start screen
# TODO handle start screen events
elif ( current_screen == GAME_SCREEN ):
pass
# TODO paint game screen
# TODO handle game screen events
此框架允许您通过设置 current_screen
变量在应用程序的“状态”之间切换。但关键是 总是 处理事件队列,无论 current_screen
.
是什么
我遇到了一个奇怪的错误,我的游戏在 PyCharm
中随机崩溃,退出代码为 -805306369 (0xCFFFFFFF)而且我认为错误出在我的 while 循环中的某处,但 idk where
While 循环:
while True:
clock.tick(FPS)
# Start screen
if Starting_screen is True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
screen.fill((101, 67, 33))
screen.blit(Start_game_box, Start_game_box_rect)
screen.blit(Play_game_text, Play_game_text_rect)
screen.blit(Game_name_text, Game_name_text_rect)
screen.blit(Pepsi_credits_text, Pepsi_credits_text_rect)
screen.blit(Brew_credits_text, Brew_credits_text_rect)
screen.blit(Q_credits_text, Q_credits_text_rect)
screen.blit(mouse, mouse_rect)
mouse_pos = pygame.mouse.get_pos()
if pygame.MOUSEMOTION:
mx, my = mouse_pos
mouse_rect.x = mx
mouse_rect.y = my
mouse_pressed = pygame.mouse.get_pressed()
if (mouse_pressed[0]) and mouse_rect.colliderect(Start_game_box_rect):
Main_tycoon_screen = True
Play_game_text_rect.x = 9999
Game_name_text_rect.x = 9999
Start_game_box_rect.x = 9999
print(Main_tycoon_screen)
Starting_screen = False
print(Starting_screen)
pygame.display.update()
if Main_tycoon_screen is True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.fill((101, 67, 33))
screen.blit(dropper1, (100, 400))
screen.blit(conveyor1, (100, 450))
screen.blit(dropper1_block, dropperblock1_rect)
screen.blit(sell_block1, sell_block1_rect)
screen.blit(Buy_block1, Buy_block1_rect)
screen.blit(Buy1_cost_text, Buy1_cost_text_rect)
# functions
spawn_dropper2()
spawn_dropper3()
spawn_dropper4()
spawn_dropper5()
spawn_dropper6()
spawn_dropper7()
spawn_dropper8()
spawn_dropper9()
spawn_dropper10()
spawn_dropper11()
spawn_dropper_rainbow()
spawn_conveyor2()
setting_stuff()
dropperblock1_rect.x += 2
mouse_pos = pygame.mouse.get_pos()
if pygame.MOUSEMOTION:
mx, my = mouse_pos
mouse_rect.x = mx
mouse_rect.y = my
screen.blit(mouse, mouse_rect)
# sell block collisions
if dropperblock12_rect.colliderect(sell_block1_rect):
monet += 500
dropperblock12_rect.x = 70
print(monet)
if dropperblock11_rect.colliderect(sell_block1_rect):
monet += 100
dropperblock11_rect.x = 560
print(monet)
if dropperblock10_rect.colliderect(sell_block1_rect):
monet += 70
dropperblock10_rect.x = 460
print(monet)
if dropperblock9_rect.colliderect(sell_block1_rect):
monet += 50
dropperblock9_rect.x = 360
print(monet)
if dropperblock8_rect.colliderect(sell_block1_rect):
monet += 30
dropperblock8_rect.x = 260
print(monet)
if dropperblock7_rect.colliderect(sell_block1_rect):
monet += 20
dropperblock7_rect.x = 160
print(monet)
if dropperblock6_rect.colliderect(sell_block1_rect):
monet += 15
dropperblock6_rect.x = 600
print(monet)
if dropperblock5_rect.colliderect(sell_block1_rect):
monet += 15
dropperblock5_rect.x = 500
print(monet)
if dropperblock4_rect.colliderect(sell_block1_rect):
monet += 10
dropperblock4_rect.x = 400
print(monet)
if dropperblock3_rect.colliderect(sell_block1_rect):
monet += 8
dropperblock3_rect.x = 300
print(monet)
if dropperblock2_rect.colliderect(sell_block1_rect):
monet += 6
dropperblock2_rect.x = 200
print(monet)
if dropperblock1_rect.colliderect(sell_block1_rect):
monet += 5
dropperblock1_rect.x = 100
print(monet)
# Buy block collisions
mouse_pressed = pygame.mouse.get_pressed()
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block1_rect) and monet >= 10:
monet -= 10
Buy_block1_rect.x = 999
Buy_block1_rect.y = 999
Spawn_dropper2 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block2_rect) and monet >= 30:
monet -= 30
Buy_block2_rect.x = 999
Buy_block2_rect.y = 999
Buy2_cost_text_rect.x = 999
Spawn_dropper3 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block3_rect) and monet >= 100:
monet -= 100
Buy_block3_rect.x = 999
Buy_block3_rect.y = 999
Buy3_cost_text_rect.x = 999
Spawn_dropper4 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block4_rect) and monet >= 200:
monet -= 200
Buy_block4_rect.x = 999
Buy_block4_rect.y = 999
Buy4_cost_text_rect.x = 999
Spawn_dropper5 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block5_rect) and monet >= 500:
monet -= 500
Buy_block5_rect.x = 999
Buy_block5_rect.y = 999
Buy5_cost_text_rect.x = 999
Spawn_dropper6 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block6_rect) and monet >= 1000:
monet -= 1000
Buy_block6_rect.x = 999
Buy_block6_rect.y = 999
Buy6_cost_text_rect.x = 999
Spawn_dropper7 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block7_rect) and monet >= 1500:
monet -= 1500
Buy_block7_rect.x = 999
Buy_block7_rect.y = 999
Buy7_cost_text_rect.x = 999
Spawn_dropper8 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block8_rect) and monet >= 2000:
monet -= 2000
Buy_block8_rect.x = 999
Buy_block8_rect.y = 999
Buy8_cost_text_rect.x = 999
Spawn_dropper9 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block9_rect) and monet >= 3000:
monet -= 3000
Buy_block9_rect.x = 999
Buy_block9_rect.y = 999
Buy9_cost_text_rect.x = 999
Spawn_dropper10 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block10_rect) and monet >= 4000:
monet -= 4000
Buy_block10_rect.x = 999
Buy_block10_rect.y = 999
Buy10_cost_text_rect.x = 999
Spawn_dropper11 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_block11_rect) and monet >= 5000:
monet -= 5000
Buy_block11_rect.x = 999
Buy_block11_rect.y = 999
Buy11_cost_text_rect.x = 999
Spawn_dropper12 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
if (mouse_pressed[0]) and mouse_rect.colliderect(Buy_conveyor2_block_rect) and monet >= 10000:
monet -= 10000
Buy_conveyor2_block_rect.x = 999
Buy_conveyor2_text_rect.x = 999
Spawn_conveyor2 = True
print(monet)
pygame.mixer.Sound.play(Buying_dropper_sound)
draw_monet_counter(f"monet: {monet}", "white", 60, 600, 50)
pygame.display.update()
这是函数
Spawn_conveyor2 = False
Spawn_dropper2 = False
Spawn_dropper3 = False
Spawn_dropper4 = False
Spawn_dropper5 = False
Spawn_dropper6 = False
Spawn_dropper7 = False
Spawn_dropper8 = False
Spawn_dropper9 = False
Spawn_dropper10 = False
Spawn_dropper11 = False
Spawn_dropper12 = False
Spawn_pho_dropper1 = False
def spawn_conveyor2():
if Spawn_conveyor2 is True:
screen.blit(conveyor2, (100, 200))
Buy_conveyor2_block_rect.x = 999
Buy_conveyor2_text_rect.x = 9999
Buy_pho1_rect.x = 110
screen.blit(Buy_pho1, Buy_pho1_rect)
def spawn_dropper2():
if Spawn_dropper2 is True:
Buy_block1_rect.x = 2400
screen.blit(Buy2_cost_text, Buy2_cost_text_rect)
screen.blit(dropper2, (200, 390))
screen.blit(dropper2_block, dropperblock2_rect)
Buy_block2_rect.x = 300
screen.blit(Buy_block2, Buy_block2_rect)
dropperblock2_rect.x += 2
Buy1_cost_text_rect.x = 999
def spawn_dropper3():
if Spawn_dropper3 is True:
screen.blit(dropper3, (300, 390))
screen.blit(dropper3_block, dropperblock3_rect)
dropperblock3_rect.x += 2
Buy_block3_rect.x = 400
screen.blit(Buy_block3, Buy_block3_rect)
screen.blit(Buy3_cost_text, Buy3_cost_text_rect)
def spawn_dropper4():
if Spawn_dropper4 is True:
screen.blit(dropper4, (400, 390))
screen.blit(dropper4_block, dropperblock4_rect)
dropperblock4_rect.x += 2
Buy_block4_rect.x = 500
screen.blit(Buy_block4, Buy_block4_rect)
screen.blit(Buy4_cost_text, Buy4_cost_text_rect)
def spawn_dropper5():
if Spawn_dropper5 is True:
screen.blit(dropper5, (500, 390))
screen.blit(dropper5_block, dropperblock5_rect)
dropperblock5_rect.x += 2
Buy_block5_rect.x = 600
screen.blit(Buy_block5, Buy_block5_rect)
screen.blit(Buy5_cost_text, Buy5_cost_text_rect)
def spawn_dropper6():
if Spawn_dropper6 is True:
screen.blit(dropper6, (600, 390))
screen.blit(dropper6_block, dropperblock6_rect)
dropperblock6_rect.x += 1
Buy_block6_rect.x = 160
screen.blit(Buy_block6, Buy_block6_rect)
screen.blit(Buy6_cost_text, Buy6_cost_text_rect)
def spawn_dropper7():
if Spawn_dropper7 is True:
screen.blit(dropper7, (160, 500))
screen.blit(dropper7_block, dropperblock7_rect)
dropperblock7_rect.x += 2
Buy_block7_rect.x = 260
screen.blit(Buy_block7, Buy_block7_rect)
screen.blit(Buy7_cost_text, Buy7_cost_text_rect)
def spawn_dropper8():
if Spawn_dropper8 is True:
screen.blit(dropper8, (260, 500))
screen.blit(dropper8_block, dropperblock8_rect)
dropperblock8_rect.x += 2
Buy_block8_rect.x = 360
screen.blit(Buy_block8, Buy_block8_rect)
screen.blit(Buy8_cost_text, Buy8_cost_text_rect)
screen.blit(Buy_conveyor2_text, Buy_conveyor2_text_rect)
screen.blit(Buy_conveyor2_block, Buy_conveyor2_block_rect)
def spawn_dropper9():
if Spawn_dropper9 is True:
screen.blit(dropper9, (360, 500))
screen.blit(dropper9_block, dropperblock9_rect)
dropperblock9_rect.x += 2
Buy_block9_rect.x = 460
screen.blit(Buy_block9, Buy_block9_rect)
screen.blit(Buy9_cost_text, Buy9_cost_text_rect)
def spawn_dropper10():
if Spawn_dropper10 is True:
screen.blit(dropper10, (460, 500))
screen.blit(dropper10_block, dropperblock10_rect)
dropperblock10_rect.x += 2
Buy_block10_rect.x = 560
screen.blit(Buy_block10, Buy_block10_rect)
screen.blit(Buy10_cost_text, Buy10_cost_text_rect)
def spawn_dropper11():
if Spawn_dropper11 is True:
screen.blit(dropper11, (560, 500))
screen.blit(dropper11_block, dropperblock11_rect)
dropperblock11_rect.x += 2
Buy_block11_rect.x = 40
screen.blit(Buy_block11, Buy_block11_rect)
screen.blit(Buy11_cost_text, Buy11_cost_text_rect)
def spawn_dropper_rainbow():
if Spawn_dropper12 is True:
screen.blit(dropper12, (40, 450))
screen.blit(Rainbow_block_red, (15, 450))
screen.blit(Rainbow_block_blue, (35, 450))
screen.blit(Rainbow_block_yellow, (50, 450))
screen.blit(Rainbow_block_purple, (65, 450))
screen.blit(Rainbow_block_green, (80, 450))
screen.blit(dropper12_block, dropperblock12_rect)
dropperblock12_rect.x += 2
Starting_screen = True
Main_tycoon_screen = False
Setting_On = False
Setting_Off = True
Music = True
def setting_stuff():
global Setting_On, Setting_Off, Music, Tycoon_music1, Starting_screen_music, mouse_pressed
screen.blit(Setting_button, Setting_button_rect)
screen.blit(setting_button_icon, setting_button_icon_rect)
mouse_pressed = pygame.mouse.get_pressed()
if (mouse_pressed[0]) and mouse_rect.colliderect(Setting_button_rect):
Setting_Off = False
Setting_On = True
if Setting_On is True:
Setting_Background_rect.x = 200
exit_setting_button_rect.x = 470
screen.blit(Setting_Background, Setting_Background_rect)
screen.blit(exit_setting_button, exit_setting_button_rect)
setting_button_icon_rect.x = 999
Setting_button_rect.x = 999
pause_music_block_rect.x = 250
pause_music_text_rect.x = 260
screen.blit(pause_music_block, pause_music_block_rect)
screen.blit(pause_music_text, pause_music_text_rect)
unpause_music_block_rect.x = 250
unpause_music_text_rect.x = 260
screen.blit(unpause_music_block, unpause_music_block_rect)
screen.blit(unpause_music_text, unpause_music_text_rect)
if (mouse_pressed[0]) and mouse_rect.colliderect(exit_setting_button_rect):
Setting_On = False
Setting_Off = True
if (mouse_pressed[0]) and mouse_rect.colliderect(pause_music_block_rect):
Music = False
if (mouse_pressed[0]) and mouse_rect.colliderect(unpause_music_block_rect):
Music = True
if Music is False:
pygame.mixer.music.pause()
if Music is True:
pygame.mixer.music.unpause()
if Setting_Off is True:
pause_music_block_rect. x = 999
pause_music_text_rect.x = 999
unpause_music_block_rect.x = 999
unpause_music_text_rect.x = 999
Setting_Background_rect.x = 999
exit_setting_button_rect.x = 999
setting_button_icon_rect.x = 50
Setting_button_rect.x = 50
当我在游戏中点击一个按钮时会发生错误,有时会发生,有时不会,我不知道如何解决
很可能你的变量 Starting_screen
和 Main_tycoon_screen
都变成了 False
。如果这两个都为 false,您将不再处理 window 事件队列。操作系统注意到您的应用程序不再处理事件(即“无响应”),并采取终止它的操作。这导致 0xCFFFFFFF 代码。
我建议您修改程序以在一个地方处理 window 事件,并且 始终 处理事件队列。
START_SCREEN = 1
GAME_SCREEN = 2
current_screen = START_SCREEN
while True:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
mouse_pos = pygame.mouse.get_pos()
mouse_pressed = pygame.mouse.get_pressed()
clock.tick(FPS)
if ( current_screen == START_SCREEN ):
pass
# TODO paint start screen
# TODO handle start screen events
elif ( current_screen == GAME_SCREEN ):
pass
# TODO paint game screen
# TODO handle game screen events
此框架允许您通过设置 current_screen
变量在应用程序的“状态”之间切换。但关键是 总是 处理事件队列,无论 current_screen
.