在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++游戏开发 → DevC++贪吃蛇

DevC++贪吃蛇

C/C++游戏开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.11M
  • 下载次数:28
  • 浏览次数:804
  • 发布时间:2020-11-01
  • 实例类别:C/C++游戏开发
  • 发 布 人:1234Asedfrv
  • 文件格式:.zip
  • 所需积分:6
 相关标签: DevC++ c++ 贪吃蛇

实例介绍

【实例简介】

自己用DevC 编写的贪吃蛇小游戏,带难度选择、计时、加速、暂停功能。
【实例截图】

【核心代码】


int play(HANDLE hout) {
 system("cls");
    unsigned char ch = 77;
    struct Snake s, *snake = &s;
    struct Food  f, *food = &f;
    selectcover(hout, snake);
    makeframe(snake);
    initsnake(snake);
    printfood(hout, snake, food);
    Sleep(500);
    CLK = 0;
    HANDLE hThread;
 DWORD ThreadID;
 hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)gettime, NULL, 0, &ThreadID); 
    while (1) {
        infor(hout, snake);
        //保存蛇尾横纵坐标
        a[0] = snake->x[0];
        a[1] = snake->y[0];
        j = 0;
        //如果用户敲击键盘
        if (kbhit()) {
            //用ch接收输入 ,注意是getch(),不需敲击回车
            ch = getch();
            if (kbhit()) {
            //长按时间
                Sleep(20);
                j = 1;
            }
        }
        switch(ch) {
            //向上移动
            case 'W':
            case 'w':
            case 72: {
                movesnake(hout, snake);
                //蛇头纵坐标减一
                snake->y[snake->length - 1] -= 1;
                break;
            }
            //向下移动
            case 'S':
            case 's':
            case 80: {
                movesnake(hout, snake);
                //蛇头纵坐标加一
                snake->y[snake->length - 1] = 1;
                break;
            }
            //向左移动
            case 'A':
            case 'a':
            case 75: {
                movesnake(hout, snake);
                //蛇头横坐标减二
                snake->x[snake->length - 1] -= 2;
                break;
            }
            //向右移动
            case 'D':
            case 'd':
            case 77: {
                movesnake(hout, snake);
                //蛇头横坐标加二
                snake->x[snake->length - 1] = 2;
                break;
            }
            //主菜单
            case 'E':
            case 'e': {
             system("cls");
             return 1;
             break;
            }
            default: {
    break;
   }
        }
        eatfood(hout, snake, food);
        printsnake(hout,snake);
        //如果判断蛇死亡,跳出循环
        if (ifdead(snake) == 0 || ch==27 /*||snake->speed==0*/ || snake->count == HEIGHT_POINTS) {
            gotoxy(hout, framex wide / 2, framey - 2);
            //if(snake->speed==0)
            if (snake->count == HEIGHT_POINTS)
                printf("恭喜你通关了!!!");
            else
                printf("你输了!!!");
            break;
        }
        if (j == 0)
        //如果没有长按,蛇滞留的时间为
            Sleep(snake->delay);
        //如果长按,蛇滞留的时间为 20ms,即加速
        else
            Sleep(20);
    }
    ECK = CLK;
    //跳出循环时 ,滞留场景一段时间
    Sleep(3000);
    //清屏
    system("cls");
    //显示结束界面
    //if(snake->speed==0)
   
    if (snake->count == HEIGHT_POINTS)
        printf("\n\n\n\n\n\t\t\t你赢了\n\n\t\t\t你得到了满分:%d\n\n\t\t\t你用了:%02d:%02d:%02d\n\n\n", HEIGHT_POINTS, ECK / 60 / 60, ECK / 60, ECK % 60);
    else
        printf("\n\n\n\n\n\t\t\t你输了\n\n\t\t\t你的最终得分是:%d\n\n\t\t\t你用了:%02d:%02d:%02d\n\n\n", snake->count, ECK / 60 / 60, ECK / 60, ECK % 60);
    printf("\t\t\t按Y继续玩,按N退出。\n\n\n");
    char x;
    x = _getch();
    if (x == 'Y' || x == 'y') {
     system("cls");
     return 1;
 }
    else return 0;
}


标签: DevC++ c++ 贪吃蛇

实例下载地址

DevC++贪吃蛇

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警