贪吃蛇

gitee:贪吃蛇C语言版: Snake

蛇的结构

typedef struct Snake
{int x;int y;struct Snake *next;
};

游戏开始欢迎界面

//游戏开始欢迎界面
void meun()
{printf("                                                                                         \n");printf("                       __________       ___                                              \n");printf("                      /          \\     / \\ \\    |____      __\\__                     \n");printf("                     /  ________  \\   / ___ \\  _/ __     | |   /                       \n");printf("                     |  |      |__|     _/_   |_|  /    [|] |/                           \n");printf("                     |  |              | | |      /     _|_ \\__/                        \n");printf("                     \\  \\_______        / \\      |___/        ____                    \n");printf("                      \\         \\    ____ ____      ____   __ |  |  ___   ______       \n");printf("                       \\_______  \\   |  |/    \\    /    \\_/ / |  | /  /  /      \\   \n");printf("                               \\  \\  |    ___  \\  / ____   /  |  |/  /  /  ____  \\   \n");printf("                     __        |  |  |   /   \\  \\ | |  |  /   |     /  |  /____\\  |   \n");printf("                    \\  \\_______|  |  |  |    |  | | |__|  |   |     \\  |  ________/   \n");printf("                     \\            /  |  |    |  |  \\       \\  |  |\\  \\  \\  \\____  \n");printf("                      \\__________/   |__|    |__|   \\___/\\__\\ |__| \\__\\  \\______/ \n");printf("按回车键开始游戏");
}

初始化蛇身

//初始化蛇身
void init()
{pSnake tmp = (pSnake)malloc(sizeof(Snake *));tmp->next = NULL;head = tmp;tmp->x = 30;tmp->y = 10;for (int i = 1; i < size; i++){pSnake temp = (pSnake)malloc(sizeof(Snake *));temp->next = NULL;tmp->next = temp;temp->x = tmp->x + 2;temp->y = tmp->y;tmp = tmp->next;}
}

游戏开始欢迎界面

//游戏开始欢迎界面
void meun()
{printf("                                                                                         \n");printf("                       __________       ___                                              \n");printf("                      /          \\     / \\ \\    |____      __\\__                     \n");printf("                     /  ________  \\   / ___ \\  _/ __     | |   /                       \n");printf("                     |  |      |__|     _/_   |_|  /    [|] |/                           \n");printf("                     |  |              | | |      /     _|_ \\__/                        \n");printf("                     \\  \\_______        / \\      |___/        ____                    \n");printf("                      \\         \\    ____ ____      ____   __ |  |  ___   ______       \n");printf("                       \\_______  \\   |  |/    \\    /    \\_/ / |  | /  /  /      \\   \n");printf("                               \\  \\  |    ___  \\  / ____   /  |  |/  /  /  ____  \\   \n");printf("                     __        |  |  |   /   \\  \\ | |  |  /   |     /  |  /____\\  |   \n");printf("                    \\  \\_______|  |  |  |    |  | | |__|  |   |     \\  |  ________/   \n");printf("                     \\            /  |  |    |  |  \\       \\  |  |\\  \\  \\  \\____  \n");printf("                      \\__________/   |__|    |__|   \\___/\\__\\ |__| \\__\\  \\______/ \n");printf("按回车键开始游戏");
}

画墙

//画墙
void printWall()
{for (int i = 0; i <= 80; i += 2){pos(i, 0);printf("■");pos(i, 26);printf("■");}for (int i = 0; i <= 26; i++){pos(0, i);printf("■");pos(80, i);printf("■");}}

初始化蛇身

//初始化蛇身
void init()
{pSnake tmp = (pSnake)malloc(sizeof(Snake *));tmp->next = NULL;head = tmp;tmp->x = 30;tmp->y = 10;for (int i = 1; i < size; i++){pSnake temp = (pSnake)malloc(sizeof(Snake *));temp->next = NULL;tmp->next = temp;temp->x = tmp->x + 2;temp->y = tmp->y;tmp = tmp->next;}
}

随机函数

//随机函数
void random(int *x, int *y)
{srand((unsigned)time(NULL));
//  2~78            1~39int a = rand() % 39 + 1;int b = rand() % 25 + 1;*x = a;*y = b;
}

坐标函数

//坐标函数
void pos(int x, int y)
{COORD c;c.X = x;c.Y = y;SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}

打印蛇身

