贪吃蛇代码c语言(新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不)

2024-08-22 23:06:05 0

贪吃蛇代码c语言(新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不)

本篇文章给大家谈谈贪吃蛇代码c语言,以及新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不

贪吃蛇 #define N 200 #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b int i,key; int score=0;/*得分*/ int gamespeed=50000;/*游戏速度自己调整*/ struct Food { int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/ struct Snake { int x; int y; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/ }snake; void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DrawK(void);/*开始画面*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*/ /*主函数*/ void main(void) { Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/ } /*图形驱动*/ void Init(void) { int gd=DETECT,gm; initgraph(&gd,&gm,"c:\\tc"); cleardevice(); } /*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void) { /*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i《=600;i+=10)/*画围墙*/ { rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i《=450;i+=10) { rectangle(50,i,59,i+10); /*左边*/ rectangle(601,i,610,i+10);/*右边*/ } } /*玩游戏具体过程*/ void GamePlay(void) { randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*活着*/ snake.direction=1;/*方向往右*/ snake.x=100;/*蛇头*/ snake.x=100; snake.node=2;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if(food.yes==1)/*需要出现新食物*/ { food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ food.x++; while(food.y%10!=0) food.y++; food.yes=0;/*画面上有食物了*/ } if(food.yes==0)/*画面上有食物了就要显示*/ {

c语言贪吃蛇代码问题,按左右按一下不能一直移动,请帮忙改下

/*program by wlfryq 71693456@qq.com*/#include 《stdio.h》#include 《stdlib.h》#include 《conio.h》#include 《windows.h》#include 《time.h》#include 《direct.h》#include 《stdbool.h》#define W 80 //屏幕宽度 #define H 37 //屏幕高度 #define SNAKE_ALL_LENGTH 200 //蛇身最长为 void CALLBACK TimerProc(HWND hwnd, UINT message, UINT idTimer, DWORD dwTime);void start();struct MYPOINT{int x;int y;} s , head, end, food;int max_count=0; //历史最高分,如果count》max_count, 则max_count=countint old_max_count=0; //历史最高分,不会变动, 用于死亡时判断max_count是否大于old_max_count,如果大于,则写入文件 int count=0; //得分 int len=20; //当前蛇身长度 int direct=0; //方向: 0-向右, 1-向下, 2-向左, 3-向上int speed=200; //速度:毫秒 bool isfood=false; //食物是否存在int timerID;bool stop=false; //暂停 char* ini_path; //数据文件绝对路径 void setxy(int x, int y) //设置CMD窗口光标位置{ COORD coord = {x, y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);}void hide_cursor() //隐藏CMD窗口光标{CONSOLE_CURSOR_INFO cci;cci.bVisible = FALSE;cci.dwSize = sizeof(cci);HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorInfo(handle, &cci);}void set_food() //设置食物坐标 {if(isfood==true){return;}int x,y,i;bool flag=false;while(1){flag=false;x=rand()%(W-14)+6;y=rand()%(H-12)+6;for(i=0;i《len;i++) //判断食物是否落在蛇身上 {if(s.y==y){flag=true;break;}}if(flag==true){continue;}else{food.x=x;food.y=y;break;}}setxy(food.x,food.y);printf("*");isfood=true;}void check_board() //检测蛇身是否越界和相交 {int i;if(s.y《=2){setxy(W/2-5,0);printf("game over\n");stop=true;if(old_max_count《max_count){char t={’\0’};sprintf(t,"%d",max_count);WritePrivateProfileString("MAX_COUNT","max_count",t,ini_path);}}for(i=1;i《len;i++){if(s.y){setxy(W/2-5,0);printf("game over\n");stop=true;if(old_max_count《max_count){char t={’\0’};sprintf(t,"%d",max_count);WritePrivateProfileString("MAX_COUNT","max_count",t,ini_path);}break;}}if(stop==true){KillTimer(NULL,timerID);int c;while(1){fflush(stdin);c=_getch();if(c==’n’ || c==’N’){start();}else if(c==’q’ || c==’Q’){exit(0);}else continue;}}}void printf_body(bool is_first) //打印蛇身 {if(is_first==true) //如果是第一次打印蛇身 {int i;for(i=0;i《len;i++){setxy(s.y);printf("O");}}else //如果不是第一次打印蛇身 {setxy(end.x,end.y);printf(" ");setxy(s.y);printf("O");}if(food.x==s.y) //如果吃到食物 {count++;isfood=false; //重置食物 set_food();len++;KillTimer(NULL,timerID);if(speed》100) speed-=10;else if(speed》50) speed-=5;else if(speed》30) speed-=2;else if(speed》16) speed-=1;else ;setxy(0,0);if(max_count《count)max_count=count;printf(" speed : %d ms score : %d best score:%d ",speed,count,max_count);timerID=SetTimer(NULL,001,speed,TimerProc);}}void change_body_pos(int x, int y) //改变蛇身的坐标数据 {end.x=s.x;end.y=s.y;int i;for(i=len-1;i》0;i--){s.x;s.y;}s.x=x;s.y=y;}void CALLBACK TimerProc(HWND hwnd, UINT message, UINT idTimer, DWORD dwTime){switch(direct){case 0:head.x++;change_body_pos(head.x,head.y);printf_body(false);check_board();break;case 1:head.y++;change_body_pos(head.x,head.y);printf_body(false);check_board();break;case 2:head.x--;change_body_pos(head.x,head.y);printf_body(false);check_board();break;case 3:head.y--;change_body_pos(head.x,head.y);printf_body(false);check_board();break;}}void start(){int i;KillTimer(NULL,timerID);count=0; //得分 len=20; //当前蛇身长度 direct=0; //方向: 0-向右, 1-向下, 2-向左, 3-向上speed=200; //速度:毫秒 isfood=false; //食物是否存在stop=false; //停止 system("cls");setxy(1,4);printf("┌─────────────────────────────────────┐\n");for(i=0;i《33;i++){printf(" │ │\n");}printf(" └─────────────────────────────────────┘");head.x=len-1+5;head.y=H/2;for(i=0;i《len;i++){s.x=head.x-i;s.y=head.y;}setxy(0,0);printf(" speed : %d:ms score : %d best score:%d ",speed,count,max_count);printf_body(true);set_food();timerID=SetTimer(NULL,001,speed,TimerProc);int c;MSG msg;while(GetMessage(&msg,NULL,0,0)){if(stop==true)break;if(_kbhit()) //如果按下的是方向键或功能键, _getch()要调用两次,第一次返回0XE0或0 {fflush(stdin);c=_getch(); //上: 72 下:80 左:75 右:77 if(c==0XE0 || c==0){c=_getch();if(c==72 && direct!=1 && direct!=3){direct=3;}else if(c==80 && direct!=1 && direct!=3){direct=1;}else if(c==75 && direct!=0 && direct!=2){direct=2;}else if(c==77 && direct!=0 && direct!=2){direct=0;}}else if(c==’ ’){setxy(W/2-10,0);system("pause");setxy(W/2-10,0);printf(" ");}}if(msg.message==WM_TIMER){DispatchMessage(&msg);}}}int main(){ini_path=(char*)malloc(sizeof(char)*50);srand((unsigned)time(0));getcwd(ini_path,50);//取得当前程序绝对路径ini_path=strcat(ini_path,"snake.dat"); max_count=GetPrivateProfileInt("MAX_COUNT","max_count",0,ini_path);old_max_count=max_count;char cmd;sprintf(cmd,"mode con cols=%d lines=%d\0",W,H);system(cmd);//改变CMD窗口大小hide_cursor();start();return 0;}

