我一直在研究 Python 3.1 和 PyGame 2.7 中的简单主菜单。当鼠标光标在某个区域内时,屏幕上的文本应变为白色。我正在使用功能来blit屏幕。第一个函数正常地对主菜单进行 blit,另外两个函数在菜单中突出显示一些文本。以下是功能:
def draw_main_menu(): #draw main menu normally
screen.fill(BLACK) #clears screen
#set up text
new_text = menu_font.render('NEW GAME', 1, (100, 100, 100))
load_text = menu_font.render('LOAD GAME', 1, (100, 100, 100))
options_text = menu_font.render('OPTIONS', 1, (100, 100, 100))
quit_text = menu_font.render('QUIT', 1, (100, 100, 100))
#blit text
screen.blit(new_text, (340, 425))
screen.blit(load_text, (335, 455))
screen.blit(options_text, (350, 485))
screen.blit(quit_text, (373, 515))
def draw_main_menu_ng(): #draw main menu with new game text in white
screen.fill(BLACK)
new_text = menu_font.render('NEW GAME', 1, (255, 255, 255))
load_text = menu_font.render('LOAD GAME', 1, (100, 100, 100))
options_text = menu_font.render('OPTIONS', 1, (100, 100, 100))
quit_text = menu_font.render('QUIT', 1, (100, 100, 100))
screen.blit(new_text, (340, 425))
screen.blit(load_text, (335, 455))
screen.blit(options_text, (350, 485))
screen.blit(quit_text, (373, 515))
def draw_main_menu_lg(): #draw main menu with load game text in white
screen.fill(BLACK)
new_text = menu_font.render('NEW GAME', 1, (100, 100, 100))
load_text = menu_font.render('LOAD GAME', 1, (255, 255, 255))
options_text = menu_font.render('OPTIONS', 1, (100, 100, 100))
quit_text = menu_font.render('QUIT', 1, (100, 100, 100))
screen.blit(new_text, (340, 425))
screen.blit(load_text, (335, 455))
screen.blit(options_text, (350, 485))
screen.blit(quit_text, (373, 515))
下面,我使用变量 x 和 y 来检查鼠标是否悬停在按钮上。第一组两个数字是 x 坐标的范围,第二组两个数字是 y 坐标的范围。
x,y = pygame.mouse.get_pos()
#set up new game mouse positions
if x >= 340 and x <= 465:
new_game_x_pos = True
if x < 340 or x > 465:
new_game_x_pos = False
if y >= 425 and y <= 445:
new_game_y_pos = True
if y < 425 or y > 445:
new_game_y_pos = False
if new_game_x_pos == True and new_game_y_pos == True:
draw_main_menu_ng()
if new_game_x_pos == False or new_game_y_pos == False:
draw_main_menu()
#set up load game mouse positions
if x >= 335 and x <= 470:
load_game_x_pos = True
if x < 335 or x > 470:
load_game_x_pos = False
if y >= 455 and y <= 475:
load_game_y_pos = True
if y < 455 or y > 475:
load_game_y_pos = False
if load_game_x_pos == True and load_game_y_pos == True:
draw_main_menu_lg()
if load_game_x_pos == False or load_game_y_pos == False:
draw_main_menu()
出于某种原因,当鼠标悬停在“新游戏”上时,它不会改变颜色。当鼠标悬停在“加载游戏”上时,它会改变颜色。在我添加加载游戏的东西之前,它会改变颜色,但现在只有加载游戏会。关于为什么它不起作用的任何想法?
顺便说一句,我在游戏循环中确实有更新屏幕的代码。我也有设置字体的代码。