Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21093

【Python】初学者が学習の為にトランプゲームを作成する(第2回)

$
0
0

※この記事は初学者である筆者の備忘録的扱いのものです。

↓↓↓前回の記事↓↓↓
【Python】初学者が学習の為にトランプゲームを作成する(第1回)

はじめに

私は実務でPythonを使うことになり、勉強をしています。
トランプゲームを作成することによって、配列、関数、制御文等を学ぶことが出来ると考え、
作成を始めました。

現在は、デッキの部分を作成中。。。

前回の反省

【Python】初学者が学習の為にトランプゲームを作成する(第1回)
前回の記事で@shiracamusさんにコメントをいただきまして、
至らない部分が本当に多くて勉強になりました。
ありがとうございました。

その後、アドバイスをもとに改良を加えた部分と
必要だと気付いた部分がありましたので、今回はそれについて書きます。

改良した部分

まずは完成したデッキマスタ

importrandomMARK="♤","♧","♡","♢"NUMBER=[1,2,3,4,5,6,7,8,9,10,11,12,13]NUMBER_4=[1,2,3,4,5,6,7,8,9,10,11,12,13]*4defcard_deck():deck_list=[f'{mark}{number}'formarkinMARKfornumberinNUMBER]deck_master=dict(zip(deck_list,NUMBER_4))random.shuffle(deck_list)returndeck_master,deck_listdefdraw(deck_list,n):player_card=deck_list[:n]deldeck_list[:n]returnplayer_card

まず、関数の共通化です。これは完全に見落としでした。
引数でデッキと手札枚数を渡すドロー関数として作成しました。
↓↓↓↓↓

defdraw(deck_list,n):player_card=deck_list[:n]deldeck_list[:n]returnplayer_card

次にデッキの作成部分ですが、リストに文字列として格納するだけだと
トランプの数値比較ができない?と考えたので。。。
このようにしました。
↓↓↓↓↓

defcard_deck():deck_list=[f'{mark}{number}'formarkinMARKfornumberinNUMBER]deck_master=dict(zip(deck_list,NUMBER_4))random.shuffle(deck_list)returndeck_master,deck_list

まずdeck_listにマークと数値を格納します。
deck_listをkeyとして、valueに1~13を与えるようにしました。
出力させるとこうなります。
↓↓↓↓↓

{'♤1':1,'♤2':2,'♤3':3,'♤4':4,'♤5':5,'♤6':6,'♤7':7,'♤8':8,'♤9':9,'♤10':10,'♤11':11,'♤12':12,'♤13':13,'♧1':1,'♧2':2,'♧3':3,'♧4':4,'♧5':5,'♧6':6,'♧7':7,'♧8':8,'♧9':9,'♧10':10,'♧11':11,'♧12':12,'♧13':13,'♡1':1,'♡2':2,'♡3':3,'♡4':4,'♡5':5,'♡6':6,'♡7':7,'♡8':8,'♡9':9,'♡10':10,'♡11':11,'♡12':12,'♡13':13,'♢1':1,'♢2':2,'♢3':3,'♢4':4,'♢5':5,'♢6':6,'♢7':7,'♢8':8,'♢9':9,'♢10':10,'♢11':11,'♢12':12,'♢13':13}

※今回はマークでの上下関係は考慮していません。

これで、プレイヤーが引いたカードをkeyにして値を取得し、比較できるようになるかな?(未確認)
という感じです。

それから

NUMBER_4=[1,2,3,4,5,6,7,8,9,10,11,12,13]*4

この部分ですが、

deck_master=dict(zip(deck_list,NUMBER_4))

を作成する際に、deck_listにはマークごとに1~13で持っているので
NUMBERのリストだと1~13までしか作成できませんでした。。。
いろいろ調べてみたけどこれに落ち着きました。。。
いい方法があれば教えていただきたいです。

最後に

今回は前回の記事の改良で終わってしまいましたが、次回はゲーム作成に入っていきます。
現在はブラックジャックで処理を考え中です。

今後の目標としてはKotlin反映、アプリ作成なのです。

では、進捗がありましたら更新いたします。


Viewing all articles
Browse latest Browse all 21093

Trending Articles