見出し画像

👊UIデザイナーが✌️Pythonに挑戦して✋じゃんけんゲームをつくってみた話

こんにちは。coconalaプロダクトデザイナーの、さかけんです🐶

前回、初めてPythonを体験してみた話を記事にしたのですが、今回は1歩進んでPythomでじゃんけんゲームのプログラムを書いてみた話をしたいと思います🙋どうぞよろしくお願いします!

前回の記事はこちら↓

👨‍💻ざっくりサマリー

⚙️自分でコードを直していくことで理解が深まった!
今回は元のコードを少しずつ直しながら、じゃんけんゲームをより良くしていこうという演習だったので、どうすればいいか自分で考えながら進めることで理解が深まった気がします!🙌

🧠めちゃくちゃ頭の体操になって楽しい!
ひとつひとつのコードがなんでそうなっているのか、条件や定義を紐解きながら進めることができ、いつもと違う脳みそを使ってる感覚があって楽しかったです!😆

コードが正しく動くかすぐに確認できて嬉しい!
実際にコードを書いて、実行して、ダメだったらまた考えて、コードを書いて、を繰り返しながら演習を進めたのですが、Google Colabですぐに確認ができて、すぐフィードバックがあるので理解しやすかったです!💪

💫今回の成果物はこちら


自分の手を数字で入力すると、じゃんけんの勝敗が出ます!


前回はオンラインセミナーに参加したのですが、今回は別のところが運営しているオフラインの無料ハンズオンセミナーだったのでコーディングで行き詰まったら質問しながら進めることができました🙌

具体的な内容を紹介していけたらと思うので、興味のある方は是非見ていってください〜!👁️



今回参加した講座


主催:techgym早稲田校


今回はオフラインの無料ハンズオンセミナーに参加!🙌
プリントで演習問題が配られて、ひとつずつ演習を解いていく形式でした👨‍💻
演習を進めることでじゃんけんゲームが進化していくので、ステップbyステップで楽しみながら進めることができました😊

最初の演習問題

import random

print('じゃんけんスタート')

print('自分の手を入力してください')
my_hand = int(input('0:グー, 1:チョキ, 2:パー'))
you_hand = random.randint(0, 2)

if my_hand == 0:
  if you_hand == 0:
    print('あいこ')
  elif you_hand == 1:
    print('勝ち')
elif my_hand == 1:
  if you_hand == 0:
    print('負け')
  elif you_hand == 1:
    print('あいこ')

👆最初に解いた演習がこちら
現状では「パー」が無いじゃんけんゲームを、「パー」が出せるじゃんけんゲームに改修しようというものでした✋

最終的なコード

import random

hands = ['グー', 'チョキ', 'パー']
results = {'win':'勝ち', 'lose':'負け', 'draw':'あいこ'}

def start_message():
  print('じゃんけんスタート')

def get_my_hand():
  print('自分の手を入力してください')
  input_message = ''
  index = 0
  for hand in hands:
    input_message += str(index) + ':' + hand
    if index < 2:
      input_message += ', '
    index += 1
  return int(input(input_message))

def get_you_hand():
  return random.randint(0, 2)

def get_hand_name(hand_number):
  return hands[hand_number]

def view_hand(my_hand, you_hand):
  print('自分の手は ' + get_hand_name(my_hand))
  print('相手の手は ' + get_hand_name(you_hand))

def get_result(hand_diff):
  if hand_diff == 0:
    return 'draw'
  elif hand_diff == -1 or hand_diff == 2:
    return 'win'
  else:
    return 'lose'

def view_result(result):
  print(results[result])

start_message()

my_hand = get_my_hand()
you_hand = get_you_hand()
hand_diff = my_hand - you_hand

view_hand(my_hand, you_hand)
result = get_result(hand_diff)
view_result(result)

👆そして最終的にはこのような形に!✨(その途中に6つの演習をやりました)
0〜2の中から自分の手を入力すると、じゃんけんを開始して勝敗がわかるようになっています👌自分の手と相手の手も表示されるように、それぞれ関数も定義しました🙌

具体的に習ったこと


if文と条件分岐

if文elifelseは、プログラムの流れを条件によって変えるための文です⚙️
まず、if文で「もし〜なら」という条件を設定します。この条件が真(True)なら、そのブロックのコードが実行されます。もしifの条件が偽(False)だった場合、次にelif文(「そうでなくて、もし〜なら」)が実行されます。それでも条件に合わない場合、最後にelse文(「どれにも当てはまらない場合」)が実行されます。

def get_result(hand_diff):
  if hand_diff == 0:
    return 'draw'
  elif hand_diff == -1 or hand_diff == 2:
    return 'win'
  else:
    return 'lose'

👆じゃんけんゲームではこんな感じ👀
もし変数「hand_diff」が0なら「draw」、-1か2なら「win」、それ以外なら「lose」。といった感じです😌


リストと辞書型

Pythonのリストは、たくさんの値を1つの箱に入れるためのものです。例えば、[1, 2, 3]は数字が3つ入ったリストです。このリストにアクセスするには、順番を使います。例えば、最初の値はlist[0]で取り出せます。
辞書型は、キーと値をセットで保存する特別な箱です。例えば、{"りんご": 1, "バナナ": 2}のように使います。キーで値を取り出せます。例えば、「りんご」の数を知りたいときは、dict["りんご"]で1が取り出せます。リストは順番で、辞書型は名前で値を管理します。

hands = ['グー', 'チョキ', 'パー']
results = {'win':'勝ち', 'lose':'負け', 'draw':'あいこ'}

👆じゃんけんゲームではこんな感じ👀
上がhandsのリストで「グー」「チョキ」「パー」が格納されています✊
それぞれ0から順番にインデックスが割り振られて、「グー」を取り出したいときはhands[0]と書きます⚙️
下がresultsの辞書型で、この辞書には「win」、「lose」、「draw」というキーと、それぞれの日本語「勝ち」、「負け」、「あいこ」がペアで入っています。例えば、results['win']とすると「勝ち」が取り出せます。


for文と繰り返し処理

Pythonのfor文は、リストの中のアイテムを順番に取り出して使うための方法です。例えば、リスト「fruits = [‘りんご’, ‘バナナ’, ‘みかん’]」があるとします。これをfor文で繰り返すと、「for fruit in fruits:」と書きます。この文を使うと、最初に「りんご」がfruitに入り、次に「バナナ」、最後に「みかん」が入ります。このようにして、リストの中のすべてのアイテムに対して同じ操作を繰り返すことができます。例えば、リストのすべてのフルーツの名前を順番に表示することができます。

hands = ['グー', 'チョキ', 'パー']

for hand in hands:
    input_message += str(index) + ':' + hand
    if index < 2:
      input_message += ', '
    index += 1
return int(input(input_message))

👆じゃんけんゲームではこんな感じ👀
「グー」「チョキ」「パー」が格納されているhandsのリストから順番に文字列を取り出して数字(index)や記号(:や,)と組み合わせてinput_messageに文字列を繰り返し追加しています。
これによって、最終的に「0:グー, 1:チョキ, 2:パー」という文字列が出来上がり、テキストボックスと一緒に表示するメッセージができました!🙌


おわりに


いかがだったでしょうか?

前回はじめてPythonを触ってみて、その楽しさの一端に触れた感じだったのですが、今回はさらに1歩踏み込んでいけた実感があって、すごく楽しかったです!次は何できるかなとワクワクしてます〜!😊

おすすめのイベントやサイトがあったら是非コメントで教えてください!🙌


エンジニアの方、プログラミングに興味のある方は、是非ココナラのテックブログもご覧ください〜!👇


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?