Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2014, 05:21   #1
goshek
Пользователь
 
Регистрация: 07.01.2014
Сообщений: 33
По умолчанию Craps python

Помогите создать версию игры craps на питоне? в начале игрок должен сделать выбор, 3 или 5 раундов играть

условия следующие
1) если сумма после первого броска 3 или 9 == победа
2) если сумма 2,7 или 11 после первого броска ==поражение
3) любая другая сумма становиться переменной
4) чтобы выиграть необходимо путем бросков поучить за один бросок эту переменную

для имитации бросков служит функция random.randint как я понял

Спасибо
goshek вне форума Ответить с цитированием
Старый 28.01.2014, 08:09   #2
goshek
Пользователь
 
Регистрация: 07.01.2014
Сообщений: 33
По умолчанию

Код:
import random
num=int(input("Whould you like to play 3 or 5 rounds?"))
if num==3:
   n=random.randint(1,6)
   m=random.randint(1,6)
   u=0
   while u<=3:
       
       if n+m==3 or n+m==9:
         final1=n+m 
         u=u+4
         print(final1)
         print("You are a winner")
          
       elif n+m==2 or n+m==7 or n+m==11:
          final2=m+n
          u=u+4
          print(final2)
          print("You are a losser")
          
       else:
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+1
         point1=n+m
         print(point1)
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+2
         point2=n+m
         print(point2)
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+3
         point3=n+m
         print(point3)
         if point2==point1:
            u=u+4
            print("You are a winner")
         elif point3==point2:
            u=u+4
            print("You are a winner")
         else:
           u=u+4
           print("You are a losser")  
         
         
elif num==5:
     n=random.randint(1,6)
     m=random.randint(1,6)
     u=0
     while u<=5:
        
       if n+m==3 or n+m==9:
         final3=n+m
         u=u+6
         print(final3)
         print("You are a winner")
          
       elif n+m==2 or n+m==7 or n+m==11:
         final4=n+m
         u=u+6
         print(final4)
         print("You are a losser")
          
       else:
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+1
         point1=n+m
         print(point1)
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+2
         point2=n+m
         print(point2)
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+3
         point3=n+m
         print(point3)
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+4
         point4=n+m
         print(point4)
         n=random.randint(1,6)
         m=random.randint(1,6)
         u=u+5
         point5=n+m
         print(point5)
         if   point2==point1:
              u=u+6
              print("You are a winner")
         elif point3==point2:
              u=u+6
              print("You are a winner")
         elif point4==point3:
              u=u+6
              print("You are a winner")
         elif point5==point4:
              u=u+6
              print("You are a winner")  
         else:
             u=u+6 
             print("You are a losser")
else:
     print("Error! You might choose 3 or 5 only")
как можно оптимизировать моё "чудо" ?

Последний раз редактировалось Stilet; 28.01.2014 в 09:05.
goshek вне форума Ответить с цитированием
Старый 28.01.2014, 09:19   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Точки сделать массивом - это напрашивается сразу.
Тогда можно циклом по массиву проходить.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 29.01.2014, 06:54   #4
goshek
Пользователь
 
Регистрация: 07.01.2014
Сообщений: 33
По умолчанию

спасибо, дельный совет
goshek вне форума Ответить с цитированием
Старый 03.02.2014, 06:22   #5
goshek
Пользователь
 
Регистрация: 07.01.2014
Сообщений: 33
По умолчанию

Есть идеи как изменить код так. чтобы не прописывать каждый бросок? Учитель сказал, что код должен быть по сути один для 10000 раундов и для 5. только цифры отличаться. Разрешено использовать только for and while loop и if else
goshek вне форума Ответить с цитированием
Старый 03.02.2014, 06:27   #6
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Считал число бросков (N), потом прогнал броски по циклу. На С выглядит так:
Код:
for (i = 1; i<=N; i++) {
*обсчет броска*
}
А на питоне я не писал ни разу =)
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 03.02.2014, 11:11   #7
goshek
Пользователь
 
Регистрация: 07.01.2014
Сообщений: 33
По умолчанию

да мне бы на питоне сразу код. Слишком мало опыта, чтобы так на лету понять
goshek вне форума Ответить с цитированием
Старый 04.02.2014, 06:57   #8
goshek
Пользователь
 
Регистрация: 07.01.2014
Сообщений: 33
По умолчанию

import random
r=int(input("Whould you like to play 3 or 5 rounds?")) # 3 or 5 rounds
i=1
if r==3:
n=random.randint(1,6) #dice1
m=random.randint(1,6) #dice2
point=n+m
if point==3 or point==9:
print("You are a winner")
print(point)
i=3
elif point==2 or point==7 or point==11:
print(point)
print("You lose")
i=3
else:
print(point)
while i!=3:
n=random.randint(1,6) #dice1
m=random.randint(1,6) #dice2
z2=m+n
print(z2)
i=i+1
if z2==point:

print("point(1st throw) is",point,"You win")
else:

print("point(1st throw) is",point,"You lose")
elif r==5:
n=random.randint(1,6) #dice1
m=random.randint(1,6) #dice2
point=n+m
if point==3 or point==9:
print("You are a winner")
print(point)
i=5
elif point==2 or point==7 or point==11:
print(point)
print("You lose")
i=5
else:
print(point)
while i!=5:
n=random.randint(1,6) #dice1
m=random.randint(1,6) #dice2
z2=m+n
print(z2)
i=i+1
if z2==point:
print("point(1st throw) is",point,"You win")
i=5
else:
print("point(1st throw) is",point,"You lose")

else: # any other number but not 3 or 5 were used like an input
print("Error! You might choose 3 or 5 only")

условия победы в случае с поинт срабатывают только если последний бросок равен поинту, а надо, чтобы срабатывали когда один из бросков равен поинту и луп останавливася
как решить проблему?
goshek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из Python в C++ gio1592 Общие вопросы C/C++ 0 09.04.2012 14:52
Python Дэнис Python 2 24.02.2012 11:27
python eohim Фриланс 0 04.05.2011 13:50
Python Astron Свободное общение 1 31.03.2010 23:11