Что не так с моим кодом?

sound--

Новичок
Пользователь
Май 23, 2023
1
0
1
Я новичок в пайтоне, но не смотря на это меня попросили сделать игру викторину для класса на нем, на кону моя оценка по информатике. Я попытался что-то написать, и, вроде, даже что-то вышло, но я столкнулся с 2 проблемами, которые не могу решить уже на протяжении дня.
1)Не работает кнопка enter
2)Не работает крестик
Возможно в коде еще есть ошибки, был бы рад узнать о них и о их решении.
Код:
import pygame, sys
import random

#Изначально хотел сделать отдельное окно, но решил не морочиться и сделать фуллскрин, не знаю как лучше.
WIDTH = 1280
HEIGHT = 1024
FPS = 30

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (50, 50, 50)

pygame.init()

screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
pygame.display.set_caption("manta")

font = pygame.font.Font(None, 30)
font_question = pygame.font.Font(

None, 40)
#Вопросы позже сменю
questions = [("Какой цвет у банана?", "Желтый"), ("Сколько секунд в часе?", "3600"), ("Сколько дней в неделе?", "7"))]

def display_question(question):
question_text = font_question.render(question[0], True, BLACK)
answer_text = font.render("Введите ответ и нажмите Enter:", True, BLACK)
screen.blit(question_text, (10, 50))
screen.blit(answer_text, (10, 150))

def check_answer(answer, correct_answer):
if answer.lower() == correct_answer.lower():
return True
else:
return False

def game_loop():
score = 0
random.shuffle(questions)
for question in questions:
display_question(question)
answer = ''
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
if check_answer(answer, question[1]):
score += 1
break
else:
break
elif event.key == pygame.K_BACKSPACE:
answer = answer[:-1]
else:
answer += event.unicode
screen.fill(WHITE)
display_question(question)
answer_text = font.render(answer, True, BLACK)
screen.blit(answer_text, (10, 200))
pygame.display.update()
pygame.time.Clock().tick(FPS)
game_over(score)

def game_over(score):
screen.fill(WHITE)
game_over_text = font.render("Игра завершена! Ваш счет: " + str(score), True, BLACK)
screen.blit(game_over_text, (10, 50))
pygame.display.update()
pygame.time.delay(3000)
pygame.quit()

game_loop()

pygame.quit()
sys.exit()
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
370
107
43
Свой код нужно вставлять сюда как код (через кнопку </>), соблюдая отсупы.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Я новичок в пайтоне, но не смотря на это меня попросили сделать игру викторину для класса на нем, на кону моя оценка по информатике. Я попытался что-то написать, и, вроде, даже что-то вышло, но я столкнулся с 2 проблемами, которые не могу решить уже на протяжении дня.
1)Не работает кнопка enter
2)Не работает крестик
Возможно в коде еще есть ошибки, был бы рад узнать о них и о их решении.
Код:
import pygame, sys
import random

#Изначально хотел сделать отдельное окно, но решил не морочиться и сделать фуллскрин, не знаю как лучше.
WIDTH = 1280
HEIGHT = 1024
FPS = 30

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (50, 50, 50)

pygame.init()

screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
pygame.display.set_caption("manta")

font = pygame.font.Font(None, 30)
font_question = pygame.font.Font(

None, 40)
#Вопросы позже сменю
questions = [("Какой цвет у банана?", "Желтый"), ("Сколько секунд в часе?", "3600"), ("Сколько дней в неделе?", "7"))]

def display_question(question):
question_text = font_question.render(question[0], True, BLACK)
answer_text = font.render("Введите ответ и нажмите Enter:", True, BLACK)
screen.blit(question_text, (10, 50))
screen.blit(answer_text, (10, 150))

def check_answer(answer, correct_answer):
if answer.lower() == correct_answer.lower():
return True
else:
return False

def game_loop():
score = 0
random.shuffle(questions)
for question in questions:
display_question(question)
answer = ''
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
if check_answer(answer, question[1]):
score += 1
break
else:
break
elif event.key == pygame.K_BACKSPACE:
answer = answer[:-1]
else:
answer += event.unicode
screen.fill(WHITE)
display_question(question)
answer_text = font.render(answer, True, BLACK)
screen.blit(answer_text, (10, 200))
pygame.display.update()
pygame.time.Clock().tick(FPS)
game_over(score)

def game_over(score):
screen.fill(WHITE)
game_over_text = font.render("Игра завершена! Ваш счет: " + str(score), True, BLACK)
screen.blit(game_over_text, (10, 50))
pygame.display.update()
pygame.time.delay(3000)
pygame.quit()

game_loop()

pygame.quit()
sys.exit()
 

Форум IT Специалистов