【速攻】ChatGPTで作る、Python簡単ゲームプログラム3選

chatgpt-python

簡単なゲームプログラムの製作は、プログラミングのよい練習になります。

ChatGPTを使えば、簡単なゲームプログラムのひな型がすぐに作れます。ゲーム作りでPythonプログラミングを学びましょう!

目次

Pythonを実行する方法

Pythonを実行するやりかたは、簡単なものから本格的な方法まで、いろいろあります。好きなやりかたで始めましょう。

ちょっとお試し:PyWeb

PyWebを使うと、Web上でPythonが実行できます。ユーザー登録なども不要です。「利用規約に同意し開始」から開始することができます。

ちょっとだけ試しにやってみようかな、というかたは、PyWebがおススメ。

いろいろお試し:Google Colaboratory

Google Colaboratory(グーグルコラボ)は、Googleが無料で提供している、機械学習の教育や研究用の開発環境です。無償で利用できます。(Googleアカウントは必要)

ノートブックを作成してコードを入力すれば、Pythonプログラムがすぐに実行できます。

グーグルコラボは、色々なライブラリが既に使えるようになっているのが、いいところ。ちょっと分析とか機械学習をやってみたいな、という時には便利です。

本格的プログラミング:Python公式サイト

一番正式なやりかたは、Python公式サイトにある、環境構築ガイドです。

これが本当のPython開発環境です。本格的にプログラミングを始めるならPython公式サイトの手順で環境構築しましょう。

ChatGPTにPythonプログラムを書いてもらおう

さて、実行する環境が整ったところで、プログラムを作りましょう。

ChatGPTは、プログラムを書くことができます。こんな風にお願いしましょう。

ChatGPT

Pythonで〇〇を作って

〇〇に作ってほしいものを入れてお願いすれば、様々なプログラムを書いてくれます。

簡単なゲームプログラムを、3種類ほど書いてみましょう。

簡単ゲームその1:数当てゲーム

まずは、始めてのプログラミング、というときによく見るお題、数当てゲームです。

お願いChatGPT

ChatGPT

Pythonで数当てゲームを作って

import random

def guess_number():
    number = random.randint(1, 100)  # 1から100までの乱数を生成
    tries = 0  # 回答回数の初期化

    print("1から100までの数字を当ててください!")

    while True:
        guess = int(input("予想した数字を入力してください: "))
        tries += 1

        if guess < number:
            print("もっと大きな数字です!")
        elif guess > number:
            print("もっと小さな数字です!")
        else:
            print(f"正解です!{tries}回目で当たりました!")
            break

guess_number()

コンピュータがランダムな数字を選びます。その数字を当てるゲームです。

遊んでみよう

さっそく動かしましょう。

1から100までの数字を当ててください!
予想した数字を入力してください: 50
もっと大きな数字です!
予想した数字を入力してください: 75
もっと小さな数字です!
予想した数字を入力してください: 63
もっと大きな数字です!
予想した数字を入力してください: 69
もっと大きな数字です!
予想した数字を入力してください: 71
もっと大きな数字です!
予想した数字を入力してください: 73
もっと小さな数字です!
予想した数字を入力してください: 72
正解です!7回目で当たりました!

ちゃんと動きましたね。

プログラムの基本(構造化プログラミング、入力と出力)が凝縮

シンプルですが、プログラミングの基本が凝縮された良問です。

プログラミングの基本

プログラミングの、大切な最初の一歩です。

簡単ゲームその2:FizzBuzz(フィズバズ)問題

プログラマーに応募した者が、本当にプログラムを書けるのか見極める。そういうために作られたお題です。

お願いChatGPT

ChatGPT

PythonでFizzBuzzゲームを作って

def fizzbuzz(n):
    for i in range(1, n+1):
        if i % 3 == 0 and i % 5 == 0:
            print("FizzBuzz")
        elif i % 3 == 0:
            print("Fizz")
        elif i % 5 == 0:
            print("Buzz")
        else:
            print(i)

n = int(input("ゲームの上限値を入力してください: "))
fizzbuzz(n)

ルールは以下です。

FizzBuzzルール
  • 数字を1から順番に出力
  • 数字が3で割り切れるなら、”Fizz”と表示
  • 数字が5で割り切れるなら、”Buzz”と表示
  • 数字が3と5の両方で割り切れる場合は、”FizzBuzz”と表示
  • それ以外なら、その数字を表示

有名な問題なので、ChatGPTが丁寧な解説をしてくれます。

遊んでみよう

結果はこのような感じ。

ゲームの範囲を入力してください: 15
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

FizzBuzzできると、できるひとっぽい感じ

世界的に有名なFizzBuzz問題。FizzBuzzできると、この人分かってるぞ、感が出ます。

簡単ゲームその3:Numeron(ヌメロン)ゲーム

かつてバラエティ番組で放映されていた、数字をめぐる戦略型推理ゲーム、ヌメロン。熱い頭脳戦が繰り広げられていました。

ヌメロンゲームを再現しましょう。ルールは以下のようになります。(コンピューターゲーム向けにアレンジしています)

ヌメロンゲームのルール
  • 0-9までの数字のうち3つを使って、3つの番号を作成する
  • カードに重複は無いので「550」「377」「999」といった同じ数字を2つ以上使用した番号は作れない
  • プレイヤーは、相手の番号を推理してコールする
  • コンピューターは、コールされた番号がどの程度合っているかを発表する。
  • 数字も桁も合うなら「EAT」(イート)、数字は合うが桁は合わないなら「BITE」(バイト)
  • 例として、相手の番号が「765」、コールされた番号が「746」であった場合
  • 3桁のうち「7」は桁の位置が合致しているため、EAT
  • 「6」は数字自体は合っているが桁の位置が違うため、BITE
  • EATが1つ・BITEが1つなので、「1EAT-1BITE」となる
  • このように推理し、用意された番号を完全に当てきったら、プレイヤーの勝利となる

お願いChatGPT

ChatGPTに、もうそのまんま、お願いしてみましょう。できるかな?

ChatGPT

Pythonでヌメロンゲームを作って
ルールは以下の通り
・0-9までの数字のうち3つを使って、3つの番号を作成する
・カードに重複は無いので「550」「377」「999」といった同じ数字を2つ以上使用した番号は作れない
・プレイヤーは、相手の番号を推理してコールする
・コンピューターは、コールされた番号がどの程度合っているかを発表する。
・数字も桁も合うなら「EAT」(イート)、数字は合うが桁は合わないなら「BITE」(バイト)
・例として、相手の番号が「765」、コールされた番号が「746」であった場合
・3桁のうち「7」は桁の位置が合致しているため、EAT
・「6」は数字自体は合っているが桁の位置が違うため、BITE
・EATが1つ・BITEが1つなので、「1EAT-1BITE」となる
・このように推理し、用意された番号を完全に当てきったら、プレイヤーの勝利となる

import random

def generate_number():
    numbers = random.sample(range(10), 3)
    return ''.join(map(str, numbers))

def check_guess(target, guess):
    eat = 0
    bite = 0
    for i in range(3):
        if guess[i] == target[i]:
            eat += 1
        elif guess[i] in target:
            bite += 1
    return eat, bite

def play():
    target = generate_number()
    attempts = 0
    while True:
        guess = input("Enter your guess (3-digit number): ")
        attempts += 1
        if len(guess) != 3 or not guess.isdigit():
            print("Invalid guess. Please enter a 3-digit number.")
            continue
        eat, bite = check_guess(target, guess)
        print(f"{eat}EAT-{bite}BITE")
        if eat == 3:
            print("Congratulations! You guessed the number correctly.")
            print(f"Number of attempts: {attempts}")
            break

play()

すらすらと書きましたね。

遊んでみよう

戦略的知能ゲーム、スタートです。

Enter your guess (3-digit number): 012
0EAT-2BITE
Enter your guess (3-digit number): 345
0EAT-0BITE
Enter your guess (3-digit number): 678
0EAT-0BITE
Enter your guess (3-digit number): 901
0EAT-2BITE
Enter your guess (3-digit number): 209
1EAT-1BITE
Enter your guess (3-digit number): 291
0EAT-3BITE
Enter your guess (3-digit number): 129
3EAT-0BITE
Congratulations! You guessed the number correctly.
Number of attempts: 7

ちゃんと遊べますね。

だいぶ回数かかっちゃいました…

ちょっと解説:重複のない3桁番号の選びかた

ChatGPTのプログラム、なかなか興味深いです。ちょっと解説しましょう。

重複のない番号
  • 0-9までの数字のうち3つを使って、3つの番号を作成
  • カードに重複は無いので「550」「377」「999」といった同じ数字を2つ以上使用した番号は作れない

いっけん、難しそうなこの部分。プログラムではたった1行で解決しています。

    numbers = random.sample(range(10), 3)

このようにやっています。

  • range(10)で、[0,1,2,…,9] の配列を作りだす
  • そこからrandom.sampleで、3つを無作為に抽出する

あざやかですね。

ちょっと解説:EATとBYTEの判定

この判定はどうやっているのでしょう。

ヌメロンゲームのルール
  • 数字も桁も合うなら「EAT」(イート)、数字は合うが桁は合わないなら「BITE」(バイト)

ここですね。

def check_guess(target, guess):
    eat = 0
    bite = 0
    for i in range(3):
        if guess[i] == target[i]:
            eat += 1
        elif guess[i] in target:
            bite += 1
    return eat, bite

3個の配列同士を比較し、

  • 同じインデックス位置で等しい(==)なら、EAT
  • そうでなくても含まれる(in)なら、BITE

という判定です。Pythonは、こういうところがシンプルに書けていいですね。

まとめ

ChatGPTは、適切な条件を与えれば、かなり複雑なプログラムも書いてくれます。プログラミングのひな型を作るのに最適です。

さらに、ChatGPTは、世の中にあるノウハウが凝集されたプログラムを書いてくれます。実装のしかたでヒントになるときも多いです。

おおいに活用しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次