1. Ты хочешь проверить, что произошло событие выхода (event.type == pygame.QUIT), а вместо этого вызываешь функцию pygame.quit(), которая выходит из твоей программы.
2. Ты хочешь присвоить (=) переменной gameon значение False, а вместо этого, просто делаешь сравнение (==)
Исправленный вариант:
[ссылка заблокирована по решению администрации проекта]3. Тебе на самом деле не нужна переменная gameon, можно просто сделать бесконечный цикл, и выходить из него при получении эвента.
Почищенный вариант:
[ссылка заблокирована по решению администрации проекта]
###########values########
pygame.init()
winx = 1200
winy =750
gameon = True
heroex = 50
heroey = 50
weight = 40
height = 40
speed = 5
win= pygame.display.set_mode((winx,winy))
pygame.display.set_caption("Game")
#pygame.mouse.get_pos(heroex, heroey)
#######main########
while gameon:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.quit():
gameon == False