邀请码 发表于 2016-8-12 15:48 那叫做slither.... |
森林木 发表于 2016-8-12 21:37 代码发了,你看看还有什么要加的,还有,怎么编辑开始界面与菜单呐,感觉这个好丑 |
邀请码 发表于 2016-8-13 11:29 用同一个随机数求余所得的不同数应该也是随机的吧,代码我发了,你看看 |
#include <stdio.h> #include <stdlib.h> #include <windows.h> #define W 30 #define H 30 int main() {int map[H][W],x,y,l,size,direction=3,sx[1000],sy[1000],xf,yf,speed,full,score,sleeptime,s1,s2,s3; char key,stop; for(x=0;x<H;x++) { for(y=0;y<W;y++) { if(x==0||y==0||x==H-1||y==W-1) {map[x][y]=19;} else{map[x][y]=10;} } } sx[1]=15;sy[1]=15; sx[2]=15;sy[2]=14; sx[3]=15;sy[3]=13; sx[4]=15;sy[4]=12; printf("贪吃蛇"); printf("操作:a左转,d右转,空格暂停/继续\n请按任意键继续\n"); stop=getch(); printf("请输入游戏速度: 格/秒(正整数,且小于1000)"); scanf("%d",&speed); printf("请按任意键继续"); stop=getch(); system("cls"); size=4; sleeptime=1000/speed; full=0; for(l=1;l<=size;l++) map[sx[l]][sy[l]]=11; do{ srand((unsigned)time(NULL)); xf=rand()%29; yf=rand()%31; } while(map[xf][yf]!=10); map[xf][yf]=12; while(sx[1]!=0&&sy[1]!=0&&sx[1]!=H-1&&sy[1]!=W-1) { if(kbhit()) key=getch(); switch(key) { case'a':if(direction==3)direction=direction+9; else direction=direction-3;break; case'd':if(direction==12)direction=direction-9; else direction=direction+3;break; case' ':stop=getch();break; default:break; } switch(direction) { case 3:sy[0]=sy[1]+1;sx[0]=sx[1];break; case 6:sx[0]=sx[1]+1;sy[0]=sy[1];break; case 9:sy[0]=sy[1]-1;sx[0]=sx[1];break; case 12:sx[0]=sx[1]-1;sy[0]=sy[1];break; } if(map[sx[0]][sy[0]]==12) { full=1; score=score+10; do{ srand((unsigned)time(NULL)); xf=rand()%31; yf=rand()%29; } while(map[xf][yf]!=10); map[xf][yf]=12; } if(map[sx[0]][sy[0]]==11) break; for(l=size+1;l>=1;l--) {sx[l]=sx[l-1]; sy[l]=sy[l-1];} map[sx[1]][sy[1]]=11; map[sx[size+1]][sy[size+1]]=10; system("cls"); for(x=0;x<H;x++) { for(y=0;y<W;y++) { if(map[x][y]==10) printf(" "); else if(map[x][y]==19) printf("■"); else if(map[x][y]==11) printf("■"); else if(map[x][y]==12) printf("◆"); } printf("\n"); } Sleep(sleeptime); key='w'; if(full==1) size++; full=0; } score=size-4; s1=score%10; s2=((score-s1)/10)%10; s3=((score-s1-s2*10)/100)%10; for(x=0;x<H;x++) { for(y=0;y<W;y++) { if(x==0||y==0||x==H-1||y==W-1) {map[x][y]=9;} else{map[x][y]=0;} map[14][10]=103; map[14][11]=97; map[14][12]=109; map[14][13]=101; map[14][16]=111; map[14][17]=118; map[14][18]=101; map[14][19]=114; map[16][10]=115; map[16][11]=99; map[16][12]=111; map[16][13]=114; map[16][14]=101; map[16][17]=s3; map[16][18]=s2; map[16][19]=s1; } } system("cls"); for(x=0;x<H;x++) { for(y=0;y<W;y++) { if(map[x][y]==0) printf(" "); else if(map[x][y]==9) printf("■"); else if(map[x][y]>=97&&map[x][y]<=122)printf("%2c",map[x][y]); else if(map[x][y]>=0&&map[x][y]<=9)printf("%2d",map[x][y]); } printf("\n"); } system("pause"); } |
3.53 KB, 下载次数: 33
程序源代码 发表于 2016-8-13 10:06 srand在程序最开头,也就是int main()的下方调用一次,而不是每次都调用。 |
please发一下源代码 |
Hi~ o(* ̄▽ ̄*)ブ |
图片是蛇蛇大作战。。。 |