Я новичок в пайтоне, но не смотря на это меня попросили сделать игру викторину для класса на нем, на кону моя оценка по информатике. Я попытался что-то написать, и, вроде, даже что-то вышло, но я столкнулся с 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()
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()