Программаприветствуетигрока




Написание игры Анаграммы

В игре «Анаграммы» применяются многие из тех понятий программирования, которые мы успели пройти.Эта игра - воссоздание типичной головоломки на перестановку букв, одной из тех, какие в прошлом веке можно было встретить в воскресных газетах (тех самых, которые публика читала, пока не появился Интернет). Компьютер случайным образом выбирает из группы слов одно, переставляет его буквы тоже в случайном порядке и предъявляет игроку. Задача человека - восстановить исходное слово.

 

Настройка программы

 

После нескольких начальных комментариев загружается модуль random. Он нужен для работы со случайными числами.

 

# АнаrраммыCWordJumЬle)

#

# Компьютер выбирает какое-пибо слово и хаотически переставляет его буквы

# Задача иrрока - восстановить исходное слово

import random

 

После этого создаем кортеж, который будет содержать список слов. Заметьте, что название переменной WORDS набрано прописными буквами: далее в программе она рассматривается как константа (постоянное значение, не меняется в отличии от переменной).

 

#создадим последовательность слов. из которых компьютер будет выбирать WORDS =("питон". "анаграмма". "простая". "сложная","ответ","подстаканник")

 

Вслед за тем, чтобы выбрать из WORDS случайное слово, я применяем функцию random.choice():

 

# случайным образом выберем из последовательности одно слово word=random.choice(WORDS)

 

Это новая для вас функция, но по сути она очень проста. Интерпретатор берет какую-либо последовательность и извлекает из нее случайный элемент. После того как слово выбрано, оно помещается в переменную word. Это и будет слово, которое игроку придется отгадать. Наконец, значение word копируется в переменную correct. С ней мы позже сравним версию игрока, чтобы увидеть, прав он или нет:

# создадим переменную. с которой будет затем сопоставлена версия игрока correct=word

 

Как сформировать анаграмму

 

Следующий фрагмент кода - наиболее интересная часть программы как по замыслу,

так и по технической реализации. Здесь мы будем переставлять буквы в исходном,

случайно выбранном слове. Прежде чем начать кодировать, я продумал эту часть программы и записал на псевдокоде. Вот в первом приближении тот алгоритм, который создает анаграмму

из исходного слова:

 

 

создать пустую анаграмму

до тех пор пока исходное слово содержит хотя бы одну букву:

изъять из слова случайную букву

присоединить эту букву к анаграмме

 

По замыслу здесь все хорошо, но следует тщательнее поработать над семантикой.

Поскольку строки неизменяемы, изъять случайную букву из слова, строго

говоря, нельзя. Зато можно создать новую строку, в которой не будет этой буквы.

Точно так же нельзя присоединить букву к строке-анаграмме, но можно создать

новую строку, которая будет представлять собой конкатенацию анаграммы (в ее

текущем виде) и изъятой буквы.

 

Создание пустой строки для анаграммы

 

Начало алгоритма реализуется очень просто:

 

# создадим анаграмму выбранного слова. в которой буквы будут расставлены хаотично jumble='"'

 

Программа создает пустую строку и делает ее значением переменной jumble. Эта

переменная в конце концов, после всех преобразований будет ссылаться на анаграмму.

Настройка цикла

 

За создание анаграммы отвечает цикл while. Его условие, как видите, весьма тривиально:

 

while word:

 

Цикл организован таким образом, чтобы исполнение тела цикла продолжалосьдо тех пор, пока переменная word не окажется приравненной к пустой строке.Все верно: при каждом следующем исполнении цикла компьютер создает очереднуюверсию исходной строки - за вычетом одной из букв - и делает ее значениемпеременной word. В конце концов word окажется пустой строкой и цикл прервется.

 

Выбор случайной позиции в слове

 

Первая строка в теле цикла генерирует случайную позицию в слове, исходя из его длины:

 

position =random.randrange(len(word))

 

Буква word[position] и будет той буквой, которую мы «изымем~ из строки wordи присоединим к строке jumble.

 

Новая версия jumble

 

Следующая строка кода призвана создать обновленный вариант строки jumble.

К прежней строке присоединяется буква word[position].

 

jumble +=word[position]

 

Новая версия word

 

Далее в коде цикла:

 

word = word[:position] + word[(position + 1):]

 

создан обновленный вариант строки word, в которой теперь уже не будет содержаться

буква с индексом position. С помощью срезов компьютер извлекает из word две подстроки.

Первый срез - word[:position] - это все буквы с начала слова до word [position],

не включая ее. Второйcpeз - word[(position + 1):] - этовсебуквы oтword[position],

также не включая, и до конца слова. Конкатенацию этих двух строк мы делаем значением

переменной word, которая теперь равна самой себе за вычетом одной буквы -

word[position].

 

Программаприветствуетигрока

 

После того как буквы в слове будут переставлены, надо поприветствовать участника игры, объяснить ему правила и показать анаграмму, исходный вид которойон будет восстанавливать:

 

# начало игры print ("""Добро пожаловать в игру 'Анаграммы'!Надо переставить буквы так. чтобы получилось осмысленное слово.(Для выхода нажмите Enter. не вводя своей версии.)""") print ("Boт анаграмма: ",jumble)

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-01-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: