|
tartar ↓
|
 |
|
10 Декабрь, 2011, 01:55:45
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: -1
Сообщений: 166 Сила слова: -0.6
|
Здравствуйте!
Поставил себе Ubuntu было сразу установлен Python + книга на столе "Python самое необходимое"
и решил начать изучать данный язык.
Теорию нужнр прикрепить практикой и написал свою первую программу на Python
Всего лишь 5 вопросов на которых нужно ответить правильно чтобы выиграть игру (Вопросы о pyha.ru)
- Кто хочет дополнить вопросы, милости прошу редактируйте скрипт ))
Смысл темы: Нужна критика что я не так делаю и как можно было сделать лучше
# -*- 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
|
Небольшой синтаксический сахар:
print "Покинул игру..." if enterGame in ['N', 'n', 'н', 'Н'] else "\nВопросы:"
for key, value in Question.items():
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 раз чтобы сделать заметным барьер между новым стартом игр.
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
|
|
|
|
|
Записан
|
|
|
|
|
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
|
Я лучше покажу, а то слишком много объяснять:
# 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. Логику приложения не менял.
Хотя её стоит поменять, слишком много написано излишнего
|
|
|
|
|
Записан
|
|
|
|
|
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.
|
|
|
|