Глава 23 · Ещё больше мини-проектов
Проект 23-3: Игра «Камень, ножницы, бумага»
Вся логика игры — один словарь: кто кого побеждает.
Проект 23-3: Игра «Камень, ножницы, бумага»
Классика! Вся логика игры умещается в одном словаре — кто кого побеждает:
logika_pobeditelya.py
POBEZHDAET = {
"камень": "ножницы",
"ножницы": "бумага",
"бумага": "камень",
}
def opredelit_pobeditelya(hod_igroka, hod_kompyutera):
if hod_igroka == hod_kompyutera:
return "ничья"
if POBEZHDAET[hod_igroka] == hod_kompyutera:
return "игрок"
return "компьютер"
Словарь вместо длинной цепочки if/elif
Можно было написать девять условий
if hod_igroka == "камень" and hod_kompyutera == "ножницы": ... — но словарь POBEZHDAET делает то же самое в трёх строчках и легко читается: «камень побеждает ножницы».Ход компьютера и полный раунд
raund.py
def hod_kompyutera():
return random.choice(VARIANTY)
def sygrat_raund(hod_igroka):
hod_pk = hod_kompyutera()
pobeditel = opredelit_pobeditelya(hod_igroka, hod_pk)
return hod_pk, pobeditel
Полный код (с меню и счётом): 📄 projects/console/rock-paper-scissors/rps.py
★★★ Задача повышенной сложности
Добавляем ящерицу и Спока
Реализуйте расширенную версию игры «Камень, ножницы, бумага, ящерица, Спок» — понадобится словарь POBEZHDAET с пятью ключами, каждый побеждает по два варианта.
Практика в Jupyter Notebook
23-03-kamen-nozhnicy-bumaga.ipynb · все 9 комбинаций и симуляция раундов