| 
 | 
 
 
发表于 2023-4-10 18:32:20
|
显示全部楼层
 
 
 
嘿嘿,这部分其实可以用Cursor率先体验一下,Cursor就是调用的是Copilot的接口(也是GPT-4)模型的。 
用了一段时间了,实际体验是简单的那种一搜索一大片的代码写起来没什么问题,但是稍微复杂点的代码,就需要改了,而且很多细节问题拐不过弯来,比如我想用一维数组当二维矩阵来用,他就写一些乱七八糟的玩意出来了。 
为了贴合这个阿斗,我特意捏了一个简单的游戏引擎出来,并为它量身捏了一款脑瘫版类c语compiler,好让它帮我打工写游戏。但是,稍微要动点脑子的代码(根本不能叫复杂,稍微比easy难一丢丢的问题)基本9成需要自己改过,比如我让他帮我写一个迷宫生成算法: 
 
 
 
然后它帮我写了一段: 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
 
#define ROW 20 
#define COL 20 
 
int map[ROW][COL]; 
 
void printMaze() { 
    for (int i = 0; i < ROW; i++) { 
        for (int j = 0; j < COL; j++) { 
            if (map[j] == 1) { 
                printf(&#34;■ &#34;); 
            } else { 
                printf(&#34;□ &#34;); 
            } 
        } 
        printf(&#34;\n&#34;); 
    } 
} 
 
void generateMaze() { 
    srand((unsigned)time(NULL)); 
    for (int i = 0; i < ROW; i++) { 
        for (int j = 0; j < COL; j++) { 
            if (i == 0 || j == 0 || i == ROW - 1 || j == COL - 1) { 
                map[j] = 1; 
            } else if (rand() % 3 == 0) { 
                map[j] = 1; 
            } else { 
                map[j] = 0; 
            } 
        } 
    } 
    map[0][0] = 0; 
    map[ROW - 1][COL - 1] = 0; 
} 
 
int main() { 
    generateMaze(); 
    printMaze(); 
    return 0; 
} 
可是入口和出口,都不是连通的 
 
 
 
我尝试让他修复这个bug,显然这个为难它了,尝试各种提示也不管用,不讲码德,拿一些根本不顶用的代码来骗,来忽悠我. 
 
 
 
 
 
 
 
还是不连通的,实际上一眼也看出来他在忽悠了 
 
没办法,我只好在这个代码的基础上做点微调(感觉90%的工作其实还是我干的),包括固定了随机数种子,然后用类似炼丹的方式变换种子终于搞出了一个至少能通关的地图了 
 
 
 
附上代码 
#name &#34;main&#34; 
#include &#34;stdlib.h&#34; 
 
export void GameOnTrigger(string id) 
{ 
    
} 
 
export void GameOnDie() 
{ 
   sleep(3000); 
   defeat(); 
} 
 
export void GameOnFood(string id) 
{ 
    setspeed(0); 
    sleep(1000); 
    victory(); 
} 
 
void drawmap(int x,int y) 
{ 
    drawrect(x*20,y*20,20,20,1,1,1,1); 
} 
 
#define ROW 40 
#define COL 40 
 
export void GameInitialize(int width,int height) 
{ 
    int i,j; 
    createplayer(8,8,10); 
    createfood(800-8,800-8,1,1,0,0,16,&#34;food&#34;); 
    setlayer(0); 
    clearmap(1,0,0,0); 
    rand(); 
    rand(); 
    rand();  
    rand();   
    rand();  
    rand(); 
    rand(); 
    rand(); 
    rand(); 
    rand(); 
   //就这段ai写的 
    for (i = 0; i < ROW; i++) { 
        for (j = 0; j < COL; j++) { 
           if (rand() % 3 != 0)  
            { 
                drawmap(i,j); 
            } 
        } 
    } 
    drawmap(0,0); 
    drawmap(ROW - 1,COL - 1); 
   //到这里 
    wait(3000); 
} 
 
 
export void GameRun(int elapsed) 
{ 
 
}还有几个AI辅助创作的,也差不多,体验就是,有用,但感觉也没多有用(营销号就不要整天吹什么取代了,光贴个生成代码的截图搞的跟真的一样,有本事你点下编译啊~) 
 
 
 
附上代码 
#name &#34;main&#34; 
#include &#34;stdlib.h&#34; 
 
int ate = 0; 
 
export void GameOnTrigger(string id) 
{ 
    
} 
 
export void GameOnDie() 
{ 
   sleep(3000); 
   defeat(); 
} 
 
export void GameOnFood(string id) 
{ 
   ate++; 
   if (ate==4) 
   { 
      setspeed(0); 
      sleep(1000); 
      victory(); 
   } 
} 
 
export void thread1() 
{ 
   float angle1; 
   float angle2; 
   float angle3; 
   float angle4; 
   float angle5; 
   while (1) 
   { 
      sleep(150); 
      setlayer(1); 
      clearmap(0,1,1,1); 
      drawcircle(400,400,400,16,1,0,0,0); 
      drawcircle(400,400,300,16,1,0,0,0); 
      drawcircle(400,400,200,16,1,0,0,0); 
      drawcircle(400,400,100,16,1,0,0,0); 
      drawcircle(400,400,50,16,1,0,0,0); 
 
      angle1=angle1+3; 
      angle2=angle2+6; 
      angle3=angle3+9; 
      angle4=angle4+12; 
      angle5=angle5+15; 
      //就这段ai写的 
      drawsolidcircle(400+cos(angle1/180.0*3.14159)*400,400+sin(angle1/180.0*3.14159)*400,32,1,1,1,1); 
      drawsolidcircle(400+cos(angle2/180.0*3.14159)*300,400+sin(angle2/180.0*3.14159)*300,32,1,1,1,1); 
      drawsolidcircle(400+cos(angle3/180.0*3.14159)*200,400+sin(angle3/180.0*3.14159)*200,32,1,1,1,1); 
      drawsolidcircle(400+cos(angle4/180.0*3.14159)*100,400+sin(angle4/180.0*3.14159)*100,32,1,1,1,1); 
      drawsolidcircle(400+cos(angle5/180.0*3.14159)*50,400+sin(angle5/180.0*3.14159)*50,32,1,1,1,1); 
      ////// 
   } 
} 
 
 
export void GameInitialize(int width,int height) 
{ 
    createplayer(400,400,16); 
    createfood(16,16,1,1,0,0,16,&#34;food&#34;); 
    createfood(800-16,16,1,1,0,0,16,&#34;food&#34;); 
    createfood(16,800-16,1,1,0,0,16,&#34;food&#34;); 
    createfood(800-16,800-16,1,1,0,0,16,&#34;food&#34;); 
    createthread(&#34;thread1&#34;,1); 
    wait(3000); 
} 
 
 
export void GameRun(int elapsed) 
{ 
 
} |   
 
 
 
 |