c语言贪吃蛇游戏代码程序能运行(跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,)

:暂无数据 2026-03-30 09:40:01 0
本篇文章给大家谈谈c语言贪吃蛇游戏代码程序能运行,以及跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,

共俩个文件,一个game.h的头文件, 一个main.c的主程序文件

//////////////game.h文件

#ifndef _SNAKE_H_H_H
#define _SNAKE_H_H_H
//调节游戏界面大小,这里设置为15*15
int c***t COL = 15; /**c***t 修饰的值具有不可变性**/
int c***t ROW = 15;
//蛇节点
typedef struct Node
{
    int x;
    int y;
    struct Node *pre;
    struct Node *next;
}NODE, *pNODE;
//食物
typedef struct Food
{
    int x;
    int y;
    char c;
}FOOD, *pFOOD;
//初始化,创建蛇的第一节
pNODE InitSnake(void);
//初始化食物成员
FOOD InitFood(void);
//蛇运动函数
int MoveSnake(pNODE pHead, char c);
//检查键盘按键
char KbHit(char orient);
//蛇吃到食物处理函数
pNODE SnakeEatFood(pNODE pHead, pFOOD pFood);
//打印游戏界面函数
void Print(pNODE pHead, FOOD food);
//游戏结束,释放内存函数
void FreeMemory(pNODE *ppHead);
#endif
//////////main.c文件
#include 《stdio.h》
#include 《stdlib.h》
#include 《time.h》
#include 《conio.h》
#include 《Windows.h》
#include  "game.h"
//主函数
int main(void)
{
    char orien = ’a’, get_char;
    int game_over = 0;
    FOOD food = InitFood();      /**初始化食物**/
    pNODE head = InitSnake();   /**初始化头节点*/
    while (1)
    {
        head = SnakeEatFood(head, &food);
        get_char = KbHit(orien);
        if (27 == get_char)
        {
            game_over = 1;
            break;
        }
        else
            orien = get_char;
        game_over = MoveSnake(head, orien);
        if (game_over)
            break;
        system("cls");
        Print(head, food);
        Sleep(200); //ms级,刷屏间隔时间
    }
    if (game_over)
    {
        printf("游戏结束!\n");
        FreeMemory(&head);
        if (NULL == head)
            printf("内存释放成功!\n");
        else
            printf("内存释放失败!\n");
    }
    getch();
    return 0;
}
//初始化,创建蛇的第一节
pNODE InitSnake(void)
{
    pNODE pHead = (pNODE)malloc(sizeof(NODE));
    srand((unsigned)(time(NULL)+1));
    if (NULL == pHead)
    {
        printf("内存分配失败!\n");
        exit(-1);
    }
    pHead-》x = rand() % ROW;
    pHead-》y = rand() % COL;
    pHead-》next = NULL;
    pHead-》pre = NULL;
    return pHead;
}
//初始化食物成员
FOOD InitFood(void)
{
    FOOD food;
    srand((unsigned)time(NULL));
    food.x = rand() % ROW;
    food.y = rand() % COL;
    food.c = 65 + rand()%26;
    return food;
}
//蛇吃到食物处理函数
pNODE SnakeEatFood(pNODE pHead, pFOOD pFood)
{
    pNODE p_add = NULL, pt = NULL, rear = NULL;
    if (pFood-》x == pHead-》x && pFood-》y == pHead-》y)
    {
        p_add = (pNODE)malloc(sizeof(NODE));
        if (NULL == p_add)
        {
            printf("内存分配失败!\n");
            exit(-1);
        }
        pt = pHead;
        while (pt-》next != NULL)
        {
            pt = pt-》next;
        }
        p_add-》pre = pt;
        p_add-》next = NULL;
        pt-》next = p_add;
        *pFood = InitFood();
        //不让食物出现在蛇的位置上
        pt = pHead;
        while (pt != NULL)
        {
            if (pFood-》x == pHead-》x && pFood-》y == pHead-》y)
            {
                *pFood = InitFood();
                break;
            }
            pt = pt-》next;
        }
    }
    return pHead;
}
//检查键盘按键
char KbHit(char orient)
{
    char c;
    if (kbhit())
    {
        c = getch();
        if (orient != ’d’ && c == ’a’)
        {
            orient = c;
        }
        else if (orient != ’a’ && c == ’d’)
        {
            orient = c;
        }
        else if (orient != ’w’ && c == ’s’)
        {
            orient = c;
        }
        else if (orient != ’s’ && c == ’w’)
        {
            orient = c;
        }
        else if (27 == c)
        {
            orient = c;
        }
    }
    return orient;
}
//蛇运动函数
int MoveSnake(pNODE pHead, char c)
{
    INT game_over = 0;
    pNODE pt = pHead;
    //让pt指向蛇尾
    while (pt-》next != NULL)
    {
        pt = pt-》next;
    }
    //从蛇尾向向蛇头前进
    while(pt != pHead)
    {
        pt-》x = pt-》pre-》x;
        pt-》y = pt-》pre-》y;
        pt = pt-》pre;
    }
    if (’d’ == c)
    {
        pHead-》x += 1;
        if (pHead-》x 》= ROW)
        {
            pHead-》x -= ROW;
        }
    }
    if (’a’ == c)
    {
        pHead-》x -= 1;
        if (pHead-》x 《 0)
        {
            pHead-》x += ROW;
        }
    }
    if (’s’ == c)
    {
        pHead-》y += 1;
        if (pHead-》y 》= COL)
        {
            pHead-》y -= COL;
        }
    }
    if (’w’ == c)
    {
        pHead-》y -= 1;
        if (pHead-》y 《 0)
        {
            pHead-》y += COL;
        }
    }
    //当蛇头碰到蛇身,游戏结束
    pt = pHead-》next;
    while (pt != NULL)
    {
        if (pt-》x == pHead-》x && pt-》y == pHead-》y)
        {
            game_over = 1;
        }
        pt = pt-》next;
    }
    return game_over;
}
//打印游戏界面函数
void Print(pNODE pHead, FOOD food)
{
    int row = 0, col = 0, flag = 0;
    pNODE pt = NULL;
    printf("  方向控制——上:w 下:s 左:a 右:d(Esc退出)\n  ");
    for (row=0; row《ROW; row++)
    {
        printf("—");
    }
    putchar(’\n’);
    for (col=0; col《COL; col++)
    {
        printf(" |");
        for (row=0; row《ROW; row++)
        {
            pt = pHead;
            flag = 0;
            //打印出蛇
            while (pt != NULL)
            {
                if (row == pt-》x && col == pt-》y)
                {
                    if (pt == pHead)
                        printf("■");
                    else
                        printf("□");
                    flag = 1;
                    break;
                }
                pt = pt-》next;
            }
            //打印出食物或两个空格
            if (0 == flag)
            {
                if (row == food.x && col == food.y)
                {
                    putchar(food.c);
                    putchar(food.c);
                    continue;
                }
                printf("  ");
            }
        }
        printf("|");
        putchar(’\n’);
    }
    printf("  ");
    for (row=0; row《ROW; row++)
    {
        printf("—");
    }
    putchar(’\n’);
}
//释放内存函数
void FreeMemory(pNODE *ppHead)
{
    pNODE p_delete = NULL, pt = NULL;
    while (*ppHead != NULL)
    {
        pt = (*ppHead)-》next;
        if (pt != NULL)
        {
            pt-》pre = NULL;
        }
        p_delete = *ppHead;
        ****(p_delete);
        p_delete = NULL;
        *ppHead = pt;
    }
}

