Ubuntu下纯代码编写简易贪吃蛇游戏(第二次做)

这是一个在Ubuntu环境下使用C语言编写的简易贪吃蛇游戏。游戏包括控制蛇移动、吃食物、碰撞检测等功能,通过键盘输入控制蛇的方向。当蛇吃到食物时,长度会增加;如果蛇碰到自身或边界,游戏结束。玩家可以选择是否升级到下一关,游戏速度会随关卡提升而加快。
摘要由CSDN通过智能技术生成


源文件名snake2.c


行效果图如下



源代码如下:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <termios.h>
#include <time.h>
#include <limits.h>


#define MOVEUP(x) printf("\033[%dA", (x)) 




static struct termios ori_attr,cur_attr;
static inline int tty_reset();
static inline int kbhit();
static inline int tty_set();
#define ROW_MAX 20
#define COL_MAX 50


#define SPEED_MAX 500
#define SPEED_MIN 125
#define SNAKELEN 3


#define SNAKE_HEAD '@'
#define SNAKE_BODY '#'
#define FOOD '$'




#define LEFT 'a'
#define RIGHT 'd'
#define UP 'w'
#define DOWN 's'


#define EAT_SPACE 1
#define EAT_FOOD 2
#define EAT_BODY 0


char dc = '0';
char bodyDc = '0';


 float speed = SPEED_MAX ;//ms
 int snake_length = 0;
 int grade  = 1;
 
 struct Location
 {
     int row;
     int col;
 };
 
 typedef struct ske
 {
     struct Location place;
     struct ske *next;
 }Snake;
 
 struct Location food;
 Snake *head = NULL;
 
 char str[ROW_MAX][COL_MAX];
 
void Init_str();
void Display();
void Init_food();
void Init_snake();
void Wait_game();


int Snake_move();
void moveToUp();
void moveToDown();
void moveToLeft();
void moveToRight();


void snakeShow();
void foodShow();
void reDisplay();
void GameOver();


void addBody(int,int);
void moveBody(int,int);
void Delay();


int isUpgrade();
int Upgrade();
void releaseSnake();
void PrintRule();


 int main()
 {
     int again = 0;
    
     do
     {
//printf("\033[2J");
         int flag = 0;
again = 0;


         Init_str();
         Init_snake();
         Init_food();
         Display();


         Wait_game();
         while(1)
         {
             flag = Snake_move() ;
     if(flag == EAT_BODY)
     {
GameOver();
     }
             reDisplay();
             Delay();
             
             if(isUpgrade())
             {
again = Upgrade();     
                 break;
             }
         }
     }while( again == 1);


 }


void PrintRule()
{
    printf("**************************************************\n");
    printf("* 游戏规则:【@】表示蛇头,【$】表示食物,【#】  *\n");
    printf("* 表示蛇的身体。每吃到一个食物蛇的身体加长一个, *\n");
    printf("* 吃到蛇身或撞到墙,则游戏结束                   *\n");
    printf("* 按wsad可以控制蛇移动方向,分别表示上下左右方向 *\n");
    printf("* 请按wsad键开始游戏                             *\n");
    printf("**************************************************\n");
}


void GameOver()
{
    printf("Game Over!!!\n");
    printf("you play %d grade,and score is :%d\n",grade,(grade-1)*2000+(snake_length-1)*100);
    exit(1);
}


int Upgrade()
{
    if( speed <= SPEED_MIN)
    {
printf("Congratulations!!! you win.\n");
exit(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值