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

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

ここまでで、じゃんけんのけを判定はんていできるようになりました。
このページでは、かえしを使って、あいこのときはもう一度いちど勝負しょうぶできるようにしたり、ゲームをプレイしてくれる人が入力を間違まちがえてしまったら、もういちど入力しなおすことができるようにしていきます。

山田

しまったべ……どうしようだべ

アル

どうしたの?

山田

むむむ……

りこ

そういえば先生、昨日きのう、学校休んでたよね
それとなにか関係かんけいがあるの?

山田

うむ。まさにそれなんだべ
さっき校長こうちょう先生から「体調たいちょう大丈夫だいじょうぶか? 昨日はどこの調子ちょうしわるかったんだ?」ってメールがたべ

りこ

うんうん

山田

だから、「おなか」ってかえそうと思ったんだべ

アル

うん

山田

「おばか」って返しちゃったべ

りこ

えぇっ!

山田

だって、nとbって、となりにあるべ
これは間違えるべ。トラップだべ

目次
  1. あいこのときは、勝負を繰り返すようにしてみよう!
  2. グー、チョキ、パーの数字以外の文字が入力されたときの対処

あいこのときは、勝負を繰り返すようにしてみよう!

ここまでで、じゃんけんのけを表示ひょうじするところまでできました。
しかし、いまのままでは、あいこになったときに、「あいこだね」となったままゲームがわってしまいます。

やっぱり勝負しょうぶがつくまでしっかりとあそびたいですよね。
そこで、あいこのときは勝負をかえすようにしてみましょう。

山田

ゲームプログラミング大切たいせつなのは、変数へんすう条件分岐じょうけんぶんき、そして繰り返しだべ
こんどは繰り返しを使つかって、あいこのときはゲームを繰り返すようにしてみるべ

アル

あいこなのにゲームが終わっちゃったら、なんだか気持きもちよくないもんね

山田

うむ
そして、その繰り返しのおねがいだべけど、今回こんかいwhileというものを使うべ

りこちゃん、JavaScriptジャバスクリプトのときに使った、無限むげんループはおぼえているべか?

りこ

うん
ずっと繰り返すんだよね

山田

そうだべ。じゃんけんゲームでも、勝負がつくまでずっと繰り返して、ついたらループを抜ける、というふうに作っていくんだべ

無限ループは、while Trueというふうにすればいいんだべよ

あと、繰り返す部分は、条件分岐のときみたいにインデントを使うべ!

janken.py

import random

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

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

# ゲーム全体(ぜんたい)を繰(く)り返(かえ)す
while True:

    # プレイヤーからの入力を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('あなたの負け')
        # ゲームを終わる
        break
    elif win_or_loss==-2 or win_or_loss==1:
        print('あなたの勝ち')
        # ゲームを終わる
        break
山田

無限ループのwhile Trueは10行目で使っているべ
そしてループを抜けるには、39行目や43行目のようにbreakを使うんだべ

りこ

ふむふむ
勝負がついたら、breakでループから抜けるのね

アル

実行じっこうしてみようよ!

Windowsの場合

> python janken.py

Macの場合

% python3 janken.py
山田

実行結果じっこうけっかは、こんなふうになるべ!

実行結果

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

わー! あいこのときは、もういちど勝負できるようになった!

山田

あと、ついでだべから、3を入力するとゲームを終了しゅうりょうできるようにしておくべ

janken.py

import random

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

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

# ゲーム全体(ぜんたい)を繰(く)り返(かえ)す
while True:

    # プレイヤーからの入力をinput_strに覚えておいてもらう
    input_str=input('ここに番号を入力してね!>>> ')

    # もし入力された番号が3のときは、ゲームを終わる。このとき、3は数字ではなくて、文字になっているので注意!
    if input_str=='3':
        print('ゲームを終了します')
        break

    # 入力されたものは文字列(もじれつ)になっているので、数値(すうち)に変換(へんかん)したものを、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('あなたの負け')
        # ゲームを終わる
        break
    elif win_or_loss==-2 or win_or_loss==1:
        print('あなたの勝ち')
        # ゲームを終わる
        break
りこ

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

Windowsの場合

> python janken.py

Macの場合

% python3 janken.py
アル

うまくうごくかな

実行結果

0:グー 1:チョキ 2:パー 3:ゲームを終わる
ここに番号を入力してね!>>>
0:グー 1:チョキ 2:パー 3:ゲームを終わる
ここに番号を入力してね!>>> 3
ゲームを終了します
りこ

うん。ちゃんとゲームを終了しゅうりょうできた!

グー、チョキ、パーの数字以外の文字が入力されたときの対処

つづいて、じゃんけんの手をえらぶとき、プレイヤーが、グー、チョキ、パーの数字すうじではないものを入力してしまったときの対処たいしょをしていきましょう。

山田

ゲームはほとんどできているべけど、もうひとつ、大切たいせつなことがあるべ
それは、ゲームをプレイしてくれる人が、つくが思っていない操作そうさをしてしまうことだべ

りこ

思ってもいない操作って?

山田