求c语言的贪吃蛇的代码 能运行的

// C***oleApplication1.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include 《stdio.h》
#include 《windows.h》
#include 《time.h》
#include 《conio.h》
#define frame_height 20 //define map size
#define frame_width 40
#define UP ’w’ //define operate key
#define DOWN ’s’
#define LEFT ’a’
#define RIGHT ’d’
int i, j, k;
char ch = UP; //initial direction
int grow = 0; //flag: if snake grow
struct Food {
int x;
int y;
}food;
struct Snake {
int x;
int y;
int len;
int speed;
}snake; //snake is head
void init_map(void);
void update_food(void);
void move_snake(void);
int is_alive(void);
void get_speed(void);
void gotoxy(int x, int y);
int main()
{
init_map();  //初始化地图
while (1)
{
update_food();
//是否产生食物
get_speed();  //获取速度
move_snake();  //移动蛇身
Sleep(snake.speed);
//移动速度
if (!(is_alive()))
//蛇的死活(撞墙或自食)
break;
}
printf("Game Over!");
_getch();
return 0;
}
//initialize
void init_map(void)
{
//initial food
srand(time(NULL));
food.x = rand() % (frame_height - 2) + 1;
food.y = rand() % (frame_width - 2) + 1;
gotoxy(food.x, food.y);
printf("!");
//initial snake
snake.x = frame_height / 2;
snake.y = frame_width / 2;
gotoxy(snake.x);
printf("@");
snake.len = 3;
snake.speed = 200;
for (k = 1; k《snake.len; k++)
{
snake.x + 1;
snake.y;
gotoxy(snake.x);
printf("@");
}
//initial bar
for (j = 0; j《frame_width; j++)
{
gotoxy(0, j);
printf("#");
gotoxy(frame_height - 1, j);
printf("#");
}
for (i = 1; i《frame_height - 1; i++)
{
gotoxy(i, 0);
printf("#");
gotoxy(i, frame_width - 1);
printf("#");
}
}
//generate food
void update_food()
{
if (snake.x == food.y)
{
srand(time(NULL));
food.x = rand() % (frame_height - 2) + 1;
food.y = rand() % (frame_width - 2) + 1;
gotoxy(food.x, food.y);
printf("!");
snake.len++;
grow = 1;
}
}
//move snake
void move_snake()
{
if (_kbhit())
ch = _getch();
if (!grow)
{
gotoxy(snake.x);
printf(" ");
}
for (k = snake.len - 1; k》0; k--)
{
snake.x;
snake.y;
}
switch (ch)
{
case UP:  snake.x--; break;
case DOWN:  snake.x++; break;
case LEFT:  snake.y--; break;
case RIGHT:  snake.y++; break;
default:  break;
}
gotoxy(snake.x);
printf("@");
grow = 0;
gotoxy(frame_height, 0);
}
//is alive
int is_alive(void)
{
if (snake.x == 0)
return 0;
for (k = 1; k《snake.len; k++)
if (snake.x)
return 0;
return 1;
}
//speed up
void get_speed(void)
{
if (snake.len 《= 6)
snake.speed = 200;
else if (snake.len 《= 10)
snake.speed = 100;
else if (snake.len 《= 20)
snake.speed = 50;
else if (snake.len 《= 30)
snake.speed = 30;
else snake.speed = 20;
}
//move cursor
void gotoxy(int x, int y)
{
HANDLE hout;
COORD cor;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
cor.X = y;
cor.Y = x;
SetC***oleCursorPosition(hout, cor);
}

