1. HOME
  2. »
  3. プログラミング・Web
  4. »
  5. Python
  6. »
  7. Pythonでじゃんけんゲームを作ってみよう!小学生からのPython入門

Pythonでじゃんけんゲームを作ってみよう!小学生からのPython入門

ここまでで、プレイヤーが入力にゅうりょくできるようにするところまで、つくることができました。
このページでは、コンピュータの手をランダムに表示ひょうじし、さらにそのけを判定はんていできるようにしていきます。

山田

ふっ!

山田

はっ!

山田

てや!

りこ

あ、先生が、なにもないところにパンチしてる!
トレーニングかな?

アル

どうせ虫かなにかいかけてるんだよ

山田

そりゃ……

あ、りこちゃん、アルくん
わたすはいま、ヒップホップダンスの練習中れんしゅうちゅうだべ
かっこいいところを、グッバイキティちゃんに見せるんだべ

アル

えぇっ、てっきりぼく……

りこ

アル。先生もがんばってるんだから、なにも言わないでおいてあげましょ

目次
  1. ランダムを使って、相手の手を表示してみよう!
  2. 条件分岐を使って、勝ち負けを表示してみよう!

ランダムを使って、相手の手を表示してみよう!

つづいて、ランダムを使つかって、相手あいての手を表示ひょうじしてみます。

山田

つぎはランダムというものを使うべ

アル

ランダムってどういう意味いみ

山田

うむ。なにが出るか分からない、ってことだべ
トランプを全部ぜんぶ裏向うらむきにして、1まいえらぶようなかんじだべ

アル

なるほどー

りこ

そっか。じゃんけんも、相手はなにを出すか分からないから、その手はランダムになるんだね

山田

正解せいかいだべ!
そして、ランダムを使うには、randomというモジュールを入れてあげなくちゃいけないべ

アル

どこかからダウンロードしてくるの?

山田

いや、その必要ひつようはないべ
プログラムの一番最初いちばんさいしょに、import randomって入れてあげるだけだべ

そして今回はrandrange()というおねがいを使うべ

りこ

それはどういうお願いなの?

山田

たとえば、randrange(3)というふうにすると、0〜2までのかずを、ランダムに出してくれるべ
使うときは、randomうしろにコンマ(.)でつなぐんだべよ

import random
rnd=random.randrange(3)
print(rnd)
山田

これを実行じっこうすると、0〜2までの数のどれかが表示されるべ

りこ

なるほどー

山田

では、このランダムを使って、コンピュータがいろんな手を出すようにしてみるべ!

janken.py

import random

# handsというリストに、じゃんけんの手を覚(おぼ)えておいてもらう
hands=['グー', 'チョキ', 'パー']

# どの数字が、どの手を表(あらわ)しているのかを表示(ひょうじ)する
print('0:グー 1:チョキ 2:パー')

# プレイヤーからの入力をinput_strに覚えておいてもらう
input_str=input('ここに番号を入力してね!>>> ')
# 入力されたものは文字列(もじれつ)になっているので、数値(すうち)に変換(へんかん)したものを、hand_numに覚えておいてもらう
hand_num=int(input_str)

# ランダムにコンピュータの手の数字を決めて、computer_hand_numに覚えておいてもらう
computer_hand_num=random.randrange(3)
# ランダムで作った数字から、コンピュータがどの手なのかを出して、computer_handに覚えておいてもらう
computer_hand=hands[computer_hand_num]

# 入力された数字から、どの手なのかを出して、player_handに覚えておいてもらう
player_hand=hands[hand_num]

# player_handに覚えておいてもらった手を表示する
print('あなたは'+player_hand+'を出しました')
# computer_handに覚えておいてもらった手を表示する
print('コンピュータは'+computer_hand+'を出しました')
山田

これで、コンピュータの手はランダムに表示されるべ
では実行じっこうしてみるべよ
コマンドプロンプトか、ターミナルに、下のものを入力してenter(return)だべ!

Windowsの場合

> python janken.py

Macの場合

% python3 janken.py
山田

すると、このように表示されるべ!

実行結果

0:グー 1:チョキ 2:パー
ここに番号を入力してね!>>> 
りこ

じゃあ、パーを出したいから、2って入力するね!

0:グー 1:チョキ 2:パー
ここに番号を入力してね!>>> 2
あなたはパーを出しました
コンピュータはグーを出しました
アル

おおっ、コンピュータはグーを出してきた!
これがランダムかー

りこ

やったー。った!

アル

でも、勝ちけが表示されないのが残念ざんねんだなぁ

山田

うむ
じゃあつぎは、勝ち負けを表示してみるべ

条件分岐を使って、勝ち負けを表示してみよう!

つづいて、じゃんけんでったかけたかを、条件分岐じょうけんぶんきを使って出してみます。

山田

りこちゃん
条件分岐はおぼえているべか?

りこ

うん
こんなときはこうする、みたいに、条件じょうけんによって枝分えだわかれさせるんでしょ?

山田

おおぅ!
りこちゃんさすがだべ!

アル

むむ……けてられないぞー
なんだっけ……三千世界さんぜんせかい

山田

条件分岐だべ
なにもてないべ

アル

あれっ……

山田

さて、条件分岐の使い方だべけど、これはifというおねがいを使うんだべ

りこ

どうやって使うの?

山田

たとえば、pointが、80以上いじょうのときは「おめでとう」と表示ひょうじして、それ以外いがいのときは「ざんねん」と表示してみるプログラムは、こんなふうになるべ

# pointに、80という数字を覚(おぼ)えておいてもらう
point=80

# pointが80以上(いじょう)のとき
if point>=80:
    print('おめでとう')
# それ以外(いがい)のとき
else:
    print('ざんねん')
山田

5行目if point>=80:というのが「80以上だったら」というふうに分岐させているべ

そしてそのつぎの行が、スペース4つ分右にいるべ。これはインデントといって、pointが80以上のとき、この右にいるものが実行されるんだべ

さらに8行目のelseは「それ以外」という意味いみで、今回の場合ばあいだと、「79以下だったら」ということになるべ

だからこの場合は、「おめでとう」と表示されるべ

りこ

JavaScriptジャバスクリプトでは括弧かっこだったけど、そのかわりにインデントが使われるのね!

山田

うむ
そして、じゃんけんのち負けの条件分岐を、まずは単純たんじゅんかんがえてみると、このようになるべ

janken.py

import random

# handsというリストに、じゃんけんの手を覚(おぼ)えておいてもらう
hands=['グー', 'チョキ', 'パー']

# どの数字が、どの手を表(あらわ)しているのかを表示(ひょうじ)する
print('0:グー 1:チョキ 2:パー')

# プレイヤーからの入力をinput_strに覚えておいてもらう
input_str=input('ここに番号を入力してね!>>> ')
# 入力されたものは文字列(もじれつ)になっているので、数値(すうち)に変換(へんかん)したものを、hand_numに覚えておいてもらう
hand_num=int(input_str)

# ランダムにコンピュータの手の数字を決めて、computer_hand_numに覚えておいてもらう
computer_hand_num=random.randrange(3)
# ランダムで作った数字から、コンピュータがどの手なのかを出して、computer_handに覚えておいてもらう
computer_hand=hands[computer_hand_num]

# 入力された数字から、どの手なのかを出して、player_handに覚えておいてもらう
player_hand=hands[hand_num]

# player_handに覚えておいてもらった手を表示する
print('あなたは'+player_hand+'を出しました')
# computer_handに覚えておいてもらった手を表示する
print('コンピュータは'+computer_hand+'を出しました')

# 勝(か)ったか負(ま)けたかを判断(はんだん)する
# プレイヤーの手と、コンピュータの手が、同じとき(あいこのとき)
if hand_num==computer_hand_num:
    # 「あいこだね」と表示する
    print('あいこだね')
# あいこじゃないとき
else:
    # プレイヤーがグーのとき
    if hand_num==0:
        # コンピュータがチョキのとき
        if computer_hand_num==1:
            # 「あなたの勝ち」と表示する
            print('あなたの勝ち')
        # コンピュータがパーのとき
        if computer_hand_num==2:
            # 「あなたの負け」と表示する
            print('あなたの負け')
    # プレイヤーがチョキのとき
    elif hand_num==1:
        # コンピュータがパーのとき
        if computer_hand_num==2:
            # 「あなたの勝ち」と表示する
            print('あなたの勝ち')
        # コンピュータがグーのとき
        if computer_hand_num==0:
            # 「あなたの負け」と表示する
            print('あなたの負け')
    # プレイヤーがパーのとき
    elif hand_num==2:
        # コンピュータがグーのとき
        if computer_hand_num==0:
            # 「あなたの勝ち」と表示する
            print('あなたの勝ち')
        # コンピュータがチョキのとき
        if computer_hand_num==1:
            # 「あなたの負け」と表示する
            print('あなたの負け')
りこ

数字すうじおなじときはあいこで、あとはそれぞれの手に合わせて分岐ぶんきしているね

じゃあ、実行じっこうしてみるね!

Windowsの場合

> python janken.py

Macの場合

% python3 janken.py
山田

実行結果じっこうけっかも、ちゃんと勝ち負けが表示ひょうじされるべよ

実行結果

0:グー 1:チョキ 2:パー
ここに番号を入力してね!>>> 2
あなたはパーを出しました
コンピュータはグーを出しました
あなたの勝ち
山田

でも、このままだと、勝ち負けの判断はんだん部分ぶぶんがとても長いべ
これでは、ミスもこりやすくなってしまうべ

りこ

うーん。どうすればいいんだろう

山田

そこで、こんなふうにしてみたべ!

janken.py

import random

# handsというリストに、じゃんけんの手を覚(おぼ)えておいてもらう
hands=['グー', 'チョキ', 'パー']

# どの数字が、どの手を表(あらわ)しているのかを表示(ひょうじ)する
print('0:グー 1:チョキ 2:パー')

# プレイヤーからの入力をinput_strに覚えておいてもらう
input_str=input('ここに番号を入力してね!>>> ')
# 入力されたものは文字列(もじれつ)になっているので、数値(すうち)に変換(へんかん)したものを、hand_numに覚えておいてもらう
hand_num=int(input_str)

# ランダムにコンピュータの手の数字を決めて、computer_hand_numに覚えておいてもらう
computer_hand_num=random.randrange(3)
# ランダムで作った数字から、コンピュータがどの手なのかを出して、computer_handに覚えておいてもらう
computer_hand=hands[computer_hand_num]

# 入力された数字から、どの手なのかを出して、player_handに覚えておいてもらう
player_hand=hands[hand_num]

# player_handに覚えておいてもらった手を表示する
print('あなたは'+player_hand+'を出しました')
# computer_handに覚えておいてもらった手を表示する
print('コンピュータは'+computer_hand+'を出しました')

# あいこのときは0、プレイヤーが負けたときは-1か2、プレイヤーが勝ったときは-2か1という数字を、変数win_or_loseに覚えておいてもらう
win_or_loss=computer_hand_num-hand_num

# じゃんけんの勝ち負けを表示する
if win_or_loss==0:
    print('あいこだね')
elif win_or_loss==-1 or win_or_loss==2:
    print('あなたの負け')
elif win_or_loss==-2 or win_or_loss==1:
    print('あなたの勝ち')
りこ

わぁ。すごくみじかくなったね

山田

33行目を見てほしいんだべ
elifというのは、elseifが合わさったものだべ
つまり、「それ以外で〜のとき」という意味いみになるべ

