Конечно создание угадайки - это довольно простое задание.Но в данном уроке используется несколько преобразований из строки в число и из числа в строку.Также реализовано принятие только числовых данных от пользователя.Таким образом создано играбельное игровое приложение.Естественно оно не очень затягивает на долгое время,но является работоспособным вариантом идеи,знакомой всем игроделам.
Данная программа считывает от пользователя только ввод цифр.Если ввести с клавиатуры что-то отличное от цифр,то этот ввод отбрасывается.Функция pygame.key.name возвращает идентификатор нажатой клавиши,для цифры в pygame этот идентификатор является строкой,которую легко преобразовать в её числовой эквивалент.
import pygame
import random
pygame.init()
sc = pygame.display.set_mode((700, 500))
f1 = pygame.font.Font(None, 36)
text1 = f1.render('Какое число загадал компьютер от 1 до 100?', True,(180, 0, 0))
text2 = f1.render('Компьютер еще не загадал число', True,(180, 0, 0))
inputtext = f1.render("пользователь еще не вводил числа", False,(0, 180, 0))
text3 = f1.render("", False,(0, 180, 0))
text4 = f1.render("", False,(0, 180, 0))
text5 = f1.render("", False,(0, 180, 0))
computer_number = random.randint(1,100)
print(computer_number)
user_number = ""
user_num_enter = 0
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN:
key=pygame.key.name(event.key)
if (key.isdigit()):
user_number += str(key)
inputtext = f1.render("пользователь ввёл число "+str(user_number), False,(0, 180, 0))
if event.key == pygame.K_RETURN:
if (len(user_number) > 0):
user_num_enter = int(user_number)
user_number = ""
if (user_num_enter > computer_number):
text3 = f1.render("Число игрока больше", False,(0, 180, 0))
if (user_num_enter < computer_number):
text3 = f1.render("Число игрока меньше", False,(0, 180, 0))
if (user_num_enter == computer_number):
text2 = f1.render('Компьютер загадал число '+str(computer_number), True,(180, 0, 0))
text3 = f1.render("Вы угадали число", False,(0, 180, 0))
computer_number = random.randint(1,100)
print(computer_number)
sc.fill((255, 255, 255))
sc.blit(text1, (10, 50))
sc.blit(text2, (10, 150))
sc.blit(text3, (10, 200))
sc.blit(inputtext, (10,300))
pygame.display.update()
|