2024.11.08(更新日: 2025.08.26)
      BINGOが表示されるまでを解説
 
      はじめに
以前書いた記事で、ビンゴゲームについて解説した。
この記事では、最初にビンゴカードがなぜ表示されるのかについて、詳しくみていこう。

と思ったが、このカードの表示だけでも解説すべき量が多かった。
そのため、この記事では、BINGOが表示されるまでに絞って解説していく。
まずは関数が呼ばれる
まずは、以下の部分で、play_bingo関数が呼ばれる。
# ゲームを開始
play_bingo()
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("ビンゴ!おめでとうございます!")
            breakBingoCardクラスのインスタンスを生成する
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")これがある場合と、ない場合では、見やすさが違ってくる。


コメントを残す