2013-05-06 4 views
0

Я пытаюсь создать игру с черным гнездом, в которой используются классы для запуска. Я считаю, что я успешно сделал класс, для картыBlack Jack with Classes

class Card(object): 
    def __init__(self,suit,number): 
     self.suit=suit 
     self.number=number 

тогда я сделал класс, который берет колоду, а затем перемешивает его, и он имеет дело как хорошо, я думаю, что этот класс также правильно (I Я немного не уверены в функции сделки)

class DeckofCards(object): 
    def __init__(self,deck): 
     self.deck=deck 
     self.shuffledeck=self.shuffle() 
     print(self.shuffledeck) 
    def shuffle(self): 
     b=[] 
     count=0 
     while count<len(self.deck): 
      a=randrange(0,len(self.deck)) 
      if a not in b: 
       b.append(self.deck[a]) 
       count+=1 
     return(b) 
    def deal(self): 
     if len(self.shuffledeck)>0: 
      return(self.shuffledeck.pop(0)) #removes the card from the deck and deals it 
     else: 
      shuffle(self) 
      return(self.shuffledeck.pop(0)) 

затем я создал класс для игрока, и это то, где вещи начинают путать меня, я надеюсь, что это нормально, чтобы вставить прямой вопрос от учителя, потому что это очень неоднозначный и запутанный для меня.

класс Player (объект):

«»»Этот класс для игроков в игре (а дилер считается игрок, хотя я мог бы сделать отдельный класс для дилера.) Конструктор имеет 6 свойств: имя игрока , ручку (изначально пустой список), логическое значение inout, , которое инициализировано True (для указания того, что игрок «in»), блэкджек булевого значения, который инициализируется False (указывает, что у игрока нет блэкджека), целые деньги, с указанием общей суммы денег, которую имеет игрок, оценка, , инициализированная до 0, и целая ставка, инициализированная до 0, которая будет удерживать текущую ставку игрока.

Это был моей попыткой

class Player(object): 
    def __init__(self,name,hand,inout,money,score): 
     self.name=name 
     self.hand=hand 
     self.inout=inout 
     self.money=money 
     self.score=score 
     self.blackjack=self.blackjacksearch() 
    def blackjacksearch(self): #not sure if any of this works 
     if Card('H','J') in self.hand: 
      return(False) 
     if Card('S','J') in self.hand: 
      return(False) 
     if Card('C','J') in self.hand: 
      return(False) 
     if Card('D','J') in self.hand: 
      return(False) 
     else: 
      return(True) 

Полные направления можно найти here

Я просто искал какое-то направление, потому что я невежественный и наш профессор не был очень полезным в все.

ответ

0

Предполагая, что игроки всегда начинаются с пустого списка для своей руки, тогда вам не нужно выполнять поиск в блэкджеке, так как у них всегда не будет блэкджека (False), они всегда будут «in» (True), у них будет 0 балл и 0 ставка.

Просто потому, что ваш профессор говорит, что «конструктор имеет шесть свойств» не означает, что «конструктор должен принимать шесть параметров» - в Python, поскольку нет такой вещи, как объявление каких переменных должен иметь класс, имеет смысл настройте их в конструкторе, даже если это будет только когда-либо по умолчанию. Я передал бы только имя конструктору, а остальные свойства игрока были бы изменены с помощью методов (которым разрешено только перемещать его из одного действительного состояния в другое и обрабатывать все побочные эффекты, конечно)

Смежные вопросы