AIでプログラムを書けることが話題になっていた、chatGPTを使ったプログラムの自動生成を試したメモです。
https://chat.openai.com/chat
■入力文章
重力を考慮した、ボールが飛び跳ねるprocessingのプログラムは?
ChatGPTの回答プログラムが途中で途切れてしまいますが、
回答の最後の一文字を入力すると、続きを表示することが可能です。
出力結果のうち62行目の文頭の
List
を
ArrayList
に変更しています。
■出力結果
chatGPT.pde
// 重力を表す変数を定義します
float gravity = 0.1;
// ボールを表すクラスを作成します
class Ball {
// ボールの位置を表す変数を定義します
float x;
float y;
// ボールの速度を表す変数を定義します
float vx;
float vy;
// ボールの半径を表す変数を定義します
float r;
// コンストラクタを定義します
Ball(float x, float y, float vx, float vy, float r) {
this.x = x;
this.y = y;
this.vx = vx;
this.vy = vy;
this.r = r;
}
// ボールを描画するメソッドを定義します
void draw() {
// ボールを描画します
ellipse(x, y, r * 2, r * 2);
}
// ボールを動かすメソッドを定義します
void move() {
// 重力の影響を受けるよう、速度に重力を加算します
vy += gravity;
// 速度に応じて位置を更新します
x += vx;
y += vy;
// 画面からはみ出ないように、画面内での反射処理を行います
if (x < r) {
x = r;
vx *= -1;
}
if (x > width - r) {
x = width - r;
vx *= -1;
}
if (y < r) {
y = r;
vy *= -1;
}
if (y > height - r) {
y = height - r;
vy *= -1;
}
}
}
// ボールを格納するリストを定義します
ArrayList<Ball> balls = new ArrayList<Ball>();
void setup() {
// 画面の設定を行います
size(640, 480);
background(0);
// ボールを追加します
balls.add(new Ball(100, 100, 2, -5, 10));
balls.add(new Ball(200, 200, 3, -4, 15));
balls.add(new Ball(300, 300, 1, -3, 20));
}
void draw() {
// 背景を再描画します
background(0);
// ボールを描画します
for (Ball ball : balls) {
ball.draw();
}
// ボールを動かします
for (Ball ball : balls) {
ball.move();
}
}