求贪吃蛇C语言代码,有一定功能要求

以下是代码

/* 贪吃蛇程序 by champking */#define N 200#include 《graphics.h》#include 《stdlib.h》#include 《dos.h》#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score = 0;/*得分*/int gamespeed = 100000;/*游戏速度自己调整*/struct Food{   int x;/*食物的横坐标*/   int y;/*食物的纵坐标*/   int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{   int x;   int y;   int node;/*蛇的节数*/   int direction;/*蛇移动方向*/   int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){   Init();/*图形驱动*/   DrawK();/*开始画面*/   GamePlay();/*玩游戏具体过程*/   Close();/*图形结束*/}/*图形驱动*/void Init(void){   int gd = DETECT, gm;   initgraph(&gd, &gm, "c:\\tc");   cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE, 0, THICK_WIDTH);/*设置线型*/   for(i = 50; i 《= 600; i += 10)/*画围墙*/ {  rectangle(i, 40, i + 10, 49); /*上边*/  rectangle(i, 451, i + 10, 460);/*下边*/ } for(i = 40; i 《= 450; i += 10) {  rectangle(50, i, 59, i + 10); /*左边*/  rectangle(601, i, 610, i + 10);/*右边*/ }}/*玩游戏具体过程*/void GamePlay(void){ randomize();/*随机数发生器*/ food.yes = 1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life = 0;/*活着*/ snake.direction = 1;/*方向往右*/ snake.x = 100;/*蛇头*/ snake.x = 100; snake.node = 2;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ {  while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/  {   if(food.yes == 1)/*需要出现新食物*/   {    food.x = rand() % 400 + 60;    food.y = rand() % 350 + 60;        while(food.x % 10 != 0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/     food.x++;    while(food.y % 10 != 0)     food.y++;    food.yes = 0;/*画面上有食物了*/   }     if(food.yes == 0)/*画面上有食物了就要显示*/   {    setcolor(GREEN);    rectangle(food.x, food.y, food.x + 10, food.y - 10);   }     for(i = snake.node - 1; i 》 0; i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/   {    snake.x;    snake.y;   }     /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/   switch(snake.direction)   {    case 1: snake.x += 10; break;    case 2: snake.x -= 10; break;    case 3: snake.y -= 10; break;    case 4: snake.y += 10; break;   }     for(i = 3; i 《 snake.node; i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/   {    if(snake.x)    {     GameOver();/*显示失败*/     snake.life = 1;     break;    }   }     if(snake.x《55||   snake.y》455)/*蛇是否撞到墙壁*/   {    GameOver();/*本次游戏结束*/    snake.life=1; /*蛇死*/   }     if(snake.life == 1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/    break;       if(snake.x == food.y)/*吃到食物以后*/   {    setcolor(0);/*把画面上的食物东西去掉*/    rectangle(food.x, food.y, food.x + 10, food.y - 10);    snake.x =- 20;    /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/    snake.node++;/*蛇的身体长一节*/    food.yes = 1;/*画面上需要出现新的食物*/    score += 10;    PrScore();/*输出新得分*/   }     setcolor(4);/*画出蛇*/     for(i = 0; i 《 snake.node; i++)    rectangle(snake.x + 10,    snake.y - 10);     delay(gamespeed);       setcolor(0);/*用黑色去除蛇的的最后一节*/     rectangle(snake.x,   snake.x - 10);  }  /*endwhile(!kbhit)*/    if(snake.life == 1)/*如果蛇死就跳出循环*/   break;    key = bioskey(0);/*接收按键*/    if(key == ESC)/*按ESC键退出*/   break;  else   if(key == UP&&snake.direction!=4)    /*判断是否往相反的方向移动*/    snake.direction=3;  else   if(key == RIGHT &&snake.direction != 2)    snake.direction=1;  else   if(key == LEFT && snake.direction != 1)    snake.direction = 2;  else   if(key == DOWN && snake.direction != 3)    snake.direction = 4; }/*endwhile(1)*/}/*游戏结束*/void GameOver(void){ cleardevice(); PrScore(); setcolor(RED); settextstyle(0, 0, 4); outtextxy(200, 200, "GAME OVER"); getch();}/*输出成绩*/void PrScore(void){   char str; setfillstyle(SOLID_FILL, YELLOW); bar(50, 15, 220, 35); setcolor(6); settextstyle(0,0,2); sprintf(str, "score:%d", score); outtextxy(55, 20, str);}/*图形结束*/void Close(void){   getch(); closegraph();}

