BINGOが表示されるまでを解説

はじめに

以前書いた記事で、ビンゴゲームについて解説した。

この記事では、最初にビンゴカードがなぜ表示されるのかについて、詳しくみていこう。

と思ったが、このカードの表示だけでも解説すべき量が多かった。

そのため、この記事では、BINGOが表示されるまでに絞って解説していく。

まずは関数が呼ばれる

まずは、以下の部分で、play_bingo関数が呼ばれる。

# ゲームを開始
play_bingo()
VScodeのコールスタックとソースコードの該当箇所

play_bingo関数

play_bingo関数は、以下のような関数。

def play_bingo():
    card = BingoCard()
    card.display_card()

    drawn_numbers = set()
    while True:
        input("Enterで次の番号を引きます...")
        number = random.randint(1, 75)
        while number in drawn_numbers:  # 重複しないようにする
            number = random.randint(1, 75)
        drawn_numbers.add(number)

        print(f"引かれた番号: {number}")
        card.mark_number(number)
        card.display_card()

        if card.check_bingo():
            print("ビンゴ!おめでとうございます!")
            break

BingoCardクラスのインスタンスを生成する

play_bingo関数の以下の部分で、BingoCardクラスのオブジェクトをcardに代入している。

card = BingoCard()

VSCodeで、cardにカーソルを当てると、cardオブジェクトの情報が出てくる。

__main__.BingoCard objectと書かれているのは、main.pyのファイル内のBingoCardから生成されたオブジェクトという意味合いだろう。

cardインスタンスからdisplay_cardメソッドを呼び出す

cardインスタンスは、先ほど確認した通り、display_cardメソッドをメンバーに持っている。そのため、ドット表記で呼び出すことができる。

card.display_card()

display_cardメソッド

display_cardメソッドは、以下の太字部分。

class BingoCard:

    def display_card(self):
        print("\nB  I  N  G  O")
        for i in range(5):
            for j in range(5):
                value = self.card[j][i]  # 列ごとに表示
                if isinstance(value, int):
                    print(f"{value:2d}", end=" ")
                else:
                    print(f"{value:>2}", end=" ")
            print()

処理が全て行われると、以下のビンゴカードが表示される。

\nは改行

以下は、単純にBINGOの文字列を表示している。先頭の\nは改行を行う。

print("\nB  I  N  G  O")

これがある場合と、ない場合では、見やすさが違ってくる。

ある場合
ない場合

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿ID : 25703