ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

AI Programmer

aiprogrammer.hashlab.jp
forest.watch.impress.co.jp
やりたい処理を日本語で文章で入力するとコードを生成してくれるというウェブサービス
C++で「ベクトルAとベクトルBの距離」と入力してみたら、

double distance(vector A, vector B)
{
return sqrt((A.x - B.x)*(A.x - B.x) + (A.y - B.y)*(A.y - B.y));
}

と出力された。ちゃんとあっている。
とはいえ、やっぱりうまく行かないことのほうが多い。たとえばベクトルと入力したときに、動的配列のstd::vectorと判定されることもある。
あと指示があいまいだとコードでなくただ英訳された文章が出てくることもある。
適切にうまく文章を入力する必要があるけど、うまく文章で表現できるくらい分かっているのなら、コードも書けるだろうという感じ。
あれってどうかくんだっけと、ど忘れした時に確認するのには役に立ちそう。


こんなの入力したらどうなるかなと色々試すのが面白い。
「ブレゼンハムのアルゴリズムで線を描画する」と入力したら、このようなコードが出てきた。

void drawLine(int x1, int y1, int x2, int y2) 
{ 
    int dx, dy, p, x, y; 
  
    dx=x2-x1; 
    dy=y2-y1; 
  
    x=x1; 
    y=y1; 
  
    p=2*dy-dx; 
  
    while(x<=x2) 
    { 
        if(p>=0) 
        { 
            putpixel(x,y,7); 
            y=y+1; 
            p=p+2*dy-2*dx; 
        } 
        else
        { 
            putpixel(x,y,7); 
            p=p+2*dy; 
        } 
        x=x+1; 
    } 
}

putpixel()の第3引数の7って何だろう。学習データで使った環境によるものだろう。Z座標か、それともカラーかな。
こうやって試すのは面白い。でも実用としてはまだまだかな。
とか言っているうちに、どんどん学習して使えるものになっていくのだろうか。