2020年6月1日19:36, プログラミング
その2では、これから作るDOMEMOのレシピを紹介します。
DOMEMOを作ったことがない方はしっかり読みましょう。
使うのは次の材料です!
これくらいですかね。用意はよろしいでしょうか。
これだけです。簡単ですね。
ではここから、DOMEMOを作るための下ごしらえをしていきましょう。
DOMEMOに必要なのはなんでしょうか。一つ目は数字の書かれた札ですね。これをPythonで書いてみましょう。
domemo.pyというファイルに以下を記載します。
use_cards = [
1,
2, 2,
3, 3, 3,
4, 4, 4, 4,
5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7
]
はい、これで出来上がりです。
これはPythonのリスト型です。複数の値をひとつの変数として扱います。
例えば、DOMEMOの札を
card_of_one = 1
card_of_two = 2
...
などと定義していくのは面倒ですよね。2が2枚あることをどうやって表現したらいいんだろう、となりますし。なのでリスト型を使います。
DOMEMOに必要な札を用意したら、今度はそれをプレイヤーと場へ配りましょう。
5人プレイを想定しているため、場には表4枚、裏4枚、プレイヤーはそれぞれ4枚の札を持ちます。
引き続きdomemo.pyというファイルに以下を記載します。
use_cards = [
...
]
open_cards = use_cards[:4]
closed_cards = use_cards[4:8]
player_cards = [8:]
ここではopen_cardsを場に表向きに置かれている札、closed_cardsを場に裏向きで置かれている札、player_cardsをプレイヤーへ配る札としています。
user_cards[:4]という表記はスライス操作と呼ばれ、リストの特定の中身を取得したいときに使用します。
例を見ましょう。
同じ色の数字がスライス操作によってもともとのリストから取得されます。
上記の例から
という操作になります。
ですので、
open_cards = use_cards[:4] = > [1, 2, 2, 3]
closed_cards = use_cards[4:8] = > [3, 3, 4, 4]]
player_cards = [8:] = > [4, 4, 5, 5, ....,7, 7]
となります。
スライス操作によって、数字を取り出すことはできました。
ここで問題になるのは、いつも同じ数字が場に表向きで置かれ、裏向きに置かれ、プレイヤーに配られるという点です。こんなことにはなりませんよね。
そのため、ランダムに配ることを考えます。
次のコードを見てみましょう。
import random
use_cards = [
...
]
random.shuffle(use_cards)
open_cards = use_cards[:4]
closed_cards = use_cards[4:8]
player_cards = [8:]
追加したのはimport randomとrandom.shuffle(use_cards)です。
名前の通り、randomというモジュールを使用することで、use_cardsの中身をランダムにシャッフルすることができます。
importは特定のモジュールをこのファイル内で使用できるようにするための構文です。
randomの他にも便利なモジュールがあります。何か処理を行いたいと思ったときには、自分で実装するのではなく、Pythonに標準であるモジュール、またはほかの人が作ったモジュールがないかどうかインターネットで調べてみましょう。
標準モジュールであれば使い方はPythonのドキュメントに記載されています。
Pythonドキュメントの説明:random.shuffle
これでこのプログラムを実行するたびにシャッフルされ、数字がランダムに配られます。
結果を確認するためにprint関数を使いましょう。
import random
use_cards = [
...
]
random.shuffle(use_cards)
open_cards = use_cards[:4]
closed_cards = use_cards[4:8]
player_cards = [8:]
print(open_cards)
print(closed_cards)
print(player_cards)
これを実行すれば毎回異なる結果を得られるでしょう。
ここまででだいぶPythonには慣れてきたでしょうか(まあ大丈夫でしょう)。
次からは材料の二つ目、オブジェクト指向プログラミングをやっていきましょう。
それでは。
執筆 G.M.