Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/163: Рейтинг темы: голосов - 163, средняя оценка - 4.87
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31

Написание игры "Виселица"

05.07.2018, 18:35. Показов 30045. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import random
words= '''аист акула бабуин баран барсук бобр бык варан верблюд волк вомбат воробей ворон выдра
голубь гусь додо дятел енот ехидна еж жаба жираф журавль заяц зебра землеройка зяблик
игуана кабан казуар кайман какаду кальмар камбала канарейка каракатица карп кенгуру
киви кит лама ламантин ласка ласточка лебедь лев лемур ленивец леопард лиса лягушка
мотылек муравьед муравей мангуст медведь морж муха мышь медуза нарвал носорог орел омар олень овцебык
осьминог орел осел оса овца опоссум обезьяна паук пескарь пингвин пиранья попугай
пчела рысь рыба росомаха страус сурок стрекоза сорока сова снегирь сокол собака слон
слон скорпион скворец скат сельдь свинья сурикат скунс слизень светлячок тюлень тукан тигр
трясогуска термит тетерев тунец тритон тарантул таракан тля утконос уж устрица улитка угорь фазан фламинго
форель хорек хомяк хамелеон цапля цесарка цикада черепаха червь чайка шимпанзе шиншилла
щука эму ящерица ястреб як ягуар'''.split()
attempt=0
def chosing():
    s_w=words[random.randint(0,len(words))]
    dead_people=['1','2','3','4','5','6']
    print(s_w)
    return s_w
def intro():
    k=''
    print('тема-"животные"')
    for i in range(len(chosing())):
        k=k+'_'+' '
    print(k)
    return k
def step():
    print('введи букву:',end='')
    letter=input()
    while letter not in 'абвгдеёжзиклмнопрстуфхцчшщъыьэюя':
        letter=input('введи букву ')
    if letter in chosing():
        for i in range(len(chosing())):
            if chosing()[i]==letter:
                intro()[i]=letter
        print(intro())
    elif letter not in chosing():
        print('не угадал(')
