【Python】初心者でも作れる簡単ジャンケンゲームのプログラミング!コピペで簡単画像付き!

※本ページはアフィリエイト広告が含まれています

Python
スポンサーリンク

画像付きのじゃんけんゲームも作ってみたいな!

前回はテキストで遊べるジャンケンゲームのプログラムをご紹介しました。今回は画像で視覚的にも楽しいジャンケンゲームのプログラムをご紹介します。

テキストのゲームよりは少し難しいかもしれませんが、まずはコピペで動きを確認してください。次にコードの説明を確認しながら実際にエディタに打ち込み楽しんで作ってみましょう。

この記事でできること
  • ジャンケンゲームを通してプログラムの構造と動作をより深く理解できる
  • 各関数の目的と働きがわかる
  • 引数や戻り値の意味が理解できる
  • プログラムの流れや各部分の関連性がわかる

■本のご紹介

Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

この本は筆者が初めてPythonを勉強するのに使用しました。

Pythonの基礎から簡単なアプリ、そして人工知能まで作れてしまう楽しい一冊です。キャラクターの楽しい会話形式が親しみがあり学習もはかどりました。

Pythonが初めての方にはおすすめです。

スポンサーリンク

Pythonで初心者でも作れるジャンケンゲームのプログラミング解説 プレビューとサンプル画像

テキストベースのプログラムより複雑にはなりますが順を追ってゆっくりと作っていきましょう。画像をボタンを押して表示させてコンピューターと対戦します。

画像サンプル:”rock.png”・”scissors.png”・”paper.png”(参考程度にコピペで使ってください)

そして画像に名前を付けてエディタ画面の左側フォルダに格納してください。

スポンサーリンク

Pythonで初心者でも作れる画像を使ったジャンケンゲームの解説 プログラム全体

見本のエディタはVS Code(Visual Studio Code)を使用しています。

Visual Studio Code公式ホームページ https://code.visualstudio.com/

VS Codeでの実行方法

Visual Studio Code(VS Code)をインストールする

Python拡張機能をインストールする

  • VS Codeを開き、左のサイドバーにある拡張機能(Extensions)アイコンをクリックします。
  • 検索バーに「Python」と入力し、Pythonに関連した拡張機能をインストールします。

新しいファイルを作成する

  • VS Codeを開き、「ファイル」メニューから「新しいファイル」を選択します。
  • 上記のコードをエディタに記述します。(コピー&ペーストでも構いません)

ファイルを保存する

「ファイル」メニューから「名前を付けて保存」を選択し「(任意のファイル名).py」という名前で保存します。(※ファイル名の後ろには「.py」を忘れないようにしてください)

Pythonファイルを実行する

VS Codeのショートカットキーで実行します。

  • F5
  • Windows: Ctrl+Shift+D
  • Mac: ⇧⌘D

ターミナルに結果が表示されます。

# 必要なライブラリをインポート
import tkinter as tk  # GUIを作成するためのライブラリ
from tkinter import messagebox  # メッセージボックスを表示するためのモジュール
import random  # ランダムな選択を行うためのライブラリ

# コンピュータの選択をランダムに決定する関数
def get_computer_choice():
    return random.choice(["グー", "チョキ", "パー"])

# 勝者を決定する関数
def determine_winner(player, computer):
    if player == computer:
        return "引き分け"
    elif (player == "グー" and computer == "チョキ") or \
         (player == "チョキ" and computer == "パー") or \
         (player == "パー" and computer == "グー"):
        return "プレイヤーの勝ち"
    else:
        return "コンピュータの勝ち"

# プレイヤーの選択に基づいてゲームを実行する関数
def play(player_choice):
    computer_choice = get_computer_choice()  # コンピュータの選択を取得
    result = determine_winner(player_choice, computer_choice)  # 勝者を決定
    
    # 結果を画面に表示
    player_label.config(text=f"プレイヤー: {player_choice}")
    computer_label.config(text=f"コンピュータ: {computer_choice}")
    result_label.config(text=f"結果: {result}")
    
    # 手の画像を更新
    update_hand_images(player_choice, computer_choice)

# 手の画像を更新する関数
def update_hand_images(player_choice, computer_choice):
    player_image_label.config(image=hand_images[player_choice])
    computer_image_label.config(image=hand_images[computer_choice])

# メインウィンドウの設定
root = tk.Tk()
root.title("じゃんけんゲーム")

# 手の画像を読み込む
hand_images = {
    "グー": tk.PhotoImage(file="rock.png"),
    "チョキ": tk.PhotoImage(file="scissors.png"),
    "パー": tk.PhotoImage(file="paper.png")
}

# UIの作成
# ボタンを作成し、クリックされたときに対応する手を選択
tk.Button(root, text="グー", command=lambda: play("グー")).pack()
tk.Button(root, text="チョキ", command=lambda: play("チョキ")).pack()
tk.Button(root, text="パー", command=lambda: play("パー")).pack()