アル

orっていうのは?

山田

「または」という意味だべ
条件がいくつかあるときに使うんだべ

りこ

でも、なんでこんなに短くできるの?

山田

ふっふっふ
グーが0、チョキが1、パーが2、ってふうに考えると、コンピュータの手から自分の手を引き算した数字は、あるまりがあるんだべ。

アル

どんな?

山田

まず、その答えが0だったら、必ず「あいこ」だべ
そして、負けたときは、-1か2のどちらかになるべ
さらに、勝ったときは、-2か1のどちらかになるべ

りこ

すごい!

山田

工夫次第くふうしだいで、けっこう短くできたりするべ
だからプログラミングをするときは、ちょっと立ち止まって、もっとかんたんに書けないべかな、と考えることも大切たいせつだべ

では、コマンドプロンプトかターミナルに、つぎのものを入力するべ!

Windowsの場合

> python janken.py

Macの場合

% python3 janken.py
山田

実行すると、このようになるべ!

実行結果

0:グー 1:チョキ 2:パー
ここに番号を入力してね!>>> 0
あなたはグーを出しました
コンピュータはパーを出しました
あなたの負け
りこ

うん。ちゃんと勝ち負けの判定はんていがされてるよ!

次のページでは、あいこのときにゲームを終了しゅうりょうしてしまわないように、ちゃんと決着けっちゃくがつくまで勝負しょうぶかえすようにしていきます。

このシリーズの一覧はこちら

  1. 小学生からのプログラミング入門。プログラミングってなぁに?
  2. Scratchの使い方と、ゲーム作りの基礎知識を学ぼう! 小学生からのプログラミング入門
  3. Scratchでじゃんけんゲームを作ろう! 小学生からのプログラミング入門
  4. Scratchでシューティングゲームを作ろう! 小学生からのプログラミング入門
  5. Scratchでピアノ鍵盤を作って音を鳴らそう! 小学生からのプログラミング入門
  6. テキストエディタ(Visual Studio Code)をインストールしてみよう! 小学生からのプログラミング入門
  7. Visual Studio Codeを日本語化してみよう! 小学生からのプログラミング入門
  8. JavaScriptでおみくじを作ろう! 小学生からのプログラミング入門
  9. JavaScriptで今月の残り日数を計算してみよう! 小学生からのプログラミング入門
  10. JavaScriptで画像を表示してみよう! 小学生からのプログラミング入門
  11. JavaScriptで画像を移動してみよう! 小学生からのプログラミング入門
  12. 【JavaScript】キー入力でキャラを動かしてみよう! 小学生からのプログラミング入門
  13. 【JavaScript】ファイルを分けて管理してみよう! 小学生からのプログラミング入門
  14. 【JavaScript】オブジェクトを使ってみよう! 小学生からのプログラミング入門
  15. 【JavaScript】ゲームのメインループを作ってみよう! 小学生からのプログラミング入門
  16. 【JavaScript】キャラを決まった間隔ずつ動かす! 小学生からのプログラミング入門
  17. HTML5とCanvasを使ってみよう! 小学生からのプログラミング入門
  18. 【JavaScript】迷路やRPGで使えるマップを作ってみよう! 小学生からのプログラミング入門
  19. 【JavaScript】マップでキャラを動かせるようにしよう! 小学生からのプログラミング入門
  20. 【JavaScript】クラスの概念をしっかりと理解しよう! 小学生からのプログラミング入門
  21. 【JavaScript】プログラム全体をクラスを使って作ってみよう! 小学生からのプログラミング入門
  22. 【JavaScript】文字を表示するクラスを作ってみよう! 小学生からのプログラミング入門
  23. 【JavaScript】改行と一文字ずつ画面に表示する方法! 小学生からのプログラミング入門
  24. 【JavaScript】ノベルゲーム風にキー入力で文字を切り替える方法! 小学生からのプログラミング入門
  25. JavaScriptでRPGを作ろう!スマホにも対応したゲームの作り方
  26. webpackを使ってゲームエンジンを作ろう!(JSライブラリの作り方)
  27. WindowsにPythonをインストールしてみよう!小学生からのPython入門
  28. MacにPythonをインストールしてみよう!小学生からのPython入門
  29. Pythonでじゃんけんゲームを作ってみよう!小学生からのPython入門
  30. Pythonのtkinterを使って、ウィンドウを表示してみよう!
  31. Pythonのtkinterで、画像つきのおみくじゲームを作ろう!