chosing()
intro()
step()
пытался написать игру 'виселица' . при проверке данного фрагмента кода выдает:
дятел
тема-"животные"
лемур
_ _ _ _ _
введи букву:д
тукан
хамелеон
не угадал(. зачем он несколько раз выписывает животных? буду очень благодарен
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2018, 18:35
Ответы с готовыми решениями:

Написание игры "виселица" или любой другой не сложной игры
нужна помощь в написании игры "виселица" или любой другой не сложной игры на с# по сети

код игры виселица
нужно составить программу виселицы к слову морковь Добавлено через 1 час 26 минут слово нужно брать из файла который находится на...

Слова для игры Виселица
Делаю игру "Виселица", всё уже готово, но не могу найти словари со словами для неё. Составлять самому базы, где в каждой минимум сто слов...

9
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.07.2018, 11:10
Используйте теги форматирования кода.
0
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31
09.07.2018, 16:27  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Используйте теги форматирования кода.
Слово определяется только 1 раз в 15 строке. Но зачем он выполняет блок chosing() несколько раз? Блок же должен выполняться только в 38 строке(1 раз).
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
09.07.2018, 16:39
Цитата Сообщение от chdanil Посмотреть сообщение
Слово определяется только 1 раз в 15 строке. Но зачем он выполняет блок chosing() несколько раз? Блок же должен выполняться только в 38 строке(1 раз).
Возьмите лучше нормальный код

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import random
 
words = ["аист", "акула", "бабуин", "баран", "барсук", "бобр", "бык", "варан", "верблюд", "волк", "вомбат", "воробей", "ворон", "выдра",
"голубь", "гусь", "додо", "дятел", "енот", "ехидна", "еж", "жаба", "жираф", "журавль", "заяц", "зебра", "землеройка", "зяблик",
"игуана", "кабан", "казуар", "кайман", "какаду", "кальмар", "камбала", "канарейка", "каракатица", "карп", "кенгуру",
"киви", "кит", "лама", "ламантин", "ласка", "ласточка", "лебедь", "лев", "лемур", "ленивец", "леопард", "лиса", "лягушка",
"мотылек", "муравьед", "муравей", "мангуст", "медведь", "морж", "муха", "мышь", "медуза", "нарвал", "носорог", "орел", "омар", "олень", "овцебык",
"осьминог", "орел", "осел", "оса", "овца", "опоссум", "обезьяна", "паук", "пескарь", "пингвин", "пиранья", "попугай",
"пчела", "рысь", "рыба", "росомаха", "страус", "сурок", "стрекоза", "сорока", "сова", "снегирь", "сокол", "собака", "слон",
"слон", "скорпион", "скворец", "скат", "сельдь", "свинья", "сурикат", "скунс", "слизень", "светлячок", "тюлень", "тукан", "тигр",
"трясогуска", "термит", "тетерев", "тунец", "тритон", "тарантул", "таракан", "тля", "утконос", "уж", "устрица", "улитка", "угорь", "фазан", "фламинго",
"форель", "хорек", "хомяк", "хамелеон", "цапля", "цесарка", "цикада", "черепаха", "червь", "чайка", "шимпанзе", "шиншилла",
"щука", "эму", "ящерица", "ястреб", "як", "ягуар"]
word=words[random.randrange(5)]
len_word=len(word)
health = 10
test=False
used_letters=""
win_word=[]
# заполнение массива для слова в игре
for i in range(len(word)):
    win_word+="_"
 
while len_word != 0 and health != 0:
    test = False
    # ввод буквы и проверка на повтор
    while True:
        letter = input("\nвведите букву ")
        if letter in used_letters or len(letter)>1:
            print("\nНе больше одного символа, попробуйте снова!")
        else:
            used_letters+=letter
            break
    count=0
    for i in word:
        if letter in i:
            len_word -= 1
            test=True
            win_word[count]=letter
        count+=1
 
 
 
    if not test:
        health -= 1
        print("Неверно")
    else:
        print("Верно")
        print(win_word)
 
    print("Ваше здоровье = ", health)
 
if(len_word == 0):
    print("\nПОБЕДИТЕЛЬ!!! Слово было", word.upper())
else:
    print("\nВЫ ПРОИГРАЛИ! ПОПРОБУЙТЕ СНОВА!")
1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
09.07.2018, 17:28
Цитата Сообщение от chdanil Посмотреть сообщение
Но зачем он выполняет блок chosing() несколько раз?
Ну я не знаю, но вот тут видно, что оно вызывается в цикле:
Цитата Сообщение от chdanil Посмотреть сообщение
Python
1
2
    if letter in chosing(): 
        for i in range(len(chosing())):
1
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31
11.07.2018, 21:49  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ну я не знаю, но вот тут видно, что оно вызывается в цикле:
странно, вроде же не вызывается

Добавлено через 3 минуты
Цитата Сообщение от ТабуретY Посмотреть сообщение
Возьмите лучше нормальный код

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import random
 
words = ["аист", "акула", "бабуин", "баран", "барсук", "бобр", "бык", "варан", "верблюд", "волк", "вомбат", "воробей", "ворон", "выдра",
"голубь", "гусь", "додо", "дятел", "енот", "ехидна", "еж", "жаба", "жираф", "журавль", "заяц", "зебра", "землеройка", "зяблик",
"игуана", "кабан", "казуар", "кайман", "какаду", "кальмар", "камбала", "канарейка", "каракатица", "карп", "кенгуру",
"киви", "кит", "лама", "ламантин", "ласка", "ласточка", "лебедь", "лев", "лемур", "ленивец", "леопард", "лиса", "лягушка",
"мотылек", "муравьед", "муравей", "мангуст", "медведь", "морж", "муха", "мышь", "медуза", "нарвал", "носорог", "орел", "омар", "олень", "овцебык",
"осьминог", "орел", "осел", "оса", "овца", "опоссум", "обезьяна", "паук", "пескарь", "пингвин", "пиранья", "попугай",
"пчела", "рысь", "рыба", "росомаха", "страус", "сурок", "стрекоза", "сорока", "сова", "снегирь", "сокол", "собака", "слон",
"слон", "скорпион", "скворец", "скат", "сельдь", "свинья", "сурикат", "скунс", "слизень", "светлячок", "тюлень", "тукан", "тигр",
"трясогуска", "термит", "тетерев", "тунец", "тритон", "тарантул", "таракан", "тля", "утконос", "уж", "устрица", "улитка", "угорь", "фазан", "фламинго",
"форель", "хорек", "хомяк", "хамелеон", "цапля", "цесарка", "цикада", "черепаха", "червь", "чайка", "шимпанзе", "шиншилла",
"щука", "эму", "ящерица", "ястреб", "як", "ягуар"]
word=words[random.randrange(5)]
len_word=len(word)
health = 10
test=False
used_letters=""
win_word=[]
# заполнение массива для слова в игре
for i in range(len(word)):
    win_word+="_"
 
while len_word != 0 and health != 0:
    test = False
    # ввод буквы и проверка на повтор
    while True:
        letter = input("\nвведите букву ")
        if letter in used_letters or len(letter)>1:
            print("\nНе больше одного символа, попробуйте снова!")
        else:
            used_letters+=letter
            break
    count=0
    for i in word:
        if letter in i:
            len_word -= 1
            test=True
            win_word[count]=letter
        count+=1
 
 
 
    if not test:
        health -= 1
        print("Неверно")
    else:
        print("Верно")
        print(win_word)
 
    print("Ваше здоровье = ", health)
 
if(len_word == 0):
    print("\nПОБЕДИТЕЛЬ!!! Слово было", word.upper())
else:
    print("\nВЫ ПРОИГРАЛИ! ПОПРОБУЙТЕ СНОВА!")
Подобная ошибка у меня уже не первый раз. Я новичок. Хочу разобраться,а не отступить.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
12.07.2018, 11:18
chdanil, в новом варианте не вызывается, да.
0
 Аватар для chdanil
2 / 1 / 1
Регистрация: 20.06.2018
Сообщений: 31
12.07.2018, 13:59  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ну я не знаю, но вот тут видно, что оно вызывается в цикле:
Я попробовал вообще убрать блок, содержащий данный фрагмент кода. Ошибка остается.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
12.07.2018, 14:02
chdanil, ну не знаю, тут разбираться надо. Отладку пробовали?
0
9 / 9 / 3
Регистрация: 05.01.2016
Сообщений: 17
12.07.2018, 17:42
Лучший ответ Сообщение было отмечено chdanil как решение

Решение

Цитата Сообщение от chdanil Посмотреть сообщение
странно, вроде же не вызывается
Цитата Сообщение от chdanil Посмотреть сообщение
Слово определяется только 1 раз в 15 строке. Но зачем он выполняет блок chosing() несколько раз? Блок же должен выполняться только в 38 строке(1 раз).
У вас слово определяется несколько раз, т.к. функция chosing вызывается несколько раз из разных мест. Сами посмотрите:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import random
words= '''аист акула бабуин баран барсук бобр бык варан верблюд волк вомбат воробей ворон выдра
голубь гусь додо дятел енот ехидна еж жаба жираф журавль заяц зебра землеройка зяблик
игуана кабан казуар кайман какаду кальмар камбала канарейка каракатица карп кенгуру
киви кит лама ламантин ласка ласточка лебедь лев лемур ленивец леопард лиса лягушка
мотылек муравьед муравей мангуст медведь морж муха мышь медуза нарвал носорог орел омар олень овцебык
осьминог орел осел оса овца опоссум обезьяна паук пескарь пингвин пиранья попугай
пчела рысь рыба росомаха страус сурок стрекоза сорока сова снегирь сокол собака слон
слон скорпион скворец скат сельдь свинья сурикат скунс слизень светлячок тюлень тукан тигр
трясогуска термит тетерев тунец тритон тарантул таракан тля утконос уж устрица улитка угорь фазан фламинго
форель хорек хомяк хамелеон цапля цесарка цикада черепаха червь чайка шимпанзе шиншилла
щука эму ящерица ястреб як ягуар'''.split()
attempt=0
def chosing():
    s_w=words[random.randint(0,len(words))]
    dead_people=['1','2','3','4','5','6']
    print("Вызвано из chosing")
    print(s_w)
    return s_w
def intro():
    k=''
    print('тема-"животные"')
    for i in range(len(chosing())):
        print("Вызвано из intro")
        k=k+'_'+' '
    print(k)
    return k
def step():
    print('введи букву:',end='')
    letter=input()
    while letter not in 'абвгдеёжзиклмнопрстуфхцчшщъыьэюя':
        letter=input('введи букву ')
    if letter in chosing():
        print("Вызвано из step")
        for i in range(len(chosing())):
            if chosing()[i]==letter:
                intro()[i]=letter
        print(intro())
    elif letter not in chosing():
        print('не угадал(')    
chosing()
intro()
step()
Запускаем:

Вызвано из chosing
ласка
тема-"животные"
Вызвано из chosing
пингвин
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
_ _ _ _ _ _ _
введи букву:а
Вызвано из chosing
жираф
Вызвано из step
Вызвано из chosing
муравей
Вызвано из chosing
лемур
Вызвано из chosing
бабуин
тема-"животные"
Вызвано из chosing
рысь
Вызвано из intro
Вызвано из intro
Вызвано из intro
Вызвано из intro
_ _ _ _

Разберетесь что к чему? И вызов chosing на 38й строке зачем, если эта функция потом снова из intro вызывается? Слово то потом снова переопределяется.

Добавлено через 10 минут
Каждый раз, когда у вас написано chosing(), функция выбирает новое слово и снова его пишет. Вы не сохраняете результат первого вызова функции в переменной, которую потом можно использовать дальше, а просто снова и снова вызываете функцию, которая снова и снова выбирает новое слово. Написали одну букву, а слово уже изменилось.
П.С. Не успел добавить к оригинальному посту.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2018, 17:42
Помогаю со студенческими работами здесь

Создание меню игры виселица
Нужно создать меню выбора тем и сложности для игры виселица 1 форма - позволяет выбрать тему(по типу "животные",...

Создайте консольную версию игры «Виселица»
Народ прошу помогите я с другими лабами к пятнице не успеваю а это самое сложное. Решил попросить потому что уже в отчаяни. Создайте...

Как лучше реализовать графику для игры "Виселица"?
Есть игра "Виселица", написанная на С++, нужно реализовать графику. Но как лучше это сделать и что для этого использовать? Нельзя...

Рисование в image по частям для игры "Виселица"
нужно написать виселицу. проблем а в том, как выводить по очереди картинку и как это выглядит в с# кто знает помогите.

Проблемы с кодом игры "Виселица"
Этот код уже был в одной теме, но не доработан, вылезает ошибка... #pragma endregion char word; int strok; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru