贪吃蛇(部分AI功能)
Posted my——master
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪吃蛇(部分AI功能)相关的知识,希望对你有一定的参考价值。
1 #include <dos.h> 2 #include"iostream.h" 3 #include"graphics.h" 4 #include"conio.h" 5 #include"string.h" 6 #include"math.h" 7 #include"time.h" 8 #include"stdlib.h" 9 #include"stdio.h" 10 #include"conio.h" 11 #define M_x 1300 12 #define M_y 700 13 #define M 10//kuai size 14 #define N 10 15 #define G_m 20//snack max numbers 16 #define G_n 20 17 int snack_hx,snack_tx; //snack heard and tail (x,y) 18 int snack_hy,snack_ty; 19 int kuai_x,kuai_y; 20 int F,flge,score,ku,norun,N1=3; 21 int nu,kong_h,kong_t,can_to; 22 int T[G_m][G_n],snack_temp[G_m][G_n],snack_tempf[G_m][G_n]; 23 int t[G_m][G_n]; 24 /*typedef struct users 25 { 26 char name[10]; 27 char mm[10]; 28 int score; 29 int rank; 30 }user; 31 user re(user i) 32 {return i;} 33 */ 34 typedef struct kuai 35 { 36 int x; 37 int y; 38 int v; 39 int f; 40 int n; 41 float color; 42 struct kuai *next; 43 }*kuai_link,kuai_data; 44 struct kuai snack[G_m][G_n]; 45 46 int jiemian() 47 { 48 char mm[20]="排名:"; 49 //int Y=700,X=600; 50 initgraph(M_x,M_y,1 ); //第三个对窗口格式有影响(- +) 51 //setlinecolor(255); 52 HWND hwnd=GetHWnd(); 53 SetWindowText(hwnd,"贪吃蛇1.0版@www.baidu.com/p/y123456789xx98 "); 54 for(int i=0;i<M_x;i++) 55 { 56 setlinecolor(BLACK); 57 line(i,0,M_x,M_y); 58 } 59 setlinecolor(BLUE); 60 line(1,1,M_x-1,0); 61 line(1,1,1,M_y-1); 62 line(M_x-1,M_y-1,M_x-1,1); 63 line(M_x-1,M_y-1,1,M_y-1); 64 //setbkmode(TRANSPARENT); 65 settextcolor(RED); 66 outtextxy(M_x-180,40,mm); 67 rectangle(M_x-200,10,M_x-10,M_y-10); 68 outtextxy(M_x-180,200,"得分"); 69 outtextxy(M_x-180,230,"关卡"); 70 for(i=0;i<G_m;i++) 71 for(int j=0;j<G_n;j++) 72 { 73 setlinecolor(BLUE); 74 rectangle(i*M,j*N,M+i*M,N+N*j); 75 } 76 77 return 0; 78 } 79 80 int build()//creact one kuai 81 { int i,j; 82 for(i=0;i<G_m;i++) 83 for(j=0;j<G_n;j++) 84 T[i][j]=0; 85 srand(time(0)); 86 do 87 { 88 i=rand()%G_m;j=rand()%G_n; 89 } 90 while(snack[i][j].f!=0); 91 kuai_x=i;kuai_y=j; 92 T[i][j]=G_m*G_n;flge=4;score++; 93 if(1) 94 {//setlinecolor(BLUE); 95 setfillcolor(GREEN ); 96 fillrectangle(i*M,N*j,M+i*M,N+N*j); }//Sleep(1000); 97 return flge; 98 } 99 100 int initsnack() 101 { 102 int i,j; 103 //N1=3; 104 //memset(snack,0,sizeof(snack[G_m][G_n]));// 105 for(i=0;i<G_m;i++) 106 for(j=0;j<G_n;j++) 107 {snack[i][j].f=0;snack[i][j].n=0;} 108 snack_hx=G_m/2-3;snack_hy=G_n/2; 109 for(i=0;i<N1;i++) 110 { 111 snack[snack_hx+i][snack_hy].n=1; 112 snack[snack_hx+i][snack_hy].f=-1; 113 } 114 snack_tx=snack_hx+N1-1;snack_ty=snack_hy; 115 return 0; 116 } 117 int getin() 118 { 119 int c; 120 while(kbhit()) 121 { 122 fflush(stdin); 123 c=getch(); 124 switch(c) 125 { 126 case 32:{c=getch();c=0;break;} 127 case 72:{if(snack[snack_hx][snack_hy].f==2){;}else snack[snack_hx][snack_hy].f=-2;break;} 128 case 77:{if(snack[snack_hx][snack_hy].f==-1){;}else snack[snack_hx][snack_hy].f=1;break;} 129 case 75:{if(snack[snack_hx][snack_hy].f==1){;}else snack[snack_hx][snack_hy].f=-1;break;} 130 case 80:{if(snack[snack_hx][snack_hy].f==-2){;}else snack[snack_hx][snack_hy].f=2;break;} 131 //default:{snack[snack_hx][snack_hy].f=0;c=0;break;} 132 } 133 } 134 return 0; 135 } 136 137 int run1()//heard jin 138 { 139 int i,j,x,y; 140 x=snack[snack_hx][snack_hy].f%2;y=snack[snack_hx][snack_hy].f/2; 141 i=snack_hx+x;j=snack_hy+y; 142 F=snack[snack_hx][snack_hy].f; 143 if(snack[i][j].f==0)//can jin 144 { 145 snack[snack_hx][snack_hy].n=1; 146 snack[i][j].f=F; snack[i][j].n=0; 147 snack_hx=i;snack_hy=j;//heard 148 } 149 else 150 { 151 flge=11; 152 } 153 return flge; 154 } 155 int run2()//tail jin 156 { 157 int i=0,j=0,m=0,n=0,k=0,h=0; 158 m=snack[snack_tx][snack_ty].f%2;n=snack[snack_tx][snack_ty].f/2; 159 k=snack_tx+m;h=snack_ty+n;i=snack_tx;j=snack_ty; 160 snack_tx=k;snack_ty=h; 161 snack[i][j].n=0; 162 snack[i][j].f=0;//tail 163 return flge; 164 } 165 int run3()//tail tui 166 { 167 int i=0,j=0,m=0,n=0,k=0,h=0; 168 m=snack[snack_tx][snack_ty].f%2;n=snack[snack_tx][snack_ty].f/2; 169 i=snack_tx;j=snack_ty; 170 k=snack_tx-m;h=snack_ty-n; 171 if(snack[k][h].f==0&&k>=0&&h>=0&k<G_m&&h<G_n) 172 { 173 snack_tx=k;snack_ty=h; 174 snack[k][h].n=1; 175 snack[k][h].f=snack[i][j].f;//tail 176 } 177 else 178 { 179 flge=33;score--; 180 } 181 return flge; 182 } 183 184 int bianjie() 185 { int i,j; 186 if(snack_hx<0||snack_hy<0||snack_hx>=G_m||snack_hy>=G_n) 187 flge=55; 188 else 189 flge=5; 190 return flge; 191 } 192 int snack_to() 193 { 194 int i,j; 195 for(i=0;i<G_m;i++) 196 for(j=0;j<G_n;j++) 197 {snack_temp[i][j]=0; 198 snack_temp[i][j]=snack[i][j].n; 199 snack_tempf[i][j]=0; 200 snack_tempf[i][j]=snack[i][j].f; 201 } 202 return 0; 203 } 204 205 int eat_own() 206 { 207 int i,j,m,n,k,h,number=0; 208 k=snack_tx;h=snack_ty; 209 do 210 { //从未到头倒推 211 m=snack[k][h].f%2;n=snack[k][h].f/2; 212 i=k+m;j=h+n; 213 k=i;h=j;number++; 214 } 215 while(snack[i][j].n==1); 216 if(snack[i][j].n==0&&i==snack_hx&&j==snack_hy&&number!=score+N1-3 )///当倒推数和本身长度不等时 flge=0 217 flge=66; 218 else 219 flge=6; 220 return flge; 221 } 222 223 int eat_kuai()//success return flge=3 224 { 225 if(T[snack_hx][snack_hy]>10) 226 flge=7; 227 else 228 flge=77; 229 return flge; 230 } 231 232 233 int view() 234 { 235 int i,j,m,n; 236 BeginBatchDraw(); 237 for(i=0;i<G_m;i++) 238 for(j=0;j<G_n;j++) 239 { 240 if(T[i][j]!=0) 241 {setfillcolor(YELLOW); 242 fillrectangle(i*M,N*j,M+i*M,N+N*j);continue;} 243 if(snack[i][j].f==0) 244 {setfillcolor(BLACK); 245 fillrectangle(i*M,N*j,M+i*M,N+N*j);} 246 else 247 {setfillcolor(RED); 248 fillrectangle(i*M,N*j,M+i*M,N+N*j);} 249 } 250 #if 1 251 IMAGE img; //加载的图片 252 loadimage(&img,"D:\\link.jpg",M,N); 253 m=snack_hx;n=snack_hy; 254 putimage(m*M,n*N,&img); 255 #else 256 setfillcolor(0X255555);//heard 257 m=snack_hx;n=snack_hy; 258 fillrectangle(m*M,N*n,M+m*M,N+N*n); 259 #endif 260 setfillcolor(GREEN); 261 i=snack_tx;j=snack_ty;//-snack[snack_tx][snack_ty].f%2;j=snack_ty-snack[snack_tx][snack_ty].f/2; 262 fillrectangle(i*M,N*j,M+i*M,N+N*j); 263 EndBatchDraw(); 264 return 0; 265 } 266 int scor() 267 { 268 clearrectangle(M_x-140,200,M_x-11,230); 269 char g_score31[10]={0}; //调试查看 270 sprintf(g_score31,"%d",score-2);settextstyle(0,0,g_score31); 271 outtextxy(M_x-130,200,g_score31); 272 clearrectangle(M_x-140,229,M_x-11,300); 273 char g_score32[10]={0}; //调试查看 274 sprintf(g_score32,"%d",ku);settextstyle(0,0,g_score32); 275 outtextxy(M_x-130,230,g_score32); 276 char g_score33[10]={0}; //调试查看 277 sprintf(g_score33,"%d",flge);settextstyle(0,0,g_score33); 278 outtextxy(M_x-130,260,g_score33); 279 return 0; 280 } 281 282 int law(int x1,int y1,int x2,int y2) //heard x,y return kuai.n 283 { 284 int i,j,k,h,m,n,x,y; 285 nu=1; 286 for(i=0;i<G_m;i++) 287 for(j=0;j<G_n;j++) 288 { 289 snack_tempf[i][j]=0; 290 snack_tempf[i][j]=snack[i][j].f; 291 } 292 for(i=0;i<G_m;i++) 293 for(j=0;j<G_n;j++) 294 t[i][j]=0; 295 k=x1;h=y1; 296 if(snack[k][h].f!=0) 297 { 298 int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 299 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 300 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 301 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 302 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 303 304 } 305 srand(time(0)); 306 int model=rand()%4; 307 if(model==0) 308 { 309 do 310 { 311 for(i=0;i<G_m;i++) 312 for(j=0;j<G_n;j++) 313 { 314 if(t[i][j]==nu) 315 { 316 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 317 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 318 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 319 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 320 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 321 nu--; 322 } 323 } 324 nu++; 325 } 326 while(nu<=G_m*G_n); 327 } 328 if(model==1) 329 { 330 do 331 { 332 for(j=0;j<G_m;j++) 333 for(i=0;i<G_n;i++) 334 { 335 if(t[i][j]==nu) 336 { 337 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 338 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 339 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 340 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 341 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 342 nu--; 343 } 344 } 345 nu++; 346 } 347 while(nu<=G_m*G_n); 348 } 349 if(model==2) 350 { 351 do 352 { 353 for(j=G_m-1;j>=0;j--) 354 for(i=G_n-1;i>=0;i--) 355 { 356 if(t[i][j]==nu) 357 { 358 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 359 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 360 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 361 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 362 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 363 nu--; 364 } 365 } 366 nu++; 367 } 368 while(nu<=G_m*G_n); 369 } 370 if(model==3) 371 { 372 do 373 { 374 for(i=G_m-1;i>=0;i--) 375 for(j=G_n-1;j>=0;j--) 376 { 377 if(t[i][j]==nu) 378 { 379 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 380 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 381 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 382 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 383 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 384 nu--; 385 } 386 } 387 nu++; 388 } 389 while(nu<=G_m*G_n); 390 } 391 m=x2;n=y2; 392 // f(); 393 clearrectangle(M_x-290,200,M_x-250,240);//11调试用 394 char g_score53[10]={0}; 395 sprintf(g_score53,"%d",kong_h);settextstyle(0,0,g_score53); 396 outtextxy(M_x-275,210,g_score53); 397 clearrectangle(M_x-290,300,M_x-250,360);//11调试用 398 char g_score51[10]={0}; 399 sprintf(g_score51,"%d",kong_t);settextstyle(0,0,g_score51); 400 outtextxy(M_x-275,320,g_score51); 401 char g_score52[10]={0}; 402 sprintf(g_score52,"%d",model);settextstyle(0,0,g_score52); 403 outtextxy(M_x-275,340,g_score52); 404 405 { 406 while(m!=x1||n!=y1) 407 //do 408 { 409 k=m;h=n; //从未到头倒推 410 x=snack_tempf[m][n]%2;y=snack_tempf[m][n]/2; 411 i=m-x;j=n-y; 412 m=i;n=j; 413 414 } 415 if(nu!=G_m*G_n) 416 snack[x1][y1].f=snack_tempf[k][h]; 417 // f(); 418 } 419 return snack[x1][y1].f; 420 } 421 422 int heard(int x4,int y4) //heard x,y return kuai.n 423 { 424 int i,j,k,h,m,n,x,y; 425 nu=1; 426 for(i=0;i<G_m;i++) 427 for(j=0;j<G_n;j++) 428 { 429 snack_tempf[i][j]=0; 430 snack_tempf[i][j]=snack[i][j].f; 431 } 432 for(i=0;i<G_m;i++) 433 for(j=0;j<G_n;j++) 434 t[i][j]=0; 435 k=x4;h=y4; 436 if(snack[k][h].f!=0) 437 { 438 int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 439 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 440 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 441 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 442 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 443 444 } 445 do 446 { 447 for(i=0;i<G_m;i++) 448 for(j=0;j<G_n;j++) 449 { 450 if(t[i][j]==nu) 451 { 452 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 453 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 454 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 455 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 456 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 457 nu--; 458 } 459 } 460 nu++; 461 kong_h=0; 462 if(nu>=G_m*G_n) 463 for(i=0;i<G_m;i++) 464 for(j=0;j<G_n;j++) 465 { 466 if(t[i][j]!=0) 467 kong_h++; 468 } 469 } 470 while(nu<=G_m*G_n); 471 return kong_h; 472 } 473 474 int tail(int x3,int y3) //heard x,y return kuai.n 475 { 476 int i,j,k,h,m,n,x,y; 477 nu=1; 478 for(i=0;i<G_m;i++) 479 for(j=0;j<G_n;j++) 480 { 481 snack_tempf[i][j]=0; 482 snack_tempf[i][j]=snack[i][j].f; 483 } 484 for(i=0;i<G_m;i++) 485 for(j=0;j<G_n;j++) 486 t[i][j]=0; 487 k=x3;h=y3; 488 if(snack[k][h].f!=0 ) 489 { 490 int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 491 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 492 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 493 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 494 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 495 496 } 497 do 498 { 499 for(i=0;i<G_m;i++) 500 for(j=0;j<G_n;j++) 501 { 502 if(t[i][j]==nu) 503 { 504 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 505 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 506 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 507 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 508 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 509 nu--; 510 } 511 } 512 nu++; 513 514 kong_t=0; 515 if(nu>=G_m*G_n) 516 for(i=0;i<G_m;i++) 517 for(j=0;j<G_n;j++) 518 { 519 if(t[i][j]!=0) 520 kong_t++; 521 } 522 } 523 while(nu<=G_m*G_n); 524 // f(); 525 return kong_t; 526 } 527 528 int can(int x7,int y7,int x8,int y8) //heard x,y return kuai.n 529 { 530 int i,j,k,h,m,n,x,y; 531 nu=1; 532 snack[x8][y8].f=0; 533 for(i=0;i<G_m;i++) 534 for(j=0;j<G_n;j++) 535 { 536 snack_tempf[i][j]=0; 537 snack_tempf[i][j]=snack[i][j].f; 538 } 539 for(i=0;i<G_m;i++) 540 for(j=0;j<G_n;j++) 541 t[i][j]=0; 542 k=x7;h=y7; 543 if(snack[k][h].f!=0) 544 { 545 int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 546 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 547 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 548 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 549 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 550 551 } 552 do 553 { 554 for(i=0;i<G_m;i++) 555 for(j=0;j<G_n;j++) 556 { 557 if(t[i][j]==nu) 558 { 559 k=i;h=j;nu++;int k1=k-1,k2=k+1,h1=h-1,h2=h+1; 560 if(snack_tempf[k1][h]==0&&k1>=0){snack_tempf[k1][h]=-1;t[k1][h]=nu;} 561 if(snack_tempf[k][h1]==0&&h1>=0){snack_tempf[k][h1]=-2;t[k][h1]=nu;} 562 if(snack_tempf[k2][h]==0&&k2<G_m){snack_tempf[k2][h]=1;t[k2][h]=nu;} 563 if(snack_tempf[k][h2]==0&&h2<G_n){snack_tempf[k][h2]=2;t[k][h2]=nu;} 564 nu--; 565 } 566 } 567 nu++; 568 } 569 while(t[x8][y8]==0&&nu<=G_m*G_n); 570 can_to=1; 571 if(nu>=G_m*G_n) 572 can_to=0; 573 return can_to; 574 } 575 int main(int argc,char *argv[]) 576 { 577 int next=1; 578 int a=0; 579 while(next) 580 { 581 score=1; 582 jiemian(); 583 initsnack();build(); 584 int ai=1; 585 //scanf("%d",&ai); 586 Sleep(1000); 587 while(flge!=0) 588 { 589 while(ai) 590 { 591 if(flge==100) 592 {build();norun=0;} 593 view(); 594 scor(); 595 bianjie(); 596 //Sleep(1000); 597 if(flge==55)break; 598 if(flge==5) 599 flge=10; 600 eat_own(); 601 if(flge==66)break; 602 if(flge==6) 603 flge=10; 604 eat_kuai(); 605 if(flge==7) 606 { 607 run3(); 608 flge=100; 609 } 610 if(flge!=100) 611 { 612 int kuaif1,kuaif2; 613 kuaif1=can(snack_hx,snack_hy,kuai_x,kuai_y); 614 kuaif2=can(snack_tx,snack_ty,kuai_x,kuai_y); 615 heard(snack_hx,snack_hy); 616 tail(snack_tx,snack_ty); 617 if(kuaif1==1&&kuaif2==1) 618 { 619 law(snack_hx,snack_hy,kuai_x,kuai_y); 620 getin(); 621 run2();run1(); 622 } 623 624 if(kuaif2!=kuaif1||(kuaif1==0&&kuaif2==0)) 625 { 626 int aa,bb; 627 aa=abs((snack_hx+snack_hy)); 628 bb=abs((snack_tx+snack_ty)); 629 if(abs((aa-bb))==1); 630 int t=snack[snack_tx][snack_ty].f; 631 snack[snack_tx][snack_ty].f=0; 632 law(snack_hx,snack_hy,snack_tx,snack_ty); 633 snack[snack_tx][snack_ty].f=t; 634 getin(); 635 run2();run1(); 636 } 637 638 639 } 640 } 641 642 643 if(flge==100) 644 {build();norun=0;} 645 getin(); 646 run1(); 647 if(flge==11)break; 648 if(flge==1) 649 flge=10; 650 run2(); 651 if(flge==2) 652 flge=10; 653 view(); 654 scor(); 655 bianjie(); 656 if(flge==55)break; 657 if(flge==5) 658 flge=10; 659 eat_own(); 660 if(flge==66)break; 661 if(flge==6) 662 flge=10; 663 eat_kuai(); 664 if(flge==7) 665 { 666 run3(); 667 flge=100; 668 } 669 //{law(snack_hx,snack_hy,snack_tx,snack_ty); 670 Sleep(500); 671 //Sleep(500-10*ku); 672 } 673 if(a<score) 674 a=score; 675 kbhit(); 676 next=getch(); 677 if(next==27) 678 next=0; 679 } 680 score=a; 681 score=score-2; 682 return score; 683 }
以上是关于贪吃蛇(部分AI功能)的主要内容,如果未能解决你的问题,请参考以下文章