スポンサードリンク

関連コンテンツ

オススメ記事

java

【絶対できる!】Javaでのじゃんけんゲームの作り方

※追記(2022/6/6)もっと、より分かりやすい記事になるよう修正しました。 今回はJavaを使って、じゃんけんゲームを作る方法を紹介します。Eclipseがインストールされ

プログラミングのクラスってなぁに?

【JavaScript】クラスの概念をしっかりと理解しよう! 小学生からのプログラミング入門

小学生からのプログラミング講座《こうざ》、今回もはじめていきましょう! 前回はマップ上をキャラクターが自由に動くことができるようにしました。 今回はES6から使われるようになった「クラス

【絶対できる!】Unityでの2Dノベルゲームの作り方を詳しく解説

人魚との触れ合いを描いた小説、「ELENA 人魚と過ごした時間」のゲーム化を目指し、日々コツコツと開発を進めているのですが、もう少し時間がかかりそうです。 さて、そんなわけで、今回はUnity

WordPressのテーマを自作してみよう。テーマ開発の方法を徹底解説!

WordPressテーマの自作方法を紹介していきます。 今回はテーマ作成における知識や、ツール、ファイル構成、実際の作り方などを書いていきます。 WordPressのテーマを自作する上

【Unity 2D】画像のアスペクト比を固定して画面全体に表示する方法

こんにちは。私が執筆した小説「ELENA 人魚と過ごした時間」をベースとしたノベルゲームを現在Unityにて開発中です。 さて、今回はUnity2Dでのゲーム開発において、アスペクト比を固定し

【初心者向け】cdコマンドの使い方を分かりやすく解説!(Mac)

「cd」は、いま作業《さぎょう》しているディレクトリを移動《いどう》するためのコマンドです。 先日《せんじつ》はWindows《ウィンドウズ》でのcdコマンドの使《つか》い方を紹介しましたが、

Bootstrap 4によるボタンの作り方。色やサイズなどの指定方法!

Bootstrap4の使い方、第5回目となりました。 Bootstrapの機能のひとつとして、クラスを組み合わせて指定するだけで、色々なボタンが作れます。 今回はBootstrap4を使ったボタンの

MacにPythonをインストールしてみよう!小学生からのPython入門

さて、今回《こんかい》もプログラミングを学んでいきましょう! 前回はWindows《ウィンドウズ》にPython《パイソン》をインストールする方法《ほうほう》を紹介《しょうかい》しました。今回

メインループを作ってみよう!

【JavaScript】ゲームのメインループを作ってみよう! 小学生からのプログラミング入門

小学生からのJavaScript《ジャバスクリプト》入門講座《にゅうもんこうざ》、今回もはじめていきましょう! 突然《とつぜん》ですが、ゲーム開発《かいはつ》の基本として大切なことってなんだっ

FC2 blog customize

FC2ブログ ”最強” カスタマイズ入門講座。ブログ全体の幅を変更。

現実社会では殆ど言葉を発しない@It_is_Rです。だって、厄介なことになりたくないじゃん。 今回も前回に引き続き、FC2ブログカスタマイズの記事です。前回、ヘッダーのサイズを変更しましたが、ブ

コメントを残す(コメントは承認後に反映されます)

メールアドレスが公開されることはありません。