2018年11月10日土曜日

[技術系]PyQ始めました→1週間の結果

11/2に下書きを書いて一週間。
PyQを続けた結果、どこまでクエストが消化できたのかとか
何ができるようになったのかとかを書きます。

(こっから11/2)
今先ほど、PyQを始めました。

理由は、C++という言語そのものに縛られたくないから。
言語は選択肢にしたいんだけれども、使う場面がないとどんどん置いて行かれてしまうので、Pythonも触ることにしました。実務で役立つかは謎です。
ただ、Pythonでシューティングとか作れると楽しいだろうぁ……。UnitTestとかが楽そうだし、ロジックの確認とかがスクリプト系なのでMATLABと同じように扱えそうでよさそうだな、と。

(こっから今書いてる部分)
で、どれくらいやったか。PyQのいいところはそのあたりが記録されているところ。

土日挟んで1週間で7.7時間やってこのくらいでした!


で、木曜日にポーカーの勝率計算をするスクリプトが書きたいなと思い、デッキをシャッフルしてドローするところまで実装してみました。プラスアルファでクラスの作成方法だけ勉強しています。

こっからモンテカルロ的に勝率計算をして、行列表示してみようかなと思います!では!

playingcard.py
import random

suitType = ['Spade', 'Heart', 'Club', 'Diamond']
numberType = [2,3,4,5,6,7,8,9,10,11,12,13,14]

class deck:
    def initialize(self):
        self.sortedDeck = []
        for suit in suitType:
            for number in numberType:
                self.sortedDeck.append({'Suit':suit,'Number':number})

    def shuffle(self):
        self.shuffledDeck = []
        for _ in range(len(self.sortedDeck)):
            card = self.sortedDeck.pop(random.randint(0, len(self.sortedDeck)-1))
            self.shuffledDeck.append(card)
    
    def draw(self):
        return self.shuffledDeck.pop()

    def __init__(self):
        self.initialize()

class view:
    def __init__(self):
        dummy = 0
    def print(self, hand):
        stringHand = []
        for card in hand:
            if card['Number'] == 14:
                number = 'A'
            elif card['Number'] == 13:
                number = 'K'
            elif card['Number'] == 12:
                number = 'Q'
            elif card['Number'] == 11:
                number = 'J'
            elif card['Number'] == 10:
                number = 'T'
            else:
                number = str(card['Number'])
            stringHand.append((card['Suit'],str(number)))
        print(stringHand)


def main():
    # 使用法的な感じ
    # deckクラスを生成、shuffleしてdrawする
    # viewerはAKQJTを1文字化する
    # card(hand配列の1要素)は辞書型であり、
    # keyは'Suit':strと'Number':int
    gameDeck = deck()
    viewer = view() 
    gameDeck.shuffle()

    hand = []
    hand.append(gameDeck.draw())
    hand.append(gameDeck.draw())

    viewer.print(hand)


if __name__ == '__main__':
    main()