//打印蛇身
void print()
{pSnake tmp = head;while (tmp != NULL){pos(tmp->x, tmp->y);printf("■");tmp = tmp->next;}
}

蛇动

void move()
{if (flag == 77 || flag == 72 || flag == 80 || flag == 75){}else{return;}//增加头pSnake temp = (pSnake)malloc(sizeof(pSnake));temp->next = head;head = temp;if (flag == 77) //右{temp->x = temp->next->x + 2;temp->y = temp->next->y;}else if (flag == 72)   //上{temp->x = temp->next->x;temp->y = temp->next->y - 1;}else if (flag == 80){temp->x = temp->next->x;temp->y = temp->next->y + 1;}else if (flag == 75){temp->x = temp->next->x - 2;temp->y = temp->next->y;}//删尾巴pSnake tmp = head;while (tmp->next->next != NULL){tmp = tmp->next;}pos(tmp->next->x, tmp->next->y);free(tmp->next);printf("  ");tmp->next = NULL;print();
}

清除光标

//隐藏光标
void HideCursor()
{CONSOLE_CURSOR_INFO curInfo; //定义光标信息的结构体变量curInfo.dwSize = 1; //如果没赋值的话,光标隐藏无效curInfo.bVisible = FALSE; //将光标设置为不可见HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄SetConsoleCursorInfo(handle, &curInfo); //设置光标信息
}

产生食物

void Cfood()
{int x, y;random(&x, &y);if ((x >= 2 && x <= 78) && (y <= 25 && y >= 1))    //在墙里面{if (isIn(x, y) == 0) //不在蛇内{fx = x;fy = y;pos(x, y);printf("★");return;}}Cfood();
}

判断是否在蛇身上

int isIn(int x, int y)
{pSnake tmp = head;while (tmp != NULL){if (tmp->x == x && tmp->y == y){return 1;}tmp = tmp->next;}return 0;
}

随机函数

//随机函数
void random(int *x, int *y)
{srand((unsigned)time(NULL));
//  2~78            1~39int a = rand() % 39 + 1;int b = rand() % 25 + 1;*x = a * 2;*y = b;
}

判断食物是否被吃

int isFood()
{pSnake tmp = head;if (tmp->x == fx && tmp->y == fy){Cfood();add();return 1;}return 0;
}

蛇的增长

void addSnake()
{pSnake tmp = head;while (tmp->next != NULL){tmp = tmp->next;}pSnake temp = (pSnake)malloc(sizeof(Snake));tmp->next = temp;temp->next = NULL;
}

蛇的死亡

int isDe()
{pSnake tmp = head;if (tmp->x == 0 || tmp->x == 80 || tmp->y == 0 || tmp->y == 26){return 1;}tmp = tmp->next;while (tmp != NULL){if (head->x == tmp->x && head->y == tmp->y){return 1;}tmp = tmp->next;}return 0;
}

增加积分

//增加积分
void add()
{score += 5;pos(90, 15);printf("您现在的积分是:%d", score);
}

颜色

int color(int num)
{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), num);return 0;}

已经死了

void death()
{system("cls");pos(40, 15);printf("您获得的分数是:%d", score);pos(40, 16);if (score <= 20){printf("你已经死亡,真是个垃圾");}else if (score <= 30){printf("呦呵小伙子有点东西");}else if (score <= 40){printf("传说中的训蛇大师");}else if (score > 40){printf("你就是神!!!!");}else if (score > 100){printf("超越神啦!!!!!!!!!!");}getchar();
}

