AIとプログラミング!「今日の運勢」にルーレット風の演出を追加してみよう!

Python

前回の記事では、AI(ChatGPT)に手伝ってもらい、Google Colabという便利なツールを使って、今日の運勢をランダムに表示するシンプルなPythonプログラムをご紹介しました。

プログラミングの第一歩を、面倒な環境構築なしに、気軽に体験していただけたかと思います。

今回は、そのシンプルな占いを、さらにワクワクするエンターテイメントに変える方法をご紹介します!

まるでルーレットが回るかのように、画面上で運勢の候補が高速に飛び交い、徐々にスピードを落として、最後にあなたの今日の運勢がドラマチックに決定する!

そんな楽しい「ルーレット風占いプログラム」を、AIと協力して作ってみましょう!

なお今回はChatGPTにかわり、Googleが提供するGeminiを使ってみようと思います。

GeminiChatGPTと同様に無料で利用できる高性能なAIです。

AIに「もっとドキドキする占いを!」とリクエスト

前回のシンプルな占いも楽しかったですが、今回はもう少しエンターテイメント性を追求してみましょう。

そこで、私はAIのGeminiに、さらに具体的なお願いをしてみました。

後で示すPythonの運勢プログラムを改良してください。
画面上で運勢の候補が高速に点滅したり、回転したりするような視覚的な演出を加え、徐々にその速度が遅くなって、最終的に一つの運勢で決まるようなアニメーションのような動きを実現したいです。
Google Colabで動作するように、できるだけ初心者にも分かりやすいコードでお願いします。
また、詳細なコメントを追加してください。
Pythonコードは以下です。
import random

fortune = ["大吉", "中吉", "小吉", "末吉", "凶"]
today_fortune = random.choice(fortune)

print("今日のあなたの運勢は…")
print(today_fortune + "です!")

このちょっと欲張りなリクエストに対して、AIは見事なPythonコードを生成してくれました!

初心者にも理解しやすいように、コメントも丁寧に追加してくれています。

# 必要な機能を読み込みます
import random  # ランダムな選択をするための機能
import time    # 時間に関する機能(一時停止など)
from IPython.display import clear_output  # Colabの画面をクリアする機能

# 運勢の候補をリストとして定義します
fortune = ["大吉", "中吉", "小吉", "末吉", "凶"]

# タイトルを表示します
print("今日のあなたの運勢は…")
time.sleep(1)  # 最初の間を少し置きます

# 高速回転の演出
print("ルーレット回転開始!")
for i in range(20):  # 高速で20回繰り返します
    clear_output(wait=True)  # 画面をクリア(少し待ちます)
    print("今日のあなたの運勢は…")
    # ランダムに運勢を選び、回転しているような記号と一緒に表示します
    print("🌀 " + random.choice(fortune) + " 🌀")
    time.sleep(0.05)  # ほんの短い時間だけ表示

# 徐々に減速する演出
print("\nもう少しで結果が…")
for i in range(15):  # 少し遅いスピードで15回繰り返します
    clear_output(wait=True)  # 画面をクリア(少し待ちます)
    print("今日のあなたの運勢は…")
    # 少し落ち着いた雰囲気の記号と一緒に表示します
    print("✨ " + random.choice(fortune) + " ✨")
    time.sleep(0.15)  # 少し長めの時間表示

# 最終結果を表示する前の、ドキドキ感を演出
clear_output(wait=True)
print("今日のあなたの運勢は…")
print("🥁 🥁 🥁")
time.sleep(1.5)  # 少し長めに待ちます

# いよいよ最終結果を発表!
final_fortune = random.choice(fortune)
clear_output(wait=True)
print("今日のあなたの運勢は…\n")
print("🎉🎉🎉 ドゥルルルル…\n\n🔮🔮🔮 **" + final_fortune + "** 🔮🔮🔮 🎉🎉🎉")
time.sleep(2) # 結果を少し長めに表示
print("\n今日の運勢はいかがでしたか?")

AIは学習データや生成時の状況に基づいてコードを生成するため、完全に同一のコードになるとは限りません。

さっそくColabで、楽しいルーレットを回してみよう!

この進化したルーレット風占いプログラムも、前回同様にGoogle Colaboratory(Colab)を使えば、特別なソフトをインストールすることなく、ウェブブラウザ上で簡単に体験できます!

ステップ1:Google Colabを開く

まだColabを使ったことがない方は、こちらのリンクからアクセスしてください。Googleアカウントへのログインが必要になる場合があります。

[Google Colaboratoryのリンク: https://colab.research.google.com/ ]

ステップ2:新しいノートブックを作成

Colabのページが開いたら、「ノートブックを新規作成」というボタンをクリックするか、「ファイル」メニューをクリックし、「ノートブックを新規作成」を選択します。

これで、コードを入力するための新しいページが開きます。

ステップ3:コードを貼り付ける

新しく開いたノートブックに、上記のPythonコードをコピー&ペーストしてください。コードが正しく貼り付けられたら、準備完了です!

ステップ4:運勢ルーレットをスタート!

コードを貼り付けたコードセルの左側にある、丸い再生ボタンのようなアイコン(▶)をクリックします。

さあ、結果を見守りましょう!

画面に表示される運勢の候補が、まるでルーレットのように高速で入れ替わり始め、徐々にそのスピードが遅くなっていくはずです。

そして、ついにあなたの今日の運勢が発表されます!どんな結果になるか、ワクワクしながら楽しんでください!

何度か実行してみると、毎回違う運勢が表示されるので、何度でも楽しめますよ。

新しいコードに追加されたプログラミングのテクニック

今回のルーレット風演出には、前回のシンプルなプログラムにいくつかのプログラミングのテクニックが追加されています。
一見複雑に見えるかもしれませんが、このプログラムも、画面のクリア、一定時間待機、文字を表示するといった、単純な処理の組み合わせで実現されています。

from IPython.display import clear_output

この一行は、Colabの画面出力をクリアするために使われています。

プログラムが新しい運勢を表示するたびに古い表示を消すことで、アニメーションのような、文字が次々と入れ替わる効果を生み出しています。

wait=True を指定することで、クリアする前に少しだけ待機し、視覚的な滑らかさを保っています。

time.sleep(秒数)

この関数は、プログラムの実行を指定された秒数だけ一時的に停止させる役割を果たします。

高速回転の段階ではごく短い時間(0.05秒など)で次々と表示を切り替え、減速する段階では少し長めの時間(0.15秒など)で表示することで、ルーレットのスピードの変化を視覚的に表現しています。

for i in range(回数)

これは「forループ」と呼ばれるもので、同じ処理(今回の場合は、画面のクリア、ランダムな運勢の表示、一時停止)を指定した回数だけ自動的に繰り返すことができます。

今回のコードでは、高速回転を20回、低速回転を15回行った後、最終的な結果を表示しています。

高速回転と減速という異なるスピードの演出を、異なる回数と停止時間で実現するために、二つのforループが使われています。

視覚的な装飾

単調な文字表示だけでなく、「🌀」(サイクロン)や「✨」(キラキラ)といった絵文字を加えることで、ルーレットが回転しているようなイメージや、結果発表のワクワク感を高める工夫をしています。

最後の結果発表では、「🥁 🥁 🥁」というドラムロールの絵文字や、「🎉🎉🎉」という紙吹雪の絵文字で、より劇的な演出を加えています。

プログラミングにおける「繰り返し処理」の重要性

今回のプログラムの核心部分である、ルーレットの回転アニメーションを実現しているのが、for ループと呼ばれる「繰り返し処理」です。プログラミングにおいて、繰り返し処理は非常に重要な概念であり、プログラムの効率と柔軟性を高める上で欠かせない役割を果たします。

繰り返し処理とは?

繰り返し処理とは、ある特定の処理を複数回実行するための仕組みです。

プログラムは、原則としてコードに書かれた順に上から下に実行されます。

繰り返し処理を使うことで、同じコードを何度も書く手間を省き、コードをより簡潔に記述できます。

例えば、今回のルーレットプログラムのように、運勢の候補を何度も表示したり、特定の処理を指定回数繰り返したりする場合に活用できます。

Pythonにおける for ループ

Pythonには、for ループ以外にも while ループなど、様々な繰り返し処理の方法がありますが、for ループは、リストなど(複数のデータをまとめて表現できる構造)の要素を順番に取り出して処理を行う場合に非常によく使われます。

for ループの基本的な構文は以下の通りです。

for 変数 in シーケンス:
    # 繰り返す処理
  • 変数: シーケンスから取り出した要素が格納される変数です。変数はデータを記憶しておく箱のようなものです。
  • シーケンス: リストなど、複数の要素を持つデータ構造です。
  • 繰り返す処理: シーケンスの各要素に対して実行される処理です。

for ループの場合、シーケンスの最初の要素から順に処理が行われ、最後の要素まで処理が終わると、ループが終了します。

今回のルーレットプログラムでは、fortune リストの要素を順番に取り出して表示するために for ループを使用しています。また、range() 関数と組み合わせることで、処理を指定回数繰り返すことも可能です。

※fortuneリストには、”大吉”, “中吉”, “小吉”, “末吉”, “凶”の5個の要素が入っています。

繰り返し処理のメリット

コードの簡潔化

同じ処理を何度も書く必要がなくなるため、コードが短く、読みやすくなります。

処理の効率化

大量のデータを効率的に処理できます。

プログラムの柔軟性向上

繰り返しの回数や条件をプログラム中で変更できるため、様々な状況に対応できます。

コンピュータは似たようなことを繰り返すのが得意

プログラミングにおいて、繰り返し処理は、データ分析、シミュレーション、ゲーム開発など、様々な分野で活用されています。

繰り返し処理をマスターすることは、プログラミングスキル向上に繋がる重要なステップと言えるでしょう。

まとめ

今回の記事では、AIのGeminiを活用して、シンプルな運勢占いプログラムを、視覚的に楽しいルーレット風の演出を加えたプログラムへと進化させる過程をご紹介しました。

プログラミングの基本的な概念である「繰り返し処理」についても解説し、この技術が様々なプログラムに応用できる可能性についても触れました。

今回のルーレット風の演出は、他のゲームや抽選プログラムなど、様々な場面に応用することができそうです。

どんな場面で使えるか、ぜひあなたのアイデアも加えてみてください。

このプログラムが、プログラミングの楽しさを体験するきっかけとなれば幸いです。

独学でプログラミングが習得できるか、気になる方は以下もご覧ください。
私の経験もふまえて記事を書きました。

コメント

タイトルとURLをコピーしました