このゲームでは、プレイヤーに0〜3までの数字を入れてあそんでもらうべ
でも、それ以外いがい文字もじを入れてしまうと、エラーになってしまうべ

りこ

なるほどー

山田

そこで、条件分岐じょうけんぶんきかえしを使って、0〜3の数字以外いがいの文字を入れてしまったときは、もう一度入力してもらうようにするべ

janken.py

import random

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

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

# ゲーム全体(ぜんたい)を繰(く)り返(かえ)す
while True:

    # 正しく入力されたかどうかを判定。入力の部分を繰り返す
    while True:
        # プレイヤーからの入力をinput_strに覚えておいてもらう
        input_str=input('ここに番号を入力してね!>>> ')

        # 入力が'0', '1', '2', '3'のどれかなら、入力の部分の繰り替えしから抜(ぬ)ける
        if input_str in ['0', '1', '2', '3']:
            break
        # 入力が'0', '1', '2', '3'のどれでもなければ、「間違えて入力しているよ」と表示
        else:
            print('間違えて入力しているよ')

    # もし入力された番号が3のときは、ゲームを終わる。このとき、3は数字ではなくて、文字になっているので注意!
    if input_str=='3':
        print('ゲームを終了します')
        break

    # 入力されたものは文字列(もじれつ)になっているので、数値(すうち)に変換(へんかん)したものを、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('あなたの負け')
        # ゲームを終わる
        break
    elif win_or_loss==-2 or win_or_loss==1:
        print('あなたの勝ち')
        # ゲームを終わる
        break
りこ

あ、13行目で、入力の部分ぶぶん無限むげんループさせてる!

山田

うむ
正しく入力されなかったら、なんども入力の部分を繰り返すんだべ
正しく入力されたら、19行目のbreakでループを抜けるべ

アル

なるほど。こうやって、思いがけない操作をふせぐんだね

りこ

実行してみよう!

Windowsの場合

> python janken.py

Macの場合

% python3 janken.py
山田

ちゃんと動くべかな

実行結果

0:グー 1:チョキ 2:パー 3:ゲームを終わる
ここに番号を入力してね!>>> abc
間違えて入力しているよ
ここに番号を入力してね!>>> efg
間違えて入力しているよ
ここに番号を入力してね!>>> 1
あなたはチョキを出しました
コンピュータはグーを出しました
あなたの負け
アル

おぉ! 適当てきとうな文字を入れると、もう一回入力できる!

次のページでは、ゲームの仕上しあげをしていきます。

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

  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で、画像つきのおみくじゲームを作ろう!

スポンサードリンク

関連コンテンツ

オススメ記事

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

「cd」は、いま作業《さぎょう》しているディレクトリを移動《いどう》するためのコマンドです。 Windows《ウィンドウズ》でも、Mac《マック》(Unix)でも、使うことができますが、その使

FC2 blog customize

FC2ブログ ”最強” カスタマイズ入門講座。【準備編】

いつもどうもです。@It_is_Rです。 少し前まで、私は FC2ブログ を使っていました。 やはり個性を大切にしたい私にとって、用意されたテンプレートを使うことに抵抗がありました。 「

gulp

gulp4完全攻略ガイド。インストールから使い方まで徹底解説!

幸せそうな人を見ると、転べって思います。@It_is_Rです。 Webページを制作するとき、sassをcssに変換して使用することが多いと思います。 今回はgulp4の使い方を、インストールか

【Android Studio】エミュレータを起動してプログラムを実行する方法!

何をやっても長続きしない@It_is_Rです。 このままでは人生さえも長続きしないかも知れない。 さて、しばらくぶりになってしまいましたが、今回は Android Studio 2.3.2 を使って

zsh

zsh のインストール方法と、うまく起動しない時の対処法。

かっこいいものが大好きな@It_is_Rです。 そこで今回は、ターミナルをかっこよくする為の方法を、何回かの記事に分けて書いてみたいと思います。 今回、第一回目は zsh ( Z Shell ) の

文字を表示するクラスを作ろう!

【JavaScript】文字を表示するクラスを作ってみよう! 小学生からのプログラミング入門

小学生からのJavaScript講座です。このシリーズでは、ゲームをつくりながらJavaScriptの使い方を学んでいきます。シリーズの一覧はこちらをご覧ください。 さて、ゲーム作成で重要なキ

WordPress|特定カテゴリーに属する記事を一覧表示させる方法!!

今まで、何度かに分けて書いた記事でも、その一覧がなかったので見にくいなーと思っていた@It_is_Rです。 昨日、記事の一覧表示をするショートコードを作って、記事の一覧が欲しい記事にだけ貼り付けてみ

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

さて、今回もプログラミングを学んでいきましょう! 前回までで、Scratch《スクラッチ》やJavaScript《ジャバスクリプト》でのゲーム開発《かいはつ》を体験《たいけん》し、RPGを作る

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

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

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

【Xcode7】Swift2でMacアプリ開発。Storyboardでボタンを作る。

喧嘩するほど仲がいいとは言いますが、喧嘩する相手がいません。友達がいないということでしょうか。@It_is_Rです。 前回、StoryboardでMacのウィンドウに文字を表示しました。しかし、

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

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