# プレイヤーの選択を表示するラベル
player_label = tk.Label(root, text="プレイヤー: ")
player_label.pack()

# コンピュータの選択を表示するラベル
computer_label = tk.Label(root, text="コンピュータ: ")
computer_label.pack()

# 結果を表示するラベル
result_label = tk.Label(root, text="結果: ")
result_label.pack()

# プレイヤーの手の画像を表示するラベル
player_image_label = tk.Label(root)
player_image_label.pack(side="left")

# コンピュータの手の画像を表示するラベル
computer_image_label = tk.Label(root)
computer_image_label.pack(side="right")

# メインループを開始(ウィンドウを表示し続ける)
root.mainloop()
スポンサーリンク

Pythonで初心者でも作れる画像を使ったジャンケンゲームのプログラム詳細

ここから動作順に詳しく説明していきますので、書いたコードを確認しながら進めていってください。

1.必要なライブラリのインポート

まずは、プログラムで使用するライブラリをインポートします。

# GUIを作成するためのライブラリ
import tkinter as tk

# メッセージボックスを表示するためのモジュール
from tkinter import messagebox

# ランダムな選択を行うためのライブラリ
import random

tkintertkとして省略してインポート):

  • Pythonの標準ライブラリで、グラフィカルユーザーインターフェース(GUI)を作成するために使用します。ウィンドウ、ボタン、ラベルなどの要素を簡単に作成できます。

messageboxtkinterのサブモジュール):

  • ポップアップメッセージを表示するために使用します。エラーメッセージや情報メッセージを表示する際に便利です。

random

  • Pythonの標準ライブラリで、乱数生成や要素のランダムな選択に使用します。このゲームでは、コンピュータの手をランダムに選ぶために使います。

2.コンピュータの選択を決める関数

def get_computer_choice():
    """
    コンピュータの選択をランダムに決定する関数
    
    戻り値:
    str: "グー"、"チョキ"、"パー"のいずれか
    """
    return random.choice(["グー", "チョキ", "パー"])

random.choice()メソッドを使用して、リスト ["グー", "チョキ", "パー"] の中から、ランダムに1つの手を選びます。 この関数を呼び出すたびに、新しいランダムな選択が行われます。

3.勝者を決定する関数

def determine_winner(player, computer):
    """
    プレイヤーとコンピュータの選択を比較して勝者を決定する関数
    
    引数:
    player (str): プレイヤーの選択
    computer (str): コンピュータの選択
    
    戻り値:
    str: 勝敗の結果
    """
    if player == computer:
        return "引き分け"
    elif (player == "グー" and computer == "チョキ") or \
         (player == "チョキ" and computer == "パー") or \
         (player == "パー" and computer == "グー"):
        return "プレイヤーの勝ち"
    else:
        return "コンピュータの勝ち"

プレイヤーとコンピュータの選択を引数として受け取ります。

  1. まず、両者の選択が同じ場合は “引き分け” を返します。
  2. 次に、プレイヤーが勝つ3つのケース(グーvsチョキ、チョキvsパー、パーvsグー)をチェックします。
  3. いずれの条件にも当てはまらない場合は、コンピュータの勝ちとなります。

\(バックスラッシュ)は、1行の条件が長くなりすぎる場合に、複数行に分けて書くために使用しています。

4.ゲームを実行する関数

def play(player_choice):
    """
    じゃんけんゲームを実行し、結果を表示する関数
    
    引数:
    player_choice (str): プレイヤーの選択
    """
    # コンピュータの選択を取得
    computer_choice = get_computer_choice()
    
    # 勝者を決定
    result = determine_winner(player_choice, computer_choice)
    
    # 結果を画面に表示
    player_label.config(text=f"プレイヤー: {player_choice}")
    computer_label.config(text=f"コンピュータ: {computer_choice}")
    result_label.config(text=f"結果: {result}")
    
    # 手の画像を更新
    update_hand_images(player_choice, computer_choice)

