Как сделать игру города на python
Перейти к содержимому

Как сделать игру города на python

  • автор:

Игра в города, что делать?

У меня вопрос, тут либо я что-то делаю не так имея верное решение проблемы, либо решение проблемы неверное(в таком случае пожалуйста дайте верное) Пропарсил сайт со списком городов, взял список всех городов от А до Я, нужно чтобы программа рандомно выдавала город, заканчивающийся на ту букву города, который я назвал. Вот что я нашёл в интернете и подстроил под себя: if f.endswith(‘в’): res = list(filter(lambda x: x.startswith(‘В’),data_2)) переменная data_2 делает список методом split из переменной data, а f — инпут. Верно ли это решение, и что нужно принтовать? (пробовал принтовать data_2, выдавало список городов на букву А, потом на букву Б, а после вообще список городов на букву Ю)

Отслеживать

13.8k 12 12 золотых знаков 44 44 серебряных знака 77 77 бронзовых знаков

Игра Города¶

Игра начинается с того что один из игроков называет город и следующему игроку нужно назвать город, который будет начинаться на последнюю букву предыдущего:

- Новосибирск - Кемерово - Оренбург 

Задание¶

  1. Реализовать версию, в которой будет возможность вводить любые слова и будет проверка на совпадение первой и последней буквы
  2. Сделать так чтобы можно было вводить слова в любом регистре
  3. Добавить проверку на существование города, который введёт пользователь
  4. Сделать чтобы города не могли повторяться
  5. Добавить графический интерфейс с помощью библиотеки easygui
  6. Добавить возможность играть с компьютером. Для этого потребуется библиотека random и функция choice Модули с подготовленными списками городов:
    • cities_cpu_win.py
    • cities_loop.py
    • cities_player_win.py
    • cities.py

© Copyright Revision d00c0df4 .

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest

Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

edwlad / game-sity Public

License

edwlad/game-sity

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Go to file

Folders and files

Last commit message
Last commit date

Latest commit

History

View all files

Repository files navigation

Игра города

Введение

Требования

  1. В проекте должно быть 2 режима игры: с другом и с компьютером. Программа вначале спрашивает: «Как играем, с другом или с компьютером?«. Возможные ответы «С другом» или «С компьютером«. При игре с компьютером, компьютер называет слова по списку с сайта города России, т.е. первое найденное слово по алфавиту. Первым город называет игрок или игрок 1.
  2. Программа предлагает ввести имя Игроков если играем с другом, выводя сообщения «Введите имя первого игрока:«, затем выводя сообщение «Введите имя второго игрока:» или имя 1 игрока, выводя сообщение «Введите имя игрока:«, если играем с компьютером.
  3. Программа позволяет сделать 3 ошибки за попытку и выводит сообщение «Уже назвали«, если город уже был назван или «Неверный город» если вводится неверный город. В случае выполнения обоих условий, ошибка «Уже называли» имеет больший приоритет. После этого выводит «Конец игры» и сообщение «Победил .» или «Победил компьютер.» на разных строках.
  4. Если город заканчивается на «ц«, «ы«, «ь«, то называется город на предпоследнюю букву.
  5. Программа выводит сообщение «Победил .» или «Победил компьютер.«, если игрок вводит пустую строку или если больше нет городов на данную букву.

Пожелания для реализации

  1. (Не реализовано) Добавить игру компьютер против компьютера.

Не соответствие проверки техзаданию

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

Чтобы компьютер отвечал сам (как по техзаданию), надо изменить строку
if gamer[idx] == ‘-компьютер’: на
if gamer[idx] == ‘компьютер’: (убрать «-«).

Примеры

Sample Input 1:
С компьютером
Лев
Армавир
Раменское
Елец

Sample Output 1:
Как играем, с другом или с компьютером?
Введите имя игрока:
Победил Лев.

Sample Input 2:
С компьютером
Лев
Майкоп
Пермь
Москва
Абакан
Ноябрьск
Кстово

Sample Output 2:
Как играем, с другом или с компьютером?
Введите имя игрока:
Победил компьютер.

ПРОГРАММИРОВАНИЕ PYTHON игра «Города»

while(a in dob):
i+=1
if (i%2==1):
a = str(input())
if posl1==a[0]:
print(‘used — ‘,a)
dob.add(a)
posl = a[-1]
if posl == ‘ь’: posl = a[-2]
posl = posl.title()
else:
print(‘Не та буква!’)
else:
if a in spic_town:
for b in spic_town.difference(dob):
if posl==b[0]:
print(‘bot — ‘,b)
dob.add(b)
posl1 = b[-1]
if posl1 == ‘ь’: posl1 = b[-2]
posl1 = posl1.title()
break
else:
print(‘Нет такого города!’)

runner()
_______________________________________________________________________
Написал программу на Python ‘Города’
Вопросы:
1) Как организовать вывод сообщения что победа (игрока или компьютера)
2) Как сделать так, чтобы если город повторяется, то программа выводила соответствующее сообщение?

Голосование за лучший ответ
Советую сходить на гит хаб, тк тут вряд ли много программистов сидят.

>>> Как сделать так, чтобы если город повторяется, то программа выводила соответствующее сообщение?
___
Никаких «городов» никогда писать не пробовал, но тут видимо ответ прост. Если город один раз назван — либо удалять его из массива либо наоборот заносить в какой-то специальный массив. И при каждом ответе проверять — есть/нет в массиве такой город? В зависимости от этого выводить сообщение

Я сильно не вникал в идею, но если «битва» идет за то, кто больше угадал городов — заведи 2 массива любого вида — 1 для человека, 1 для компьютера и заноси туда каждый новый угаданный город. У кого по итогу элементов массива окажется больше — тот и выиграл.

Проверить на уже угаданный город можно тупо методами count или find.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *