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()