※この記事は初学者である筆者の備忘録的扱いになります。
#はじめに
私は実務でPythonを使うことになり、勉強をしています。
トランプゲームを作成することによって、配列、関数、制御文等を学ぶことが出来ると考え、
作成を始めました。
#内容
作成を行うにあたって、ゲーム内容を考える前にトランプゲームのほとんどに共通する
「デッキからカードを配る」
というところから作っていこうと考えました。
実際に今回作成した**「デッキからカードを配る」**です。
↓↓↓↓↓↓↓↓↓↓
import random
mark = ["♤ ", "♧ ", "♡ ", "♢ "]
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
card_deck = []
player_card = []
cpu_card = []
def card_master():
for mark_idx in range(4):
for number_idx in range(13):
card_deck.append(mark[mark_idx] + str(number[number_idx]))
def player(maisu):
player_card.extend(random.sample(card_deck, maisu))
for idx in range(maisu):
card_deck.remove(player_card[idx])
def cpu(maisu):
cpu_card.extend(random.sample(card_deck, maisu))
for idx in range(maisu):
card_deck.remove(cpu_card[idx])
card_master()
player(5)
cpu(5)
print(player_card)
print(cpu_card)
print(card_deck)
#解説
###・デッキを作る
まず、カードを作っていきます。
いろいろ考えましたが、一番シンプルなやり方です。
mark = ["♤ ", "♧ ", "♡ ", "♢ "]
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
リストにマークと数字を格納します。
def card_master():
for mark_idx in range(4):
for number_idx in range(13):
card_deck.append(mark[mark_idx] + str(number[number_idx]))
それぞれのマークに1~13の数字を結合し、それをデッキに格納していきます。
上記のこの部分
card_deck.append(mark[mark_idx] + str(number[number_idx]))
#リスト.append(<追加したい要素>)
.appendはリストに要素を追加(リストの一番後ろ)します。
デッキの中身はこのようになっています。
↓↓↓↓↓↓↓↓↓↓
['♤ 1', '♤ 2', '♤ 3', '♤ 4', '♤ 5', '♤ 6', '♤ 7', '♤ 8', '♤ 9', '♤ 10', '♤ 11', '♤ 12', '♤ 13', '♧ 1', '♧ 2', '♧ 3', '♧ 4', '♧ 5', '♧ 6', '♧ 7', '♧ 8', '♧ 9', '♧ 10', '♧ 11', '♧ 12', '♧ 13', '♡ 1', '♡
2', '♡ 3', '♡ 4', '♡ 5', '♡ 6', '♡ 7', '♡ 8', '♡ 9', '♡ 10', '♡ 11', '♡ 12', '♡ 13', '♢ 1', '♢ 2', '♢ 3', '♢ 4', '♢ 5', '♢ 6', '♢ 7', '♢ 8', '♢ 9', '♢ 10', '♢ 11', '♢ 12', '♢ 13']
###・カードを配る
次にプレイヤーにカードを配ります。
def player(maisu):
player_card.extend(random.sample(card_deck, maisu))
for idx in range(maisu):
card_deck.remove(player_card[idx])
上記のこの部分
player_card.extend(random.sample(card_deck, maisu))
#リスト.extend(<追加したいリスト>)
#random.sample(<リスト>, <取得数>)
先程、リストに要素を追加する際は.appendを使いましたが、
今回はリストにリストを追加するため.extendを使いました。
また、デッキからランダムなカードを取得するために、
random.sampleを使いました。
その後、デッキから取得されたカードをデッキから取り除きます。
card_deck.remove(player_card[idx])
#リスト.remove(<削除する要素>)
これでプレイヤー側は完成です。
これと同様にCPU側も作成しました。
###・結果
デッキからプレイヤーとCPUに5枚ずつカードを配り、配ったカードはデッキから削除
という動作を確認します。
['♡ 6', '♤ 13', '♧ 10', '♤ 12', '♤ 8']
['♧ 5', '♡ 1', '♢ 8', '♢ 9', '♢ 1']
['♤ 1', '♤ 2', '♤ 3', '♤ 4', '♤ 5', '♤ 6', '♤ 7', '♤ 9', '♤ 10', '♤ 11', '♧ 1', '♧ 2', '♧ 3', '♧ 4', '♧ 6', '♧ 7', '♧ 8', '♧ 9', '♧ 11', '♧ 12', '♧ 13', '♡ 2', '♡ 3', '♡ 4', '♡ 5', '♡ 7', '♡ 8', '♡ 9', '♡ 10', '♡ 11', '♡ 12', '♡ 13', '♢ 2', '♢ 3', '♢ 4', '♢ 5', '♢ 6', '♢ 7', '♢ 10', '♢ 11', '♢ 12', '♢ 13']
見づらいですが、1番目のリストはプレイヤー、2番目はCPU、3番目はデッキ。
配られたカードがデッキにない事を確認できました。
#最後に
ここまで作るのに4時間くらいかかっちゃいました。
作成するゲームはポーカーかブラックジャックかなーと思っています。
次回はゲームの内容を作成していきます。