贪吃蛇c语言代码

#include《stdio.h》#include《stdlib.h》#include《Windows.h》#include《conio.h》#include《time.h》char gamemap;//游戏地图大小 20*40int score=0;//当前分数 //记录蛇的结点int x;//每个结点的行编号int y;//每个结点的列编号int len = 0;//蛇的长度//记录水果信息 int fx=0;//食物的横坐标 int fy=0;//食物的纵坐标 int fcount=0;//食物的数目 //主要函数操作 void createfood();//生成食物 void PrintgameMap(int x);//画游戏地图 void move(int x);//移动蛇 int main(){ srand(time(NULL)); //初始化蛇头和身体的位置,默认刚开始蛇长为2 x = 9; y = 9; len++; x = 9; y = 8; len++; createfood(); PrintgameMap(x,y); move(x,y); return 0;}void createfood(){ if(0==fcount) { int tfx=rand()%18+1; int tfy=rand()%38+1; int i,j; int have=0;//为0表示食物不是食物的一部分 for(i=0;i《len;i++) { for(j=0;j《len;j++) { if(x==fy) { have=1; break; } else { have=0; } } if(1==have)//若为蛇的一部分,执行下一次循环 { continue; } else//否则生成新的水果 { fcount++; fx=tfx; fy=tfy; break; } }}}//游戏地图void PrintgameMap(int x){ int snake = 0,food=0;int i, j; //画游戏地图,并画出蛇的初始位置 for (i = 0; i 《 20; i++) { for (j = 0; j 《 40; j++) { if (i == 0 && j 》= 1 && j 《= 38) { gamemap = ’=’; } else if (i == 19 && j 》= 1 && j 《= 38) { gamemap = ’=’; } else if (j == 0 || j == 39) { gamemap = ’#’; } else { gamemap = ’ ’; } //判断蛇是否在当前位置 int k; for ( k = 0; k 《 len; k++) { if (i == x) { snake = 1; break; } else { snake = 0; } } { if(fcount&&fx==i&&fy==j) { food=1; } else { food=0; } } //若蛇在当前位置 if (1==snake ) { printf("*"); } else if(1==food) { printf("f"); } //若蛇不在当前位置并且当前位置没有水果 else { printf("%c", gamemap); } } printf("\n"); } printf("score:%d",score);}//移动void move(int x){ char s; s=getch(); int move=0,beat=0; while (1) { int cx; int cy; memcpy(cx, x, sizeof(int)*len); memcpy(cy, y, sizeof(int)*len); //头 if (s==’w’) { x--; move=1; if(x《=0) { printf("Game over\n"); break; } } else if (s==’s’) { x++; move=1; if(x》=19) { printf("Game over\n"); break; } } else if (s==’a’) { y --; move=1; if(y《=0) { printf("Game over\n"); break; } } else if (s==’d’) { y++; move=1; if(y》=39) { printf("Game over\n"); break; } } //身体 int i; for ( i = 1; i 《 len; i++) { x; y; } for(i=1;i《len;i++)//要是咬到了自己 { if(x) { beat=1; } else { beat=0; } } if(1==beat) { printf("Game over\n"); break; } if(1==move) { if(fcount&&x==fy)//如果吃到了果子 { //拷贝当前蛇头地址到第二个结点 memcpy(x+1,cx,sizeof(int)*len); memcpy(y+1,cy,sizeof(int)*len); len++; fcount--; fx=0; fy=0; score++; createfood(); } Sleep(70); system("cls"); PrintgameMap( x, y); } else continue; if(kbhit())//判断是否按下按键 { s=getch(); } } }

求C语言贪吃蛇代码能在DEV上运行通过的贪吃蛇,不要TC上的啊我们老师上课给在DEV我们运行了一次

#include 《time.h》#include 《stdio.h》#include 《stdlib.h》#include 《windows.h》#define U 1#define D 2#define L 3#define R 4       //蛇的状态,U:上 ;D:下;L:左 R:右typedef struct SNAKE { //蛇身的一个节点    int x;    int y;    struct SNAKE *next;} snake;//全局变量//int score=0,add=10;//总得分与每次吃食物得分。int status,sleeptime=200;//每次运行的时间间隔snake *head, *food;//蛇头指针,食物指针snake *q;//遍历蛇的时候用到的指针int endgamestatus=0; //游戏结束的情况,1:撞到墙;2:咬到自己;3:主动退出游戏。//声明全部函数//void Pos();void creatMap();void initsnake();int biteself();void createfood();void cantcrosswall();void snakemove();void pause();void gamecircle();void welcometogame();void endgame();void gamestart();void Pos(int x,int y)//设置光标位置{    COORD pos;    HANDLE hOutput;    pos.X=x;    pos.Y=y;    hOutput=GetStdHandle(STD_OUTPUT_HANDLE);    SetConsoleCursorPosition(hOutput,pos);}void creatMap()//创建地图{    int i;    for(i=0; i《58; i+=2) { //打印上下边框        Pos(i,0);        printf("■");        Pos(i,26);        printf("■");    }    for(i=1; i《26; i++) { //打印左右边框        Pos(0,i);        printf("■");        Pos(56,i);        printf("■");    }}void initsnake()//初始化蛇身{    snake *tail;    int i;    tail=(snake*)malloc(sizeof(snake));//从蛇尾开始,头插法,以x,y设定开始的位置//    tail-》x=24;    tail-》y=5;    tail-》next=NULL;    for(i=1; i《=4; i++) {        head=(snake*)malloc(sizeof(snake));        head-》next=tail;        head-》x=24+2*i;        head-》y=5;        tail=head;    }    while(tail!=NULL) { //从头到为,输出蛇身        Pos(tail-》x,tail-》y);        printf("■");        tail=tail-》next;    }}int biteself()//判断是否咬到了自己{    snake *self;    self=head-》next;    while(self!=NULL) {        if(self-》x==head-》x && self-》y==head-》y) {            return 1;        }        self=self-》next;    }    return 0;}void createfood()//随机出现食物{    snake *food_1;    srand((unsigned)time(NULL));    food_1=(snake*)malloc(sizeof(snake));    while((food_1-》x%2)!=0) {  //保证其为偶数,使得食物能与蛇头对其        food_1-》x=rand()%52+2;    }    food_1-》y=rand()%24+1;    q=head;    while(q-》next==NULL) {        if(q-》x==food_1-》x && q-》y==food_1-》y) { //判断蛇身是否与食物重合            free(food_1);            createfood();        }        q=q-》next;    }    Pos(food_1-》x,food_1-》y);    food=food_1;    printf("■");}void cantcrosswall()//不能穿墙{    if(head-》x==0 || head-》x==56 ||head-》y==0 || head-》y==26) {        endgamestatus=1;        endgame();    }}void snakemove()//蛇前进,上U,下D,左L,右R{    snake * nexthead;    cantcrosswall();    nexthead=(snake*)malloc(sizeof(snake));    if(status==U) {        nexthead-》x=head-》x;        nexthead-》y=head-》y-1;        if(nexthead-》x==food-》x && nexthead-》y==food-》y) { //如果下一个有食物//            nexthead-》next=head;            head=nexthead;            q=head;            while(q!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            score=score+add;            createfood();        } else {                                           //如果没有食物//            nexthead-》next=head;            head=nexthead;            q=head;            while(q-》next-》next!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            Pos(q-》next-》x,q-》next-》y);            printf("  ");            free(q-》next);            q-》next=NULL;        }    }    if(status==D) {        nexthead-》x=head-》x;        nexthead-》y=head-》y+1;        if(nexthead-》x==food-》x && nexthead-》y==food-》y) { //有食物            nexthead-》next=head;            head=nexthead;            q=head;            while(q!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            score=score+add;            createfood();        } else {                           //没有食物            nexthead-》next=head;            head=nexthead;            q=head;            while(q-》next-》next!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            Pos(q-》next-》x,q-》next-》y);            printf("  ");            free(q-》next);            q-》next=NULL;        }    }    if(status==L) {        nexthead-》x=head-》x-2;        nexthead-》y=head-》y;        if(nexthead-》x==food-》x && nexthead-》y==food-》y) { //有食物            nexthead-》next=head;            head=nexthead;            q=head;            while(q!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            score=score+add;            createfood();        } else {                            //没有食物            nexthead-》next=head;            head=nexthead;            q=head;            while(q-》next-》next!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            Pos(q-》next-》x,q-》next-》y);            printf("  ");            free(q-》next);            q-》next=NULL;        }    }    if(status==R) {        nexthead-》x=head-》x+2;        nexthead-》y=head-》y;        if(nexthead-》x==food-》x && nexthead-》y==food-》y) { //有食物            nexthead-》next=head;            head=nexthead;            q=head;            while(q!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            score=score+add;            createfood();        } else {                                     //没有食物            nexthead-》next=head;            head=nexthead;            q=head;            while(q-》next-》next!=NULL) {                Pos(q-》x,q-》y);                printf("■");                q=q-》next;            }            Pos(q-》next-》x,q-》next-》y);            printf("  ");            free(q-》next);            q-》next=NULL;        }    }    if(biteself()==1) {     //判断是否会咬到自己        endgamestatus=2;        endgame();    }}void pause()//暂停{    while(1) {        Sleep(300);        if(GetAsyncKeyState(VK_SPACE)) {            break;        }    }}void gamecircle()//控制游戏{    Pos(64,15);    printf("不能穿墙,不能咬到自己\n");    Pos(64,16);    printf("用↑.↓.←.→分别控制蛇的移动.");    Pos(64,17);    printf("F1 为加速,F2 为减速\n");    Pos(64,18);    printf("ESC :退出游戏.space:暂停游戏.");    Pos(64,20);    //    status=R;    while(1) {        Pos(64,10);        printf("得分:%d  ",score);        Pos(64,11);        printf("每个食物得分:%d分",add);        if(GetAsyncKeyState(VK_UP) && status!=D) {            status=U;        } else if(GetAsyncKeyState(VK_DOWN) && status!=U) {            status=D;        } else if(GetAsyncKeyState(VK_LEFT)&& status!=R) {            status=L;        } else if(GetAsyncKeyState(VK_RIGHT)&& status!=L) {            status=R;        } else if(GetAsyncKeyState(VK_SPACE)) {            pause();        } else if(GetAsyncKeyState(VK_ESCAPE)) {            endgamestatus=3;            break;        } else if(GetAsyncKeyState(VK_F1)) {            if(sleeptime》=50) {                sleeptime=sleeptime-30;                add=add+2;                if(sleeptime==320) {                    add=2;//防止减到1之后再加回来有错                }            }        } else if(GetAsyncKeyState(VK_F2)) {            if(sleeptime《350) {                sleeptime=sleeptime+30;                add=add-2;                if(sleeptime==350) {                    add=1;  //保证最低分为1                }            }        }        Sleep(sleeptime);        snakemove();    }}void welcometogame()//开始界面{    Pos(40,12);    //    printf("欢迎来到贪食蛇游戏!");    Pos(40,25);    //    system("pause");    system("cls");    Pos(25,12);    printf("用↑.↓.←.→分别控制蛇的移动, F1 为加速,2 为减速\n");    Pos(25,13);    printf("加速将能得到更高的分数。\n");    system("pause");    system("cls");}void endgame()//结束游戏{    system("cls");    Pos(24,12);    if(endgamestatus==1) {        printf("对不起,您撞到墙了。游戏结束.");    } else if(endgamestatus==2) {        printf("对不起,您咬到自己了。游戏结束.");    } else if(endgamestatus==3) {        printf("您的已经结束了游戏。");    }    Pos(24,13);    printf("您的得分是%d\n",score);    exit(0);}void gamestart()//游戏初始化{    system("mode con cols=100 lines=30");    welcometogame();    creatMap();    initsnake();    createfood();}int main(){    gamestart();    gamecircle();    endgame();    return 0;}