贪吃蛇(C语言版)链表实现相关推荐

  1. 贪吃蛇_C语言_链表实现_SCAU课程设计

    个人大一下课程设计作品,本文中直接附上源代码(通过visual stdio 2019 实现  ): 课题:贪吃蛇(链表实现~) 语言:C/C++ 运行环境(软件):Visual Stdio 2019( ...

  2. 贪吃蛇二代 —— 穿墙版(C语言实现)

    文章目录 游戏说明 游戏效果展示 游戏代码 游戏代码详解 游戏框架构建 初始化界面 隐藏光标 光标跳转 颜色设置 初始化蛇 随机生成食物 打印蛇与覆盖蛇 移动蛇 游戏主体逻辑函数 执行按键 判断得分与 ...

  3. C语言贪吃蛇游戏代码,贪吃蛇C语言代码实现大全

    一.C语言贪吃蛇代码实现前言 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言. 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏, ...

  4. 贪吃蛇c语言 游戏中会出现障碍物,贪吃蛇C语言游戏代码.doc

    贪吃蛇C语言游戏代码 //开始编写游戏需要的类 #include //EasyX_2011惊蛰版(绘图库) #include #include #include #define UP1 #define ...

  5. c语言课程设计贪吃蛇报告,贪吃蛇C语言课程设计报告.doc

    贪吃蛇C语言课程设计报告 贪吃蛇游戏设计 姓名: 张力 学号: 完成日期: 月 日 一.设计目的 贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和 ...

  6. 贪吃蛇c语言经典程序下载,C语言实现贪吃蛇游戏(单人版)

    本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 相比于第一个:贪吃蛇游戏,功能更加丰富 #include"snake.h" //蛇的移动 void m ...

  7. C语言贪吃蛇,流畅版,可继续升级改造

    好久没发博文了,这段时间正在入门kali,不过今天我会给大家讲解一下有关c语言贪吃蛇的小代码, 废话不多说,直接上代码 等等,不急,小编还有一个收藏了半年的文件给大家分享一下: 适合刚入门同学学习的编 ...

  8. 贪吃蛇 c语言 不死模式,贪吃蛇大作战不死版v1.0安卓手机版

    游戏标签 贪吃蛇大作战 贪吃蛇大作战是一款原生态ios平台移植到安卓平台超好玩的休闲竞技小型游戏,今天艾艾给你带来的是贪吃蛇大作战不死版,言一之说就是不管你怎么撞都不会死,你有无数条生命,让你玩到刷新 ...

  9. 贪吃蛇C语言源码与算法分析

    文章出自个人博客https://knightyun.github.io/2018/04/24/c-gluttonous-snake,转载请申明. 经典的贪吃蛇游戏算法,无疑是一个较大的挑战,综合性较高 ...

  10. 贪吃蛇c语言自动寻路,C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!...

    前几天有个同学加我QQ私聊我说他们老师布置了一个贪吃蛇,他不知道怎么写所以来找我求解,我给他简单讲解了思路和一些难点之后他也能够自己独立将项目完成了!考虑到更多同学可能有贪吃蛇上的问题,今天有时间就来 ...

最新文章

  1. VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
  2. 【BZOJ4545】DQS的trie 后缀自动机+LCT
  3. java 三个版本区别_关于java三个版本的区别
  4. gcc编译缺少数学库
  5. [react] react组件间的通信有哪些?
  6. 【SpringClould】SpringClould eureka 单机与集群搭建
  7. FFPLAY的原理(三)
  8. three.js 08-03 之 加载和保存对象
  9. c语言写的电脑开关机代码,只需要几行代码制作电脑开关机控制软件
  10. 学习嵌入式的书籍推荐,嵌入式编程入门教程学习大纲
  11. 2022-2028全球及中国云端税务软件行业研究及十四五规划分析报告
  12. 微信公众号官方API开发之配置服务器
  13. 电池供电的电容麦_区别真不小 动圈麦和电容麦你了解吗?
  14. Comparable Comparator
  15. C语言——数组指针篇
  16. 开源DirectShow分析器和解码器: LAV Filter
  17. 运用PowerDesigner的反向工程,可以导入SQL脚本,从而生成物理模型
  18. 查漏补缺:Java10之后,var成为关键字了吗
  19. 很实用的Eclipse小工具——Easy Explore和Explore FS
  20. 2020-08-27 RPA uipath入门demo,超级鹰实现验证码自动登录,自动搜索和拉取数据到excel,robot和Orchestrator共同实现定时安排机器人执行任务。

热门文章

  1. 小米笔记本AIR13.3第一代(6200U+8GB+256GB,不带指纹)双系统(WIN10+DEEPIN)安装过程避坑
  2. 计算机大学生论文参考文献,大学生计算机外文外文 大学生计算机论文参考文献哪里找...
  3. 在 SQL Server 中使用日历表
  4. T-LESS:制作RGBD 6D姿态数据集和标签
  5. 程序员如何修炼成系统分析员
  6. html5倒车游戏,html5制作转盘游戏
  7. 「津津乐道播客」#197. 拼娃时代:聊聊帝都拼娃史
  8. 2022开年第一个爆款凭什么是山东蓝翔?如何实现破圈传播?
  9. MongoDB副本集的部署与操作
  10. vue——初学Vue