Найти - Пользователи
Полная версия: Игра в карты
Начало » Python для новичков » Игра в карты
1 2 3
FishHook
pit_toner,
а нахрена ты трейсбэк картинкой прикрепляешь?
Скопипастить сюда текст - это гораздо труднее и менее читаемо?
beelze
FishHook - добрейшей души человек, а ведь мог взять_и_…
FlaPy
я несколько разных игрушек на эту тему делал…. с картами решал вот таким образом:
прлучение заданного количества карт посчитал нецелесообразным помещать сюда, потому что карточная колода она в конкретнойкомнате или игровом столе используется и там контролируется
# -*- encoding: utf-8 -*-
'''
@author: Sergey Rus
'''
from random import Random
from random import shuffle
from time import time
class CardNames(object):
    '''
    Значения карт
    '''
    SIX = 6
    SEVEN = 7
    EIGHT = 8
    NINE = 9
    TEN = 10
    CAVALER = 11
    DAMA = 12
    KING = 13
    ACE = 14
class CardSuit(object):
    '''
    Масти карт
    '''
    HEART = '_h'     # черви
    DIAMOND = '_d'   # бубны
    SPADES = '_s'   # пики
    CLUB = '_c'      # крести
class Card(object):
    '''
    Карта.
    '''
    def __init__(self, card_id, card_suit, card_value):
        '''
        Constructor
        '''
        self._id = card_id
        self._mast = card_suit
        self._val = card_value
    @property
    def suit(self):
        return self._mast
    @property
    def value(self):
        return self._val
class CardsCodes(object):
    # таблица кодировки карт.
    cards = {
             0: Card(0, CardSuit.HEART, CardNames.SIX),
             1: Card(1, CardSuit.HEART, CardNames.SEVEN),
             2: Card(2, CardSuit.HEART, CardNames.EIGHT),
             3: Card(3, CardSuit.HEART, CardNames.NINE),
             4: Card(4, CardSuit.HEART, CardNames.TEN),
             5: Card(5, CardSuit.HEART, CardNames.CAVALER),
             6: Card(6, CardSuit.HEART, CardNames.DAMA),
             7: Card(7, CardSuit.HEART, CardNames.KING),
             8: Card(8, CardSuit.HEART, CardNames.ACE),
             9: Card(9, CardSuit.DIAMOND, CardNames.SIX),
             10: Card(10, CardSuit.DIAMOND, CardNames.SEVEN),
             11: Card(11, CardSuit.DIAMOND, CardNames.EIGHT),
             12: Card(12, CardSuit.DIAMOND, CardNames.NINE),
             13: Card(13, CardSuit.DIAMOND, CardNames.TEN),
             14: Card(14, CardSuit.DIAMOND, CardNames.CAVALER),
             15: Card(15, CardSuit.DIAMOND, CardNames.DAMA),
             16: Card(16, CardSuit.DIAMOND, CardNames.KING),
             17: Card(17, CardSuit.DIAMOND, CardNames.ACE),
             18: Card(18, CardSuit.SPADES, CardNames.SIX),
             19: Card(19, CardSuit.SPADES, CardNames.SEVEN),
             20: Card(20, CardSuit.SPADES, CardNames.EIGHT),
             21: Card(21, CardSuit.SPADES, CardNames.NINE),
             22: Card(22, CardSuit.SPADES, CardNames.TEN),
             23: Card(23, CardSuit.SPADES, CardNames.CAVALER),
             24: Card(24, CardSuit.SPADES, CardNames.DAMA),
             25: Card(25, CardSuit.SPADES, CardNames.KING),
             26: Card(26, CardSuit.SPADES, CardNames.ACE),
             27: Card(27, CardSuit.CLUB, CardNames.SIX),
             28: Card(28, CardSuit.CLUB, CardNames.SEVEN),
             29: Card(29, CardSuit.CLUB, CardNames.EIGHT),
             30: Card(30, CardSuit.CLUB, CardNames.NINE),
             31: Card(31, CardSuit.CLUB, CardNames.TEN),
             32: Card(32, CardSuit.CLUB, CardNames.CAVALER),
             33: Card(33, CardSuit.CLUB, CardNames.DAMA),
             34: Card(34, CardSuit.CLUB, CardNames.KING),
             35: Card(35, CardSuit.CLUB, CardNames.ACE)
             }
class CardsAction(object):
    '''
    Операции с картами
    '''
    @staticmethod
    def getStack():
        '''
        генерируем рандомную колоду карт
        @return перемешанный массив кодов карт
        '''
        r = Random()
        r.seed()
        l = []
        for a in xrange(0, 36):
            l.append(a)
        r.shuffle(l)
        return l
    @staticmethod
    def getCardSuit(card):
        '''
        @param card: код карты
        @return: масть карты
        '''
        try:
            c = CardsCodes.cards.get(card)
            return c.suit
        except:
            return None
    @staticmethod
    def getCardValue(card):
        '''
        @param card:код карты
        @return: значение карты
        '''
        try:
            c = CardsCodes.cards.get(card)
            return c.value
        except:
            return None
    @staticmethod
    def getCard(card):
        try:
            c = CardsCodes.cards.get(card)
            return Card(card, c.suit, c.value)
        except:
            return None
    @staticmethod
    def checkVol(card1, card2, trump):
        '''
        проверка карт на старшинство
        @param card1, card2: коды сравниваемых карт
        @trump - код карты, выбранной козырем
        '''
        c1 = CardsAction.getCard(card1)
        c2 = CardsAction.getCard(card2)
        t = CardsAction.getCard(trump)
        if c1.suit == c2.suit:
            if c1.value > c2.value:
                return 1
            else:
                return 2
        else:
            if c1.suit == t.suit:
                return 1
            elif c2.suit == t.suit:
                return 2
beelze
    @property
    def suit(self):
        return self._mast

это свойство для перевода «внутреннего» пространства имен во пространство имен интерфейса класса?
FlaPy
beelze
    @property
    def suit(self):
        return self._mast

это свойство для перевода «внутреннего» пространства имен во пространство имен интерфейса класса?

это всего лишь свойство доступное для чтения.
PooH
FlaPy
я несколько разных игрушек на эту тему делал…. с картами решал вот таким образом:

В воздухе густо запахло Java ;)
FlaPy
PooH
интересно, почему такой вывод… ( я с Python не очень давно работаю… сравнительно… , но с Java - вообще незнаком… )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB