ChatGPTにPythonで簡単なアニメーションを描画してもらうプログラムを書いてもらいました。大昔のパソコンのデモ画面みたいな感じですが。。。
プロンプト作りこんでいけば、スクリーンセーバーのような奇麗なアニメとかも作れるかもしれません。PythonよりCとかUnityでコード書いたほうがメガデモっぽい派手なのができそうです。
指示文(プロンプト):
Pythonでtkinterを利用して、GUIで円が飛ぶ跳ねるプログラムを書いてください。環境はUbuntuです。できるだけコンパクトなコードにしてください。表示する円の数は指定できるようにしてください。
回答
以下は、Pythonのtkinterを使ったGUIで円が跳ねるアニメーションを表示するプログラムの例です。円の数はユーザーによって指定できるようになっています。円はランダムな位置と速度で動きます。
import tkinter as tk
import random
# ウィンドウの幅と高さ
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
# 円の半径
CIRCLE_RADIUS = 20
# 円の色
CIRCLE_COLOR = "red"
# 円の数
NUM_CIRCLES = 10
class Circle:
def __init__(self, canvas, x, y, vx, vy):
self.canvas = canvas
self.x = x
self.y = y
self.vx = vx
self.vy = vy
self.circle = self.canvas.create_oval(x - CIRCLE_RADIUS, y - CIRCLE_RADIUS, x + CIRCLE_RADIUS, y + CIRCLE_RADIUS, fill=CIRCLE_COLOR)
def move(self):
self.canvas.move(self.circle, self.vx, self.vy)
self.x += self.vx
self.y += self.vy
if self.x <= CIRCLE_RADIUS or self.x >= WINDOW_WIDTH - CIRCLE_RADIUS:
self.vx *= -1
if self.y <= CIRCLE_RADIUS or self.y >= WINDOW_HEIGHT - CIRCLE_RADIUS:
self.vy *= -1
class AnimationApp:
def __init__(self, num_circles):
self.root = tk.Tk()
self.root.title("Bouncing Circles")
self.canvas = tk.Canvas(self.root, width=WINDOW_WIDTH, height=WINDOW_HEIGHT)
self.canvas.pack()
self.circles = []
for i in range(num_circles):
x = random.randint(CIRCLE_RADIUS, WINDOW_WIDTH - CIRCLE_RADIUS)
y = random.randint(CIRCLE_RADIUS, WINDOW_HEIGHT - CIRCLE_RADIUS)
vx = random.randint(-5, 5)
vy = random.randint(-5, 5)
circle = Circle(self.canvas, x, y, vx, vy)
self.circles.append(circle)
self.animate()
def animate(self):
for circle in self.circles:
circle.move()
self.root.after(50, self.animate)
if __name__ == "__main__":
num_circles = int(input("Enter the number of circles: "))
app = AnimationApp(num_circles)
app.root.mainloop()
結果:
下記のように成功しました。