本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下
/********************************************************* ********************贪吃蛇(难度可选)******************** **************制作者:Xu Lizi 日期:2012/12/31******** ********************部分函数有借鉴************************ **********************************************************/ #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<time.h> int snakey[100]={
5,4,3,2,1}
;
/*定义蛇的横坐标*/ int snakex[100]={
1,1,1,1,1}
;
/*定义蛇的纵坐标,蛇头起始位置为(5,1)*/ int life=0;
/*定义蛇的生命,0表示存活,1表示死亡*/ int lenght=5;
/*定义蛇的长度,初始为5节*/ char map[12][24]={
"***********************", /*y*/ "* *", "* *", "* *", "* *", "* *", "* *", "* *", "* *", "* *", "* *", /*x*/ "***********************"}
;
void put_money(int i,int j) /*放钱函数,使用随机数,随机出现食物*/ {
int x=0,y=0;
srand(time(NULL));
while ( (map[y][x]==003) || (map[y][x]==002) || (map[y][x]=='*') || ((x==i)&&(y==j)) ) {
x=rand()%21+1;
y=rand()%10+1;
}
map[y][x]='$';
return;
}
void output() /*输出*/ {
system("cls");
int i,j;
for(i=0;
i<12;
i++) {
for(j=0;
j<23;
j++) printf("%c", map[i][j]);
printf("n");
}
return;
}
void gameover() /*游戏结束*/ {
life=1;
printf("笨蛋,输了吧!!!n");
return;
}
void turn_up() /*向上移动*/ {
system("cls");
int i;
if ( (snakex[0]==1) || (map[snakex[0]-1][snakey[0]]==003) ) gameover();
else {
if (map[snakex[0]-1][snakey[0]]=='$') {
put_money( snakey[0], snakex[0]-1 );
lenght++;
map[snakex[lenght-1]][snakey[lenght-1]]=003;
}
for(i=lenght;
i>0;
i--) {
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
map[snakex[lenght]][snakey[lenght]]=' ';
snakex[0]--;
for(i=lenght-1;
i>0;
i--) map[snakex[i]][snakey[i]]=003;
map[snakex[0]][snakey[0]]=002;
output();
}
return;
}
void turn_down() /*向下*/ {
system("cls");
int i;
if ( (snakex[0]==10) || (map[snakex[0]+1][snakey[0]]==003) ) gameover();
else {
if (map[snakex[0]+1][snakey[0]]=='$') {
put_money(snakey[0],snakex[0]+1);
lenght++;
map[snakex[lenght-1]][snakey[lenght-1]]=003;
}
for(i=lenght;
i>0;
i--) {
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
snakex[0]++;
map[snakex[lenght]][snakey[lenght]]=' ';
for(i=lenght-1;
i>0;
i--) map[snakex[i]][snakey[i]]=003;
map[snakex[0]][snakey[0]]=002;
output();
}
return;
}
void turn_left() /*向左*/ {
system("cls");
int i;
if ( (snakey[0]==1) || (map[snakex[0]][snakey[0]-1]==003) ) gameover();
else {
if (map[snakex[0]][snakey[0]-1]=='$') {
put_money(snakey[0]-1,snakex[0]);
lenght++;
map[snakex[lenght-1]][snakey[lenght-1]]=003;
}
for(i=lenght;
i>0;
i--) {
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
map[snakex[lenght]][snakey[lenght]]=' ';
snakey[0]--;
for(i=lenght-1;
i>0;
i--) map[snakex[i]][snakey[i]]=003;
map[snakex[0]][snakey[0]]=002;
output();
}
return;
}
void turn_right() /*向右*/ {
system("cls");
int i;
if ( (snakey[0]==21) || (map[snakex[0]][snakey[0]+1]==003) ) gameover();
else {
if (map[snakex[0]][snakey[0]+1]=='$') {
put_money(snakey[0]+1,snakex[0]);
lenght++;
map[snakex[lenght-1]][snakey[lenght-1]]=003;
}
for(i=lenght;
i>0;
i--) {
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
map[snakex[lenght]][snakey[lenght]]=' ';
snakey[0]++;
for(i=lenght-1;
i>0;
i--) map[snakex[i]][snakey[i]]=003;
map[snakex[0]][snakey[0]]=002;
output();
}
return;
}
int main() {
int i,timeover,hard;
long start;
char name , direcation;
printf("n 向上移动:W ;向下移动:S ;
向左移动:A ; 向右移动:D n");
printf("t请选择难度(数字)nt分1~5级,分别代表nt1难,2中上,3中,4中下5,易:n");
scanf("%d",&hard);
system("cls");
for(i=1;
i<5;
i++) map[1][i]=003;
/*输出蛇身*/ map[1][5]=002;
/*输出蛇头*/ put_money(0,0);
output();
while(life!=1) /*当蛇死亡时结束循环*/ {
/*让蛇自动运行的函数******有借鉴*/ timeover=1;
start=clock();
while((timeover=(clock()-start<=hard*100))&&!kbhit());
//难度设定 if(timeover) {
direcation=getch();
}
/*让蛇自动运行的函数******有借鉴*/ switch(direcation) {
case 'w':turn_up();
break;
case 's':turn_down();
break;
case 'a':turn_left();
break;
case 'd':turn_right();
break;
}
}
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- C语言实现贪吃蛇游戏
- C语言手把手教你实现贪吃蛇AI(下)
- C语言手把手教你实现贪吃蛇AI(中)
- C语言手把手教你实现贪吃蛇AI(上)
- C语言贪吃蛇经典小游戏
- C语言链表实现贪吃蛇游戏
- C语言结构数组实现贪吃蛇小游戏
- 基于C语言实现的贪吃蛇游戏完整实例代码
- 70行C语言代码实现贪吃蛇