Пыха всегда с тобой

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 07:43:05

Страниц: [1] 2 3
Печать
Автор Тема: Первый Python скрипт - Игра о пыха.ру )  (Прочитано 557 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tartar    ↓ 
10 Декабрь, 2011, 01:55:45
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Здравствуйте!
 
Поставил себе Ubuntu было сразу установлен Python + книга на столе "Python самое необходимое"
и решил начать изучать данный язык.
 
Теорию нужнр прикрепить практикой и написал свою первую программу на Python
Всего лишь 5 вопросов на которых нужно ответить правильно чтобы выиграть игру (Вопросы о pyha.ru)
- Кто хочет дополнить вопросы, милости прошу редактируйте скрипт ))
 
Смысл темы: Нужна критика что я не так делаю и как можно было сделать лучше
 
Python
# -*- coding: utf-8 -*-
## Настройки вопросов
QuestionSettings = {
            1: {'name': 'Ник пользователя на пыха.ру с ID: 220', 'answer': ('Assessor'), 'point': 1},
            2: {'name': 'Куда обычно посылают новичков на пыхе? ', 'answer': ['нахуй', 'нах', 'гугл', 'google'], 'point': 2},
            3: {'name': 'Главный Пайтоно-дрочер на пыхе', 'answer': ['adw0rd', 'Эдво', 'эдво'], 'point': 2},
            4: {'name': 'Главный тролль на пыхе со времен существования форума', 'answer': ['дуд', 'phpdude', 'пхпдуд'], 'point': 1},
            5: {'name': 'Какому пользователю пыхи скоро исполнится 38?', 'answer': ['AlexB', 'alexb'], 'point': 3},
         };
 
Question = dict(QuestionSettings)
def StartGame():
    Nick = raw_input("Имя в игре: ")
    if bool(Nick) == True:
        Count = 0
        StartPoint = 0  # Стартовые баллы
        Correct = 0     # Правильные ответы
        Wrong = 0       # Неправильные ответы
        print " ============================"
        print "[   Simple Python Game v0.1  ]"
        print " ============================"
        enterGame = raw_input("Нажмите Y(д) или N(н) для подтверждения началы игры: ")
        if enterGame in ['N', 'n', 'н', 'Н']:
            print "Покинул игру..."
        else:
            print "\nВопросы:"
 
            for key in Question.keys():
                Count += 1;
                CreateQuestion = str(Count)+") "+Question[key]['name']+": "
                GiveQuestion = raw_input(CreateQuestion)
                if GiveQuestion not in Question[key]['answer']:
                    StartPoint -= Question[key]['point']
                    print "НЕправильный ответ!\nВы потеряли ", Question[key]['point'], " бал. сейчас у вас: ", StartPoint, "\n"
                    Wrong += 1
                else:
                    StartPoint += Question[key]['point']
                    print "ПРАВИЛЬНО!\nНакопили  +", Question[key]['point'], " бал. сейчас у вас: ", StartPoint, "\n"
                    Correct += 1
 
                if len(Question) == Count:
                    print "============================"
                    print "Вы вышли в финал ;)"
                    print "Всего баллов: ", StartPoint
                    print "Правильных ответа: ", Correct
                    print "Неправильных ответа: ", Wrong
                    if Correct < Wrong:
                        print "Чувак, хреново ты справился :D"
                    else:
                        print "Пацаны, ваще, ребята, классно ваще - магете! :)"
                    break
 
                ## Если баллы пользователя достигли 0 или ниже
                ## игра сразу завершается
                if StartPoint <= 0:
                    print "============================"
                    print "Игра окончена!"
                    print "Правильных ответа: ", Correct
                    print "Неправильных ответа: ", Wrong
                    break
 
    else:
        print "Ошибка в имени игрока!"
 
    ## Рестарт игры
    Restart = raw_input("\nХотите продолжить игру Y(д) или N(н) ?: ");
    if Restart in ['Y', 'y', 'д', 'Д']:
        print "\n" * 7
        StartGame()
        print "\n" * 7
 
## Начинаем игру
StartGame()
 

