1 Star 0 Fork 0

Sunhaonan / snack

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
snack_move.c 2.32 KB
一键复制 编辑 原始数据 按行查看 历史
Sunhaonan 提交于 2020-12-23 17:35 . add char-snack
#include <stdio.h>
#include <stdlib.h>
#define SNAKE_MAX_LENGTH 20
#define SNAKE_HEAD 'H'
#define SNAKE_BODY 'X'
#define WALL '*'
#define FOOD '$'
char map[12][12] =
{"************",
"*XXXXH *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"************"
};
int snake_length = 5;
int snake_X[SNAKE_MAX_LENGTH] = {1 , 2 , 3 , 4 , 5};
int snake_Y[SNAKE_MAX_LENGTH] = {1 , 1 , 1 , 1 , 1};
void snake_move (int dy , int dx);
void output(void);
void gameover(void);
int if_dead(void);
int eat_itself(void);
int main(){
char input;
output();
while(if_dead()){
input = getchar();
switch(input){
case 'A':
case 'a':
snake_move(0 , -1);
break;
case 'D':
case 'd':
snake_move(0 , 1);
break;
case 'W':
case 'w':
snake_move(-1 , 0);
break;
case 'S':
case 's':
snake_move(1 , 0);
break;
default:
break;
}
output();
}
gameover();
return 0;
}
int if_dead(){
if(snake_X[snake_length - 1] == 0 || snake_X[snake_length - 1] == 11
|| snake_Y[snake_length - 1] == 0 || snake_Y[snake_length - 1] == 11)
return 0;
if(eat_itself())
return 0;
return 1;
}
int eat_itself(){
int i , j;
for(i = 0 ; i < snake_length ; i ++){
for( j = i + 1 ; j < snake_length ; j ++)
if(snake_X[i] == snake_X[j] && snake_Y[i] == snake_Y[j])
return 1;
}
return 0;
}
void snake_move(int dy , int dx){
if((snake_X[snake_length - 1] + dx )== snake_X[snake_length - 2]
&& (snake_Y[snake_length - 1] + dy) == snake_Y[snake_length - 2])
return;
int i;
for(i = 0 ; i < snake_length - 1 ; i ++){
snake_X[i] = snake_X[i + 1];
snake_Y[i] = snake_Y[i + 1];
}
snake_X[snake_length - 1] += dx;
snake_Y[snake_length - 1] += dy;
return;
}
void output(){
system("cls");
int x , y , i , j;
for( x = 0 ; x < 12 ; x ++ ){
for( y = 0 ; y < 12 ; y ++){
if( x == 0 || x == 11 || y == 11 || y == 0)
map[x][y] = '*';
else
map[x][y] = ' ';
}
}
for( i = 0 ; i < snake_length - 1 ; i ++ ){
map[snake_Y[i]][snake_X[i]] = 'X';
map[snake_Y[snake_length - 1]][snake_X[snake_length - 1]] = 'H';
}
for( i = 0 ; i < 12 ; i ++ ){
for( j = 0 ; j < 12 ; j ++ ){
printf("%c",map[i][j]);
}
printf("\n");
}
}
void gameover(){
system("cls");
printf("END!");
return;
}
1
https://gitee.com/jerkhn/snack.git
git@gitee.com:jerkhn/snack.git
jerkhn
snack
snack
master

搜索帮助