求一个c语言贪吃蛇代码 能在cb下运行

#include《graphics.h》
#include《conio.h》
#include《dos.h》
#include《bios.h》
#include《stdlib.h》
#define STATIC 0
#define TRUE 1
#define FALSE 0
#define UP 1
#define RIGHT 2
#define DOWN 3
#define LEFT 4
#define VK_LEFT 0x4b00 /*上下左右键的值*/
#define VK_RIGHT 0x4d00   
#define VK_DOWN 0x5000
#define VK_UP 0x4800
#define VK_ESC 0x011b
 
int board;
int snakelength=0;
 
 
 
 
struct snake{
public:
int x=0;
int y=0;
int direction;
}body;
snake food;
void makefood();/*产生一个食物*/
int eatfood(); /*蛇吃掉食物*/
void right(); /*上下左右的函数了*/
void down();
void left();
void up();
void getdirection(); /*判断蛇的方向*/
 
 
move(snake *body)/*让蛇动起来*/
{int x=body.y;
 
 if(body-》direction==RIGHT&&board!=1)right();
 elseif(body-》direction==DOWN&&board!=1)down();
 elseif(body-》direction==LEFT&&board!=1)left();
 elseif(body-》direction==UP&&board!=1)up();
 
  return 0;
}
 
void print() /*在屏幕上显示蛇*/
{int i,j,x=0,y=0;
 for(i=1;i《21;i++)
 for(j=1;j《21;j++)
 board=0;
 
 for(i=0;i《20;i++)
 {x=body.x;
  y=body.y;
  board=1;
 }
 
board=2;
 
 
 
 
 for(i=1;i《21;i++)
 for(j=1;j《21;j++)
 {if(board==1)
    {setfillstyle(SOLID_FILL,WHITE);
     bar(j*15,i*15,j*15+13,i*15+13);
     }
  if(board==0)
    {setfillstyle(SOLID_FILL,BLACK);
     bar(j*15,i*15,j*15+13,i*15+13);
     }
  if(board==2)
    {setfillstyle(SOLID_FILL,RED);
      bar(j*15,i*15,j*15+13,i*15+13);
     }
   }
}
main(int second=0)
{
int gdriver=CGAC0,gmode;        
initgraph(&gdriver,&gmode,"c:\\tc\\bgi");/*BGI文件夹的路径,我的是c:\tc\bgi,这里得自己改下*/
 randomize();
 int i,j;
 int flag;
 longtime=100000;
 for(i=0;i《21;i++)
 for(j=0;j《21;j++)
 board=0;
 
 for(i=0;i《22;i++)
{board=1;}
 
 
 snakelength=3;
 body.direction=RIGHT;
 body.y=2;
 body.y=2;
 makefood();
 
 print();
 getch();
 
 
 
 
 for(i=0;i《30000;i++)
 {
 
 move(&body);
 getdirection();
 flag=eatfood();
 if(flag==TRUE){print();makefood();};
  print();
 for(j=0;j《second;j++)delay(200);
  }
 
line(0,0,400,400);
 getch();
 
}
 
 
void right()
{int i;
 for(i=snakelength-1;i》0;i--)
 {body.x;
 body.y;
 }
  body.x++;
}
void down()
{int i;
 for(i=snakelength-1;i》0;i--)
 {body.x;
 body.y;
 }
 body.y++;
}
void left()
{int i;
 for(i=snakelength-1;i》0;i--)
 {body.x;
 body.y;
 }
 body.x--;
}
void up()
{int i;
 for(i=snakelength-1;i》0;i--)
 {body.x;
 body.y;
 }
 body.y--;
}
void getdirection()
{int key=0;
 if(bioskey(1)!=0)
 key=bioskey(0);
 
 switch(key)
{case VK_UP:    if(body.direction=UP;break;
 caseVK_RIGHT: if(body.direction=RIGHT;break;
 caseVK_DOWN:  if(body.direction=DOWN;break;
 caseVK_LEFT:  if(body.direction=LEFT;break;
 case VK_ESC:exit(0);
}
}
void makefood()
{int i,j;
 food.x=0;
 food.y=0;
 
 print();
 
 food.x=random(20);
 food.y=random(20);
 for(;;)
 {if(board!=0)
  {
 
 food.x=random(20);
 food.y=random(20);
  }
   else break;
 }
 
 food.direction=body.direction;
 board=2;
}
 
 
int eatfood()
{int i=FALSE;
 
 intx=body.y;
 
 
 if(body==2)
 {snakelength++;
  for(i=snakelength-1;i》0;i--){body.y;}
   body.x=food.x;
  body.y=food.y;
   food.x=0;
   food.y=0;
   i=TRUE;
 }
 
 if(body==2)
{ snakelength++;
  for(i=snakelength-1;i》0;i--){body.y;}
  body.x=food.x;
   body.y=food.y;
   food.x=0;
   food.y=0;
   i=TRUE;
 }
 
 if(body==2)
 {snakelength++;
  for(i=snakelength-1;i》0;i--){body.y;}
  body.x=food.x;
  body.y=food.y;
   food.x=0;
   food.y=0;
   i=TRUE;
 }
 if(body==2)
 {snakelength++;
  for(i=snakelength-1;i》0;i--){body.y;}
  body.x=food.x;
  body.y=food.y;
   food.x=0;
   food.y=0;
   i=TRUE;
 }
 
 return i;
}

本文系统阐述了c语言贪吃蛇游戏代码程序能运行及其关键组成部分跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,的定义、特点与关联。更多扩展内容,可参阅相关条目。
本文编辑:admin

更多文章:


xposed模块(面具23怎么刷xposed框架)

xposed模块(面具23怎么刷xposed框架)

“xposed模块”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看xposed模块(面具23怎么刷xposed框架)!

2026年3月30日 11:20

洛克王国专用flash(洛克王国为啥还在坚持flash)

洛克王国专用flash(洛克王国为啥还在坚持flash)

你有没有想过,洛克王国专用flash的关键突破口,可能就藏在洛克王国为啥还在坚持flash之中?本篇内容将为你验证这个猜想。

2026年3月30日 11:00

springcloud各组件详解(18.SpringCloud有哪些组件)

springcloud各组件详解(18.SpringCloud有哪些组件)

您是否正在为搞不清springcloud各组件详解和18.SpringCloud有哪些组件的关系而烦恼?恭喜,这篇干货就是您的“及时雨”。

2026年3月30日 10:40

数据结构课程设计通讯录管理系统(数据结构课程设计,通讯录管理系统)

数据结构课程设计通讯录管理系统(数据结构课程设计,通讯录管理系统)

关于数据结构课程设计通讯录管理系统,您需要知道的几个关键点,尤其是数据结构课程设计,通讯录管理系统的深入解析,我们都将在这篇文章中涵盖。

2026年3月30日 10:20

ajax实时刷新页面(AJAX如何做到点击发送能刷新整个页面)

ajax实时刷新页面(AJAX如何做到点击发送能刷新整个页面)

本文旨在为您说清楚两件事:一是ajax实时刷新页面到底是什么,二是如何理解AJAX如何做到点击发送能刷新整个页面。内容不长,但都是干货,希望能对您有所帮助。

2026年3月30日 10:00

c语言贪吃蛇游戏代码程序能运行(跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,)

c语言贪吃蛇游戏代码程序能运行(跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,)

本篇文章给大家谈谈c语言贪吃蛇游戏代码程序能运行,以及跪求贪吃蛇C语言程序,要确保可以运行的,在300行左右,谢谢大神,对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,

2026年3月30日 09:40

氨基酸asp低(各种氨基酸的缩写)

氨基酸asp低(各种氨基酸的缩写)

本文将围绕氨基酸asp低展开,重点探讨三个方面:各种氨基酸的缩写的基本概念、常见误区以及实践应用。让我们开始吧。

2026年3月30日 09:20

手机版android开发软件(androidapp用什么开发好(安卓用什么开发))

手机版android开发软件(androidapp用什么开发好(安卓用什么开发))

您是否曾想过,手机版android开发软件究竟是怎么一回事?它与androidapp用什么开发好(安卓用什么开发)之间又有什么联系?本文将为您一探究竟。

2026年3月30日 09:00

javasubstring截取字符串(java中如何截取字符串中的指定一部分)

javasubstring截取字符串(java中如何截取字符串中的指定一部分)

最新数据显示,关注javasubstring截取字符串的人中,超过70%都对java中如何截取字符串中的指定一部分抱有浓厚兴趣。本文将满足这一核心需求。

2026年3月30日 08:40

u4f60转中文(\u6211\u559c\u6622\u4f60\u554a什么意思)

u4f60转中文(\u6211\u559c\u6622\u4f60\u554a什么意思)

本篇文章给大家谈谈u4f60转中文,以及\u6211\u559c\u6622\u4f60\u554a什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏

2026年3月30日 08:20

最近更新

xposed模块(面具23怎么刷xposed框架)
2026-03-30 11:20:01 浏览:0
springcloud各组件详解(18.SpringCloud有哪些组件)
2026-03-30 10:40:01 浏览:0
氨基酸asp低(各种氨基酸的缩写)
2026-03-30 09:20:01 浏览:0
u4f60转中文(\u6211\u559c\u6622\u4f60\u554a什么意思)
2026-03-30 08:20:01 浏览:0
热门文章

标签列表