何か月か前から皆さんお馴染みついったらんどで、ChatGPTというAIチャットが一部界隈で人気です。
ここからできます。やり方はググればいっぱい出てきます。
というわけでワタクシにお馴染みのprocessingのコードをAI君に書いてもらおうと思います。
そして、
以下がコード。
Plant plant; void setup() { size(800, 600); plant = new Plant(width/2, height, 10, 2, 100, 50); } void draw() { background(255); plant.display(); } class Plant { int leafNum; float stemX, stemY; float stemWidth, stemHeight; float leafSize; Plant(float x, float y, int numLeaves, float stemWidth, float stemHeight, float leafSize) { this.stemX = x; this.stemY = y; this.leafNum = numLeaves; this.stemWidth = stemWidth; this.stemHeight = stemHeight; this.leafSize = leafSize; } void display() { // Draw the stem strokeWeight(stemWidth); stroke(153, 102, 51); bezier(stemX, stemY, stemX - 50, stemY - 100, stemX + 50, stemY - 100, stemX, stemY - 200); // Draw the leaves for (int i = 0; i < leafNum; i++) { pushMatrix(); float angle = TWO_PI / leafNum * i; translate(stemX, stemY - 200); rotate(angle); fill(0, 255, 0); noStroke(); ellipse(0, 0, leafSize, leafSize * 2); popMatrix(); } } }
では、実行してみよう!! ん......? だめじゃないか!!!!!
AIを使う人の腕が試されるってコト
と、こんな感じで雑に使うとこうなります。
要件定義ちゃんとすれば良いプログラムを返してくれます。
競技プログラミングとかどうなるんだろ。調べてないからわからないけど。
例えば、
void setup() { size(400, 400); colorMode(HSB, 360, 100, 100); noStroke(); } void draw() { background(0); for (int i = 0; i < width; i++) { fill(i % 360, 100, 100); rect(i, 0, i + 1, height); } } void mousePressed() { redraw(); }
と、ある程度希望に沿ったものを作ってくれます。
曖昧な、答えが一意に定まらないような要件定義だとダメな気がしますね。
こういう典型問題は正確に答えてくれますね(?)自分の環境で実行してないのでわかりませんが。*1
エラー吐いた時にエラー内容をコピペして教えてくれるのでそこは重宝ですね。
プログラミング初歩の授業で困るのが、「エラーメッセージの意味がよく分からない」というものだが、ChatGPTに放り込むとだいぶわかりやすく説明してくれる。頼りになるTAという感じだ。これをみんなが使うようになれば、本当に大学の授業が変わると思う。
— yhkondo (@yhkondo) January 9, 2023
そして遊んだ次の日、ちょうどTwitterでこんなのが流れてきました。
ChatGPTは1聞いたら100答えてくれるので、プログラミング学習の強い味方かもしれない。
他にも、このプログラムの動作説明してくださいという回答もしてくれるのでぜひ試してみてください。
では、この辺で。
*1:しろよって話