|
地板
發(fā)表于 2023-4-10 18:32:20
|
只看該作者
嘿嘿,這部分其實可以用Cursor率先體驗一下,Cursor就是調(diào)用的是Copilot的接口(也是GPT-4)模型的。
用了一段時間了,實際體驗是簡單的那種一搜索一大片的代碼寫起來沒什么問題,但是稍微復雜點的代碼,就需要改了,而且很多細節(jié)問題拐不過彎來,比如我想用一維數(shù)組當二維矩陣來用,他就寫一些亂七八糟的玩意出來了。
為了貼合這個阿斗,我特意捏了一個簡單的游戲引擎出來,并為它量身捏了一款腦癱版類c語compiler,好讓它幫我打工寫游戲。但是,稍微要動點腦子的代碼(根本不能叫復雜,稍微比easy難一丟丟的問題)基本9成需要自己改過,比如我讓他幫我寫一個迷宮生成算法:
GitHub 推出 Copilot X(集合 GPT-4),可自動補全代碼和 ...-1.jpg (17.14 KB, 下載次數(shù): 237)
下載附件
2023-4-12 09:07 上傳
然后它幫我寫了一段:
#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;
}
可是入口和出口,都不是連通的
GitHub 推出 Copilot X(集合 GPT-4),可自動補全代碼和 ...-2.jpg (38.7 KB, 下載次數(shù): 243)
下載附件
2023-4-12 09:07 上傳
我嘗試讓他修復這個bug,顯然這個為難它了,嘗試各種提示也不管用,不講碼德,拿一些根本不頂用的代碼來騙,來忽悠我.
GitHub 推出 Copilot X(集合 GPT-4),可自動補全代碼和 ...-3.jpg (60.26 KB, 下載次數(shù): 264)
下載附件
2023-4-12 09:07 上傳
GitHub 推出 Copilot X(集合 GPT-4),可自動補全代碼和 ...-4.jpg (83.95 KB, 下載次數(shù): 252)
下載附件
2023-4-12 09:07 上傳
還是不連通的,實際上一眼也看出來他在忽悠了
沒辦法,我只好在這個代碼的基礎(chǔ)上做點微調(diào)(感覺90%的工作其實還是我干的),包括固定了隨機數(shù)種子,然后用類似煉丹的方式變換種子終于搞出了一個至少能通關(guān)的地圖了
GitHub 推出 Copilot X(集合 GPT-4),可自動補全代碼和 ...-5.jpg (16.5 KB, 下載次數(shù): 212)
下載附件
2023-4-12 09:07 上傳
附上代碼
#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輔助創(chuàng)作的,也差不多,體驗就是,有用,但感覺也沒多有用(營銷號就不要整天吹什么取代了,光貼個生成代碼的截圖搞的跟真的一樣,有本事你點下編譯啊~)
GitHub 推出 Copilot X(集合 GPT-4),可自動補全代碼和 ...-6.jpg (18.69 KB, 下載次數(shù): 234)
下載附件
2023-4-12 09:07 上傳
附上代碼
#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)
{
} |
|