2013/03/10
寫不出來稿子也寫不出來三題的時候突然燃起程序的心- -舞骆、
沒裝上EGE也沒學(xué)會GUI,半年沒碰代碼居然搞定了這種東西真是不可思議啊……
用的是最基礎(chǔ)的東西炸裆,沒有一點算法優(yōu)化喻粹,沒有一點模塊化宇葱,理論上提高算法效率可以降低頻閃頻率,也許有空會做做優(yōu)化绰播?眼睛都被晃瞎了還做個毛啊- -、
注意事項:
1尚困、方向鍵控制
2蠢箩、任意鍵暫停
3、關(guān)掉中文輸入法事甜,否則你亂按的話會抖屏
4谬泌、因為不會前面提到的兩種技術(shù),所以會有頻閃逻谦,注意保護眼睛
5掌实、可能會報毒,不要理它- -邦马、
更新報告:
v1.1:
根據(jù)瑤瑤的建議刪去了下面的lenth提示贱鼻,感覺還不錯- -、
下面上代碼
/* Name: 貪吃蛇 Copyright: 千葉@lapse from virtue Version: v1.1 Date: 10-03-13 13:14 Description:方向鍵控制&任意鍵暫停&關(guān)掉中文輸入法&注意保護眼睛 */ #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <unistd.h> #include <time.h> #include <conio.h> int main() { char f; //標志變量 srand((unsigned)time(NULL)); //隨機種子 do { char a[50][100]; //框架 int i,j; //循環(huán)變量 int lenth=5; //身長 int dir[80]; //方向 int x=10,y=30,x0,y0; //頭的位置 int m=10,n=26; //尾的位置 int eggx,eggy; //蛋的位置 char k1,k2; //接收輸入的變量 for(i=0;i<24;i++) //初始化框架 for(j=0;j<79;j++) a[i][j]=' '; for(i=26;i<=30;i++) //初始化身 a[10][i]='*'; for(i=1;i<=lenth;i++) //初始化方向 dir[i]=4; do //初始化蛋 { eggx=rand()%24; eggy=rand()%79; }while(a[eggx][eggy]=='*'); a[eggx][eggy]='o'; while(1) //主循環(huán) { if(kbhit()) //接收輸入 { k1=getch(); k2=getch(); if(k2==72 && x-1!=x0) dir[lenth]=1; else if(k2==80 && x+1!=x0) dir[lenth]=2; else if(k2==75 && y-1!=y0) dir[lenth]=3; else if(k2==77 && y+1!=y0) dir[lenth]=4; } else { x0=x;y0=y; if(dir[lenth]==1) //頭行進 if(x-1>=0) x--; else x=23; else if(dir[lenth]==2) if(x+1<24) x++; else x=0; else if(dir[lenth]==3) if(y-1>=0) y--; else y=78; else if(dir[lenth]==4) if(y+1<79) y++; else y=0; if(a[x][y]=='*' && !(x==m && y==n)) //撞死 { printf("Game Over\n"); break; } if(a[x][y]=='o') //吃蛋 { a[x][y]='*'; lenth++; dir[lenth]=dir[lenth-1]; do { eggx=rand()%24; eggy=rand()%79; }while(a[eggx][eggy]=='*'); a[eggx][eggy]='o'; } else //前進一格 { a[m][n]=' '; a[x][y]='*'; for(i=0;i<lenth;i++) dir[i]="dir[i+1];" if(dir[0]="=1)" if(m-1="">=0) m--; else m=23; else if(dir[0]==2) if(m+1<24) m++; else m=0; else if(dir[0]==3) if(n-1>=0) n--; else n=78; else if(dir[0]==4) if(n+1<79) n++; else n=0; } for(i=0;i<24;i++) //輸出 { for(j=0;j<79;j++) { printf("%c",a[i][j]); } printf("\n"); } sleep(100); //速度控制 system("cls"); //清屏 } } printf("lenth: %d\n",lenth); printf("Again?(y/n)"); do { f=getch(); }while(f!='y' && f!='n'); }while(f=='y'); return 0; }