Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2012 17:57:48

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Игра в карты

pit_toner,
а нахрена ты трейсбэк картинкой прикрепляешь?
Скопипастить сюда текст - это гораздо труднее и менее читаемо?



Офлайн

#2 Апрель 18, 2012 21:38:50

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Игра в карты

FishHook - добрейшей души человек, а ведь мог взять_и_…

Офлайн

#3 Апрель 25, 2012 15:56:30

FlaPy
Зарегистрирован: 2012-04-25
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра в карты

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

# -*- 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



Twisted || Tornado

Офлайн

#4 Апрель 25, 2012 21:58:24

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Игра в карты

    @property
    def suit(self):
        return self._mast

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

Офлайн

#5 Апрель 26, 2012 00:52:23

FlaPy
Зарегистрирован: 2012-04-25
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра в карты

beelze
    @property
    def suit(self):
        return self._mast

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

это всего лишь свойство доступное для чтения.



Twisted || Tornado

Офлайн

#6 Апрель 26, 2012 05:29:23

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Игра в карты

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

В воздухе густо запахло Java ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Апрель 26, 2012 11:19:07

FlaPy
Зарегистрирован: 2012-04-25
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра в карты

PooH
интересно, почему такой вывод… ( я с Python не очень давно работаю… сравнительно… , но с Java - вообще незнаком… )



Twisted || Tornado

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version