在dos环境下c语言编程编一个贪吃蛇游戏

程序设计及说明1、边墙(Wall) 该类规定游戏的范围大小。 2、蛇类(Snake) 用该类生成一个实例蛇snake。 3、移动(Move) 该类用于实现对蛇的操作控制,即蛇头方向的上下左右的移动操作。 4、食物类(Food) 该类是游戏过程中食物随机产生的控制和显示。 5、判断死亡(Dead) 该类是对游戏过程中判断玩家操作是否导致蛇的死亡,其中包括蛇头咬食自己身体和蛇头是否触及游戏“边墙”。 6、蛇结点(SnakeNode) 该类是蛇吃下随机产生的食物从而增加长度的控制类,其中包括蛇长度增加和尾部的变化。 7、计分统计(Score) 该类由于玩家的游戏成绩记录,及游戏结束时的得分输出。 ... 部分函数及说明1.Char menu(); /*用于玩家选择的游戏速度,返回一个char值*/ 2.DELAY(char ch1); /*用于控制游戏速度*/ 3.void drawmap(); /*绘制游戏地图函数* 4、void menu() /*游戏帮助信息的输出* ... 部分类细节解说1、蛇的构建 —Snake class Snake{ public: int x;int y; int node; //蛇身长度int direction;//蛇运动方向int life;//蛇生命,判断死亡 }2、随机食物Food 利用rand()函数进行随机数产生,然后就行坐标定位 void Food(void){ ... int pos_x = 0; int pos_y = 0; pos_x = rand() % length;//x坐标的确定 pos_y = rand() % (width-1);//y坐标的确定 ... }3、蛇头方向确定 利用switch语句进行方向确定... switch(){ case VK_UP:{ OutChar2.Y--; y--; break; } case VK_LEFT:{ OutChar2.Y++; y++; break; } case VK_DOWN:{ OutChar2.X---; x--; break; } case ’VK_RIGHT:{ OutChar2.X++; x++; break; } } 代码#include 《iostream》 #include 《ctime》 #include 《conio.h》 #include 《windows.h》 #include 《time.h》 using namespace std; int score=0,t=300,f=1;//得分与时间间隔/ms(控制贪吃蛇的速度) double ss=0,tt=0;//统计时间所用参数 class Node { Node(): x(0), y(0), prior(0), next(0) { } int x; int y; Node *prior; Node *next; friend class Snake; }; class Snake { public: Snake(); ~Snake(); void output(); void move(); void change_point(char); private: Node *head; Node *tail; enum p{ UP, RIGHT, DOWN, LEFT }point; //方向int food_x, food_y; //食物的坐标static const int N = 23; int game; void add_head(int, int); //添加坐标为a,b的结点void delete_tail(); //删除最后一个结点void greate_food(); //产生食物void gotoxy(int, int); }; void menu(); //游戏操作菜单int main() { system("color a"); //初始cmd窗口颜色为黑(背景)淡绿(文字) cout《《"\n\n\n\n\n\n "; for(int i=0;i《23;i++) {char star={"Welcome To Snake Game!"}; cout《《star; Sleep(170);} cout《《"\n\n 祝你好运!"《《endl; Sleep(3000); if(kbhit()){char kk=getch();if(kk==9)f=5;} //如果执行,吃一颗星加5分 system("cls"); Snake s; menu(); system("color 1a"); s.output(); while (true) { char keydown = getch(); if(keydown==32)getch(); if(keydown==27)return 0; s.change_point(keydown); while (!kbhit()) {clock_t start,end;start=clock(); s.move(); s.output(); Sleep(t); end=clock();tt=(double)(end-start)/CLOCKS_PER_SEC;ss+=tt; cout《《" 时间:"《《(int)ss;

新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不、新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不的信息别忘了在本站进行查找哦。

贪吃蛇代码c语言(新手求c语言贪吃蛇源代码,一定要有注释,不要有光标移动函数之类的(新手看不懂)其它的没有要求,不)

本文编辑:admin

本文相关文章:


贪吃蛇植物大作战第五关怎么过?植物大作战第十关熔岩火山怎么过

贪吃蛇植物大作战第五关怎么过?植物大作战第十关熔岩火山怎么过

各位老铁们,大家好,今天由我来为大家分享植物大作战,以及贪吃蛇植物大作战第五关怎么过的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录贪吃蛇植物大作战

2024年9月18日 08:18

疯狂贪吃蛇游戏下载(贪吃蛇下载安装)

疯狂贪吃蛇游戏下载(贪吃蛇下载安装)

大家好,今天小编来为大家解答以下的问题,关于疯狂贪吃蛇游戏下载,贪吃蛇下载安装这个很多人还不知道,现在让我们一起来看看吧!本文目录贪吃蛇下载安装python贪吃蛇游戏代码贪吃蛇下载安装***隐藏网址***类型:安卓游戏-益智休闲 版本:v3

2024年8月22日 02:51

贪吃蛇大作战旧版本(贪吃蛇大作战4.4.19版本是什么)

贪吃蛇大作战旧版本(贪吃蛇大作战4.4.19版本是什么)

大家好,贪吃蛇大作战旧版本相信很多的网友都不是很明白,包括贪吃蛇大作战4.4.19版本是什么也是一样,不过没有关系,接下来就来为大家分享关于贪吃蛇大作战旧版本和贪吃蛇大作战4.4.19版本是什么的一些知识点,大家可以关注收藏,免得下次来找不

2024年8月14日 05:12

贪吃蛇小游戏代码(能在dev-c++上运行通过的扫雷,贪吃蛇,等小游戏的c语言代码)

贪吃蛇小游戏代码(能在dev-c++上运行通过的扫雷,贪吃蛇,等小游戏的c语言代码)

各位老铁们,大家好,今天由我来为大家分享贪吃蛇小游戏代码,以及能在dev-c++上运行通过的扫雷,贪吃蛇,等小游戏的c语言代码的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈

2024年8月9日 17:15

贪吃蛇999999钻999999金币(贪吃蛇大作战无限999999苹果下载地址)

贪吃蛇999999钻999999金币(贪吃蛇大作战无限999999苹果下载地址)

各位老铁们好,相信很多人对贪吃蛇999999钻999999金币都不是特别的了解,因此呢,今天就来为大家分享下关于贪吃蛇999999钻999999金币以及贪吃蛇大作战无限999999苹果下载地址的问题知识,还望可以帮助大家,解决大家的一些困惑

2024年8月4日 14:24

贪吃蛇模式是什么意思?版本ios10的苹果6s plus手机玩“贪吃蛇大作战”游戏一直显示无法连接网络是怎么回事

贪吃蛇模式是什么意思?版本ios10的苹果6s plus手机玩“贪吃蛇大作战”游戏一直显示无法连接网络是怎么回事

大家好,如果您还对贪吃蛇不太了解,没有关系,今天就由本站为大家分享贪吃蛇的知识,包括贪吃蛇模式是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录贪吃蛇模式是什么意思版本ios10的苹果6s plus手机玩“

2024年5月20日 09:55

贪吃蛇游戏不用下载就能玩(美团上的贪吃蛇游戏怎么下载)

贪吃蛇游戏不用下载就能玩(美团上的贪吃蛇游戏怎么下载)

大家好,如果您还对贪吃蛇游戏不用下载就能玩不太了解,没有关系,今天就由本站为大家分享贪吃蛇游戏不用下载就能玩的知识,包括美团上的贪吃蛇游戏怎么下载的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录美团上的贪吃蛇游戏怎

2024年5月19日 13:29

贪吃蛇大作战好看的女生动漫头像有哪些?《贪吃蛇进化论》皮肤大全

贪吃蛇大作战好看的女生动漫头像有哪些?《贪吃蛇进化论》皮肤大全

这篇文章给大家聊聊关于贪吃蛇图片,以及贪吃蛇大作战好看的女生动漫头像有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录贪吃蛇大作战好看的女生动漫头像有哪些《贪吃蛇进化论》皮肤大全宇宙版贪吃蛇上线,发现小黑洞变身大黑洞,全靠

2024年5月19日 10:46

谁知道贪吃蛇大作战登陆不上去怎么弄?贪吃蛇大作战怎么晋级

谁知道贪吃蛇大作战登陆不上去怎么弄?贪吃蛇大作战怎么晋级

大家好,如果您还对贪吃蛇大战不太了解,没有关系,今天就由本站为大家分享贪吃蛇大战的知识,包括谁知道贪吃蛇大作战登陆不上去怎么弄的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录谁知道贪吃蛇大作战登陆不上去怎么弄贪吃蛇

2024年4月2日 12:00

更多文章:


cfm手游官方网站(cf手游体验服资格申请官网2023如何下载)

cfm手游官方网站(cf手游体验服资格申请官网2023如何下载)

大家好,今天小编来为大家解答以下的问题,关于cfm手游官方网站,cf手游体验服资格申请官网2023如何下载这个很多人还不知道,现在让我们一起来看看吧!本文目录cf手游体验服资格申请官网2023如何下载穿越火线手游激活码怎么领取及使用介绍cf

2024年6月5日 13:44

宫锁心玉良妃(宫锁心玉良妃回去后怎样了)

宫锁心玉良妃(宫锁心玉良妃回去后怎样了)

大家好,如果您还对宫锁心玉良妃不太了解,没有关系,今天就由本站为大家分享宫锁心玉良妃的知识,包括宫锁心玉良妃回去后怎样了的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录宫锁心玉良妃回去后怎样了宫 里面的良妃娘娘谁扮

2024年9月11日 23:36

好玩的游戏无敌版(神级保安游戏无敌版)

好玩的游戏无敌版(神级保安游戏无敌版)

各位老铁们好,相信很多人对好玩的游戏无敌版都不是特别的了解,因此呢,今天就来为大家分享下关于好玩的游戏无敌版以及神级保安游戏无敌版的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录神级保安游戏无敌版雷龙出击无敌版神

2024年5月2日 03:55

作弊菜单版游戏下载大全破解(八门神器作弊菜单游戏大全)

作弊菜单版游戏下载大全破解(八门神器作弊菜单游戏大全)

本篇文章给大家谈谈作弊菜单版游戏下载大全破解,以及八门神器作弊菜单游戏大全对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录八门神器作弊菜单游

2024年8月6日 12:54

搜狗停服了游戏怎么办?我的世界搜狗版怎么下载如何下载

搜狗停服了游戏怎么办?我的世界搜狗版怎么下载如何下载

其实搜狗游戏的问题并不复杂,但是又很多的朋友都不太了解搜狗停服了游戏怎么办,因此呢,今天小编就来为大家分享搜狗游戏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录搜狗停服了游戏怎么办我的世界搜狗版怎么下载如何下载

2024年7月27日 14:24

多人迷你游戏下载(电脑版本迷你世界游戏如何下载)

多人迷你游戏下载(电脑版本迷你世界游戏如何下载)

本篇文章给大家谈谈多人迷你游戏下载,以及电脑版本迷你世界游戏如何下载对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录电脑版本迷你世界游戏如何

2024年4月18日 20:48

侦探游戏app排行榜前十名(2020好玩的侦探类手机游戏有哪些)

侦探游戏app排行榜前十名(2020好玩的侦探类手机游戏有哪些)

各位老铁们,大家好,今天由我来为大家分享侦探游戏app排行榜前十名,以及2020好玩的侦探类手机游戏有哪些的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本

2024年7月26日 13:54

街机单机手机版下载(鬼剑传奇单机版下载)

街机单机手机版下载(鬼剑传奇单机版下载)

其实街机单机手机版下载的问题并不复杂,但是又很多的朋友都不太了解鬼剑传奇单机版下载,因此呢,今天小编就来为大家分享街机单机手机版下载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录鬼剑传奇单机版下载劳拉go手游下

2024年9月13日 03:30

大话西游手游网页版(大话西游手游网页版怎么登陆 网页版登陆方法及操作步骤)

大话西游手游网页版(大话西游手游网页版怎么登陆 网页版登陆方法及操作步骤)

各位老铁们,大家好,今天由我来为大家分享大话西游手游网页版,以及大话西游手游网页版怎么登陆 网页版登陆方法及操作步骤的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们

2024年4月30日 17:33

我的世界java(我的世界java版怎么一键合成)

我的世界java(我的世界java版怎么一键合成)

大家好,我的世界java相信很多的网友都不是很明白,包括我的世界java版怎么一键合成也是一样,不过没有关系,接下来就来为大家分享关于我的世界java和我的世界java版怎么一键合成的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2024年5月6日 18:32

三国志在线玩(谋士献策,在线配将,三国志中怎样搭开荒能达到最佳效果)

三国志在线玩(谋士献策,在线配将,三国志中怎样搭开荒能达到最佳效果)

大家好,今天小编来为大家解答以下的问题,关于三国志在线玩,谋士献策,在线配将,三国志中怎样搭开荒能达到最佳效果这个很多人还不知道,现在让我们一起来看看吧!本文目录谋士献策,在线配将,三国志中怎样搭开荒能达到最佳效果天天三国志还能玩吗御龙在天

2024年6月24日 04:21

末日求生游戏(末日堡垒游戏)

末日求生游戏(末日堡垒游戏)

其实末日求生游戏的问题并不复杂,但是又很多的朋友都不太了解末日堡垒游戏,因此呢,今天小编就来为大家分享末日求生游戏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录末日堡垒游戏全城封锁末日求生安装及配置说明末世军团

2024年4月15日 20:00

洛克王国波小赛的旅行(洛克王国波小赛活动怎么做)

洛克王国波小赛的旅行(洛克王国波小赛活动怎么做)

各位老铁们好,相信很多人对洛克王国波小赛的旅行都不是特别的了解,因此呢,今天就来为大家分享下关于洛克王国波小赛的旅行以及洛克王国波小赛活动怎么做的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录洛克王国波小赛活动怎

2024年3月31日 11:42

洛克王国德古拉伯爵(洛克王国威廉古堡收藏室在哪怎么去)

洛克王国德古拉伯爵(洛克王国威廉古堡收藏室在哪怎么去)

各位老铁们好,相信很多人对洛克王国德古拉伯爵都不是特别的了解,因此呢,今天就来为大家分享下关于洛克王国德古拉伯爵以及洛克王国威廉古堡收藏室在哪怎么去的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录洛克王国威廉古堡

2024年5月6日 20:01

2008年电脑单机游戏大全列表(2008年最流行的单机游戏)

2008年电脑单机游戏大全列表(2008年最流行的单机游戏)

大家好,2008年电脑单机游戏大全列表相信很多的网友都不是很明白,包括2008年最流行的单机游戏也是一样,不过没有关系,接下来就来为大家分享关于2008年电脑单机游戏大全列表和2008年最流行的单机游戏的一些知识点,大家可以关注收藏,免得下

2024年8月8日 15:45

帝国时代4有哪些战役 帝国时代4战役背景时间一览?帝国时代2里所有的国家个是现在的什么国家

帝国时代4有哪些战役 帝国时代4战役背景时间一览?帝国时代2里所有的国家个是现在的什么国家

“帝国时代”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看帝国时代4有哪些战役 帝国时代4战役背景时间一览?帝国时代2里所有的国家个是现在的什么国家!本文目录帝国时代4有哪些战役 帝国时代4战役背景时间一览帝国时代2里所有的

2024年6月7日 09:33

办公室偷吻的游戏特色?万圣节活动游戏有哪些

办公室偷吻的游戏特色?万圣节活动游戏有哪些

“偷吻小游戏”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看办公室偷吻的游戏特色?万圣节活动游戏有哪些!本文目录办公室偷吻的游戏特色万圣节活动游戏有哪些办公室偷吻的游戏特色巨趣味的休闲小游。玩家这次很有福噢!在游戏中,你扮演

2024年8月13日 09:30

三国英雄传2单机版(单机游戏三国有几个版本分别是哪几个)

三国英雄传2单机版(单机游戏三国有几个版本分别是哪几个)

各位老铁们,大家好,今天由我来为大家分享三国英雄传2单机版,以及单机游戏三国有几个版本分别是哪几个的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录单

2024年8月18日 04:00

趣味游戏美国版(求一部美国电影,一对变态兄弟杀还一家人的)

趣味游戏美国版(求一部美国电影,一对变态兄弟杀还一家人的)

各位老铁们好,相信很多人对趣味游戏美国版都不是特别的了解,因此呢,今天就来为大家分享下关于趣味游戏美国版以及求一部美国电影,一对变态兄弟杀还一家人的的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录求一部美国电影,

2024年4月4日 11:27

特警游戏大全下载(特警精英王佐联)

特警游戏大全下载(特警精英王佐联)

大家好,特警游戏大全下载相信很多的网友都不是很明白,包括特警精英王佐联也是一样,不过没有关系,接下来就来为大家分享关于特警游戏大全下载和特警精英王佐联的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录特警精英王佐联

2024年8月9日 01:12

近期文章

本站热文

标签列表

热门搜索