Перемещение по меню можно реализовать несколькими способами, информация с сайта
programmingnew.my1.ru/blog
1) как было указано выше в строке отображения текстовой информации вводят активный и не активный цвет, а активация цвета цвета при проверке положения курсора мышки. Пример кода:
class Menu:
def __init__(self,punkt=[120,140,u'Punkt',(250,25,250),(250,250,25),0]):
self.punkts=punkts
self.ppunkts=ppunkts
def render(self,poverhnost,font,num_punkt):# подсветка активного пункта
for i in self.punkts:
if num_punkt == i[5]:
poverhnost.blit(font.render(i[2],1,i[4]),(i[0],i[1]))
else:
poverhnost.blit(font.render(i[2],1,i[3]),(i[0],i[1]))
def menu(self):
done = True
font_menu = pygame.font.Font(None,50) # определяем шрифт
pygame.key.set_repeat(0,0) # отключение залипания кнопок
pygame.mouse.set_visible(True) # курсор мышки видим
punkt = 0
while done:
screen.fill((0,100,200)) # закраска игрового поля(экрана меню)
# наведение курсора на пункт меню
# проверка событий мышь
mp = pygame.mouse.get_pos() # получаем координаты курсора [0]-x, [1]-y
for i in self.punkts:
if mp[0]>i[0] and mp[0]
i[1] and mp[1]0:
punkt-=1
if e.key == pygame.K_DOWN:
if punkt< len(self.punkts)-1:
punkt +=1
if e.key == pygame.K_SPACE:# активация пункта меню клавишей пробел
if punkt == 0:
done = False
if punkt == 1:
sys.exit()
if punkt == 2:
men(im1,b)
if e.type == pygame.MOUSEBUTTONDOWN and e.button ==1:
if punkt == 0:
done = False
if punkt == 1:
sys.exit()
if punkt == 2:
men(im1,b)
screen.blit(im1,(240,140))
window.blit(screen,(0,30)) # прорисовка на окне экрана для меню
pygame.display.flip() # всё отобразить
2) С помощью прямоугольников связываем пункт меню с событием, причем перемещение по пунктам визуально отображается изменением цвета пункта или появлением активирующей картинки. Код для пунктов меню : https://www.youtube.com/watch?v=r_IkOU9PEXA