Сохраняйте с расширением *.py и пробуйте - Ваш Кэп!
Записан
tartar    ↓ 
10 Декабрь, 2011, 02:04:14 , спустя 8 минут 29 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Какую команду нужно написать чтобы очистить консоль от старых данных? для этого я банально умножил \n (перевод строки) 7 раз чтобы сделать заметным барьер между новым стартом игр.
Записан
Ivan    ↓ 
10 Декабрь, 2011, 02:09:05 , спустя 4 минуты 51 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

\r - перенести курсор в начало строки (кроссплатформенно), всё остальное особыми кодами терминала
Записан

tartar    ↓ 
10 Декабрь, 2011, 02:19:50 , спустя 10 минут 45 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Ivan, Мне нужно чтобы когда игрок к примеру провалил игру и хочет опять играть, нажал - Y и старые строки сверху удаляются и начинается опять с чистой консоли.
Вопрос для меня не очень важный но все же интересно как можно реализовать такое поведение на Python.
Записан
tartar    ↓ 
10 Декабрь, 2011, 02:24:57 , спустя 5 минут 7 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

может быть я туплю и Вы уже ответили на мой вопрос ... нужен пример с кодом =)
Записан
Ivan    ↓ 
10 Декабрь, 2011, 02:36:33 , спустя 11 минут 36 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

Разве в питоне нету библиотек по работе с терминалом?
Спустя 3 минуты 10 секунд добавил
Попробуй сделать тупо системный вызов команды clear из питона, на линуксе должно сработать, на винде точно не сработает
Спустя 2 минуты 24 секунды добавил
perl -e "system 'clear';"
запустил в терминале на своём вдс - он отчистился, значит должно работать и с питоном
Записан

phpdude    ↓ 
10 Декабрь, 2011, 02:52:12 , спустя 15 минут 39 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

какбы дитя не тешилось ололо
Спустя 16 секунд добавил
если отвечаете везде дуд, то получаете плюс в карму от меня :)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
AlexB    ↓ 
10 Декабрь, 2011, 10:12:14 , спустя 7 часов 20 минут 2 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

Небольшой синтаксический сахар:
Python
print "Покинул игру..." if enterGame in ['N', 'n', 'н', 'Н'] else "\nВопросы:"

Python
for key, value in Question.items():

Python
CreateQuestion = "(%i) %s:" % (Count, Question[key]['name'])

 

« Последнее редактирование: 10 Декабрь, 2011, 10:12:14 от AlexB » Записан

adwo    ↓ 
10 Декабрь, 2011, 11:43:00 , спустя 1 час 30 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

Укусил питон. Python infected.
Группа: Санитары

Карма: 18
Сообщений: 569
Сила слова: 3.16

Какую команду нужно написать чтобы очистить консоль от старых данных? для этого я банально умножил \n (перевод строки) 7 раз чтобы сделать заметным барьер между новым стартом игр.
Text
import os
 
def clear():
    if os.name == 'posix':
        os.system('clear')
 
    elif os.name == ('ce', 'nt', 'dos'):
        os.system('cls')
 

clear()
Спустя 40 секунд добавил
Вот это, видимо, ты не читал? http://www.python.org/dev/peps/pep-0008/
Записан

chmod 777 you mom, bastard
adw0rd    ↓ 
10 Декабрь, 2011, 02:10:28 , спустя 2 часа 27 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17633
Сила слова: 1.67

Кашакод. Питоник в шоке!
Спустя 36 секунд добавил
Вот это, видимо, ты не читал? http://www.python.org/dev/peps/pep-0008/
+1, поставь себе pep8
sudo apt-get install pep8
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
tartar    ↓ 
10 Декабрь, 2011, 02:35:44 , спустя 25 минут 16 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

