Я немного переработал алгоритм работы урока 7.На самом деле этот переработанный алгоритм не является идеальным и совершенным,но по крайней мере игрок может чаще попадать в состояние успеха.Предыдущая версия алгоритма не давала шанса выиграть игроку у компьютера в подавляющем большинстве случаев.Я также добавил вывод количество попаданий и промахов.Теперь в алгоритме обратная тенденция - компьютер в подавляющем большинстве случаев проигрывает игроку!
import pygame
import random
pygame.font.init()
sc = pygame.display.set_mode((700, 500))
f1 = pygame.font.Font(None, 36)
text1 = f1.render('Какое число загадал компьютер от 1 до 5?', 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 = 0
user_number = 0
counter_1 = 0
counter_2 = 0
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
user_number = 1
inputtext = f1.render("пользователь ввел число 1", False,(0, 180, 0))
if event.key == pygame.K_2:
user_number = 2
inputtext = f1.render("пользователь ввел число 2", False,(0, 180, 0))
if event.key == pygame.K_3:
user_number = 3
inputtext = f1.render("пользователь ввел число 3", False,(0, 180, 0))
if event.key == pygame.K_4:
user_number = 4
inputtext = f1.render("пользователь ввел число 4", False,(0, 180, 0))
if event.key == pygame.K_5:
user_number = 5
inputtext = f1.render("пользователь ввел число 5", False,(0, 180, 0))
if event.key == pygame.K_RETURN:
computer_number = random.randint(1,5)
direction = random.randint(0,1)
if (direction == 0):
if (computer_number >=1 or computer_number <=3):
computer_number = user_number
if (direction == 1):
if (computer_number >=3 or computer_number <=5):
computer_number = user_number
if (user_number == computer_number):
counter_1 = counter_1 + 1
text3 = f1.render("Правильно!", False,(0, 180, 0))
text4 = f1.render("Количество попаданий "+str(counter_1), False,(0, 180, 0))
else:
counter_2 = counter_2 + 1
text3 = f1.render("Неправильно!", False,(0, 180, 0))
text5 = f1.render("Количество промахов "+str(counter_2), False,(0, 180, 0))
text2 = f1.render('Компьютер загадал число '+str(computer_number), True,(180, 0, 0))
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))
sc.blit(text4, (10, 350))
sc.blit(text5, (10, 400))
pygame.display.update()
Понятно,что можно доработать алгоритм так,что игрок и компьютер будут обладать почти равноправными возможностями.Хотя исключить полностью ввод пользователя невозможно,ибо человек - непредсказумое существо в отличие от компьютера,который функционирует в соответствие с аппаратной начинкой.Надо признать,что этот алгоритм всё же еще не является играбельным,как мне показало его тестировании.Так что поиск хорошего алгоритма применительно к этой задаче мной еще ведется и возможно я его найду.
|