プレイヤーの選択を引数として受け取ります。

  1. get_computer_choice()を呼び出して、コンピュータの選択を取得します。
  2. determine_winner()を使って、勝者を決定します。
  3. config()メソッドを使って、各ラベルのテキストを更新します。
  4. f-string(f"..."を使用して、変数の値を文字列に簡単に組み込んでいます。
  5. 最後に、update_hand_images()を呼び出して、画面上の手の画像を更新します。

5.手の画像を更新する関数

def update_hand_images(player_choice, computer_choice):
    """
    プレイヤーとコンピュータの手の画像を更新する関数
    
    引数:
    player_choice (str): プレイヤーの選択
    computer_choice (str): コンピュータの選択
    """
    player_image_label.config(image=hand_images[player_choice])
    computer_image_label.config(image=hand_images[computer_choice])

プレイヤーとコンピュータの選択を引数として受け取ります。

  • config()メソッドを使って、各画像ラベルのimageプロパティを更新します。
  • hand_imagesディクショナリから、選択された手に対応する画像を取得します。

6.メインウィンドウの設定

# メインウィンドウを作成
root = tk.Tk()
# ウィンドウのタイトルを設定
root.title("じゃんけんゲーム")

tk.Tk()でTkinterのルートウィンドウ(メインウィンドウ)を作成します。

title()メソッドで、ウィンドウのタイトルバーに表示されるテキストを設定します。

7.手の画像の読み込み:

# 手の画像を読み込んでディクショナリに格納
hand_images = {
    "グー": tk.PhotoImage(file="rock.png"),
    "チョキ": tk.PhotoImage(file="scissors.png"),
    "パー": tk.PhotoImage(file="paper.png")
}

tk.PhotoImage()を使って、各手に対応する画像ファイルを読み込みます。

ディクショナリhand_imagesを使用して、各手(キー)と対応する画像オブジェクト(値)を関連付けます。

これにより、手の文字列(”グー”など)から対応する画像オブジェクトに簡単にアクセスできます。

8.UIの作成

# じゃんけんの手を選択するボタンを作成
tk.Button(root, text="グー", command=lambda: play("グー")).pack()
tk.Button(root, text="チョキ", command=lambda: play("チョキ")).pack()
tk.Button(root, text="パー", command=lambda: play("パー")).pack()

# プレイヤーの選択を表示するラベル
player_label = tk.Label(root, text="プレイヤー: ")
player_label.pack()

# コンピュータの選択を表示するラベル
computer_label = tk.Label(root, text="コンピュータ: ")
computer_label.pack()

# 結果を表示するラベル
result_label = tk.Label(root, text="結果: ")
result_label.pack()

# プレイヤーの手の画像を表示するラベル
player_image_label = tk.Label(root)
player_image_label.pack(side="left")

# コンピュータの手の画像を表示するラベル
computer_image_label = tk.Label(root)
computer_image_label.pack(side="right")

tk.Button()で3つのボタンを作成し、それぞれに”グー”、”チョキ”、”パー”のテキストを設定します。

commandパラメータlambda関数を使用して、ボタンがクリックされたときにplay()関数を呼び出すようにします。

tk.Label()で各種ラベルを作成します。これらは選択や結果を表示するために使用します。

pack()メソッドを使って、各UI要素をウィンドウ上に配置します。

画像ラベルはsideパラメータを使って左右に配置しています。

9.メインループの開始

# メインループを開始(ウィンドウを表示し続ける)
root.mainloop()

mainloop()メソッドは、Tkinterのイベントループを開始します。

このループは、ユーザーの操作(ボタンクリックなど)を常に監視し、適切に反応します。

プログラムはこの行で「待機状態」に入り、ウィンドウが閉じられるまで実行し続けます。

以上が、Pythonで作成した画像のじゃんけんゲームの詳細な解説です。

■本のご紹介

プログラミング入門講座――基本と思考法と重要事項がきちんと学べる授業

この本はプログラミングにおける必要性の価値を教えてくれる一冊です。

オンラインサービスで学習ができるサイトも多く紹介されており、子供に親しみやすいScratchもあります。やってみるとコードではなくパズルのように組み立てていくので視覚的にも分かりやすいです。

しかし子供向けだからと言っても本格的なプログラムを学ぶことができます。プログラムコードに少し苦手意識がある方はこちらの本からチャレンジしてみてください。楽しいですよ。

じゃんけんゲームを作ってみてスクールでもっと深く学びたくなった方は「【2024年最新版】プログラミングスクールPython講座10選を徹底比較」でPython講座を提供する優秀スクールの比較と選び方をご紹介しております。ぜひチェックしてください。

スポンサーリンク

Pythonで初心者でも作れる画像を使ったジャンケンゲームのプログラミング まとめ

今回は以下を目指す目的でしたが楽しく作れましたでしょうか。

  • ジャンケンゲームを通してプログラムの構造と動作をより深く理解できる
  • 各関数の目的と働きがわかる
  • 引数や戻り値の意味が理解できる
  • プログラムの流れや各部分の関連性がわかる

やはりまだ難しいなと感じる方は、Python公式ドキュメントをぜひ眺めてみてください。

ライブラリやモジュール・関数などが書いてあるので、この関数コードで見たなと思うだけでも理解は深まります。

Python公式ドキュメント:https://docs.python.org/3/(英語なのでわからない方は翻訳機を使ってくださいね)

ここまで作ってみて、もっとプログラミングの知識を深めたいと感じたのではないでしょうか。

プログラミングは独学でも可能です。しかし、一人では不安だなと思われる方はスクールが良いでしょう。相談できながらしっかりと学べます。

もう少し独学でやってみたいなという方には、無料で学べる学習サイトをご紹介します。

まずはここから始めてみるのもよいですね。プログラミングを楽しみましょう!

プログラミング学習をリフレッシュするのにコワーキングスペースがおすすめです。以下の記事を参考にして下さい。

※本ページはプロモーションが含まれています。

Python
スポンサーリンク
meguをフォローする
WEBらぼ