adwo, Работает спасибо.
Что-то подобное с os.system('clear') я уже находил на форумах и не работало, но только сейчас понял, что программу нужно было запускать в терминал а не в IDLE Python`на.
Записан
tartar    ↓ 
10 Декабрь, 2011, 02:45:06 , спустя 9 минут 22 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Кашакод. Питоник в шоке!
Возможно, я только начал путь война пайтон :)
В  чем каша ? что раздражает в коде ?
Записан
adw0rd    ↓ 
10 Декабрь, 2011, 03:23:23 , спустя 38 минут 17 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17633
Сила слова: 1.67

Я лучше покажу, а то слишком много объяснять:
Python

# coding: utf-8
 
# Настройки вопросов
questions = {
    1: {
        'name': 'Ник пользователя на пыха.ру с ID: 220',
        'answer': ('Assessor',),
        'point': 1,
    },
    2: {
        'name': 'Куда обычно посылают новичков на пыхе? ',
        'answer': ('нахуй', 'нах', 'гугл', 'google',),
        'point': 2,
    },
    3: {
        'name': 'Главный Пайтоно-дрочер на пыхе',
        'answer': ('adw0rd', 'Эдво', 'эдво',),
        'point': 2,
    },
    4: {
        'name': 'Главный тролль на пыхе со времен существования форума',
        'answer': ('дуд', 'phpdude', 'пхпдуд',),
        'point': 1,
    },
    5: {
        'name': 'Какому пользователю пыхи скоро исполнится 38?',
        'answer': ('AlexB', 'alexb',),
        'point': 3,
    },
}
 

def start_game():
    nick = raw_input("Имя в игре: ")
    if nick:
        count = 0
        start_point = 0  # Стартовые баллы
        correct = 0  # Правильные ответы
        wrong = 0  # Неправильные ответы
 
        print "=" * 30
        print "[   Simple Python Game v0.1  ]"
        print "=" * 30
 
        enter_game = raw_input("Нажмите Y(д) или N(н) для подтверждения началы игры: ")
        if enter_game in ['N', 'n', 'н', 'Н']:
            print "Покинул игру..."
        else:
            print
            print "Вопросы:"
 
            for question in questions.values():
                count += 1
                create_question = "{count}) {question}:".format(count=count, question=question['name'])
                give_question = raw_input(create_question)
                if give_question not in question['answer']:
                    start_point -= question['point']
                    print "Неправильный ответ!\nВы потеряли {point} бал. Сейчас у вас: {start_point}\n".format(
                        point=question['point'],
                        start_point=start_point)
                    wrong += 1
                else:
                    start_point += question['point']
                    print "ПРАВИЛЬНО!\nНакопили +{point} бал. Сейчас у вас: {start_point}\n".format(
                        point=question['point'],
                        start_point=start_point)
                    correct += 1
 
                if len(questions) is count:
                    print "=" * 28
                    print "Вы вышли в финал ;)"
                    print "Всего баллов: ", start_point
                    print "Правильных ответа: ", correct
                    print "Неправильных ответа: ", wrong
 
                    if correct < wrong:
                        print "Чувак, хреново ты справился :D"
                    else:
                        print "Пацаны, ваще, ребята, классно ваще - магете! :)"
                    break
 
                # Если баллы пользователя достигли 0 или ниже
                # игра сразу завершается
                if start_point <= 0:
                    print "=" * 28
                    print "Игра окончена!"
                    print "Правильных ответа: ", correct
                    print "Неправильных ответа: ", wrong
                    break
    else:
        print "Ошибка в имени игрока!"
 
    # Рестарт игры
    restart = raw_input("\nХотите продолжить игру Y(д) или N(н) ?: ")
    if restart in ['Y', 'y', 'д', 'Д']:
        print "\n" * 7
        start_game()
        print "\n" * 7
 
if __name__ == "__main__":
    # Начинаем игру
    start_game()
 
 

ps. Логику приложения не менял.
Хотя её стоит поменять, слишком много написано излишнего
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
adwo    ↓ 
10 Декабрь, 2011, 03:23:59 , спустя 36 секунд
НЕ ХУЕТА! ХУЕТА!

Укусил питон. Python infected.
Группа: Санитары

Карма: 18
Сообщений: 569
Сила слова: 3.16

В  чем каша ? что раздражает в коде ?
прочитай полностью страницу по линку, что я дал
Записан

chmod 777 you mom, bastard
phpdude    ↓ 
10 Декабрь, 2011, 03:29:42 , спустя 5 минут 43 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

Хотя её стоит поменять, слишком много написано излишнего
+1
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1] 2 3
Печать
 

Перейти в:  

Этот топик скрыли: artoodetoo