疫情期间看了河海大学的mooc跟着做的练手程序
实现了贪吃蛇的基本功能 使用wasd控制前进
一步步做出来很有成就感
课程网址:
https://www.icourse163.org/course/HHU-1206797807?tid=1450398479

成品截图



初探游戏制作 挺有意思的
全代码如下 注释很多

#include "stdio.h"
#include "stdlib.h"//包涵rand()函数
#include "conio.h"//包涵kbhit()函数
#include "windows.h"//包涵gotoxy ()函数
#include "time.h"//包涵时间函数time(),用来给rand取时间种子 const int high=10;
const int width=12 ;
int display[high][width];//地图大小
int head_x,head_y;//蛇头位置
int head_vx,head_vy;//蛇移动速度(主要是取方向)
int suger_x,suger_y;//糖位置
int lenth;//蛇长度
bool alive;//还活着么
//全局变量//本游戏实现了贪吃蛇的基本玩法,
//整形二维数组为基础,蛇的移动和物件的显示均以数组元素的更替实现
//蛇头处数据为1,身体处数据依次以2、3、4···递增lenth
//食物处数据为-2,墙为-1(墙可以吃 ,墙的另一边才是死亡判断处)
// 示例图 如下
//名称 数组值 显示字符
//蛇头   1       @
// 糖   -2       $
// 墙   -1        #
//蛇身  2/3/4... 0                 0
//描述的不清 读者可以自行跟着视频mooc制作
//  2020/4/16  共计约6小时  NBU 196003408   //另彩蛋:墙可以吃 墙之外的才为死亡判断
void gotoxy(int x, int y) {//光标移动,用来刷新画面显示COORD pos = {x,y};    //相当于system("cls");但不会造成闪烁HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//主程序里可SetConsoleCursorPosition(hOut, pos);//以自己试试
}
void initialize() { //初始化函数srand((unsigned)time(NULL));//时间为种子 为rand取种子lenth=1; alive=1;suger_x=rand() %(width-4)+2;suger_y=rand() %(high-4)+2;head_x=width/2;head_vx=0;head_y=high/2;head_vy=0;while(head_x==suger_x&&head_y==suger_y)   //避免糖与蛇重叠head_x=rand()%(width-2)+1,head_y=rand()%(high-2)+1;for(int i=0; i<high; i++) {for(int j=0; j<width; j++) {if(i==0||i==high-1||j==0||j==width-1)display[i][j]=-1;else if(head_x==j&&head_y==i)display[i][j]=1;else if(suger_x==j&&suger_y==i)display[i][j]=-2;elsedisplay[i][j]=0;}}
}
void show() {   //画面显示函数gotoxy(0,0);//system("cls");for(int i=0; i<high; i++) {for(int j=0; j<width; j++) {if(display[i][j]==-1)printf("#");else if(display[i][j]==1)printf("@");else if(display[i][j]>1)printf("O");else if (display[i][j]==-2)printf("$");else if(display[i][j]==0)printf(" ");}printf("\n");}printf("当前得分:%d   ",lenth-1);
}
void update_without() {//赋值显示无关(数据处理有关)的更新head_x=head_x+head_vx;head_y=head_y+head_vy;//蛇头前进 if(display[head_y][head_x]>1) alive=0;//撞自己了 if(head_x>=width||head_x<0||head_y>high||head_y<0) alive=0;//冲破束缚的代价 if(head_x==suger_x&&head_y==suger_y){//甜了自己一口 lenth++;//  while(display[suger_y][suger_x]!=0){suger_x=rand()%(width-2)+1;suger_y=rand()%(high-2)+1;}display[suger_y][suger_x]=-2;}if(display[head_y][head_x]==-1)lenth++;//该死的墙头蛇吃着资本主义的糖 }
void update_with() {//与数组赋值显示有关的更新for(int i=0; i<high; i++) {for(int j=0; j<width; j++) {if(display[i][j]>0&&display[i][j]<=lenth)display[i][j]++;//蛇身前进 if(head_x==j&&head_y==i)display[i][j]=1;// 蛇头前进 if(display[i][j]>lenth)display[i][j]=0;//蛇尾前进 }}
}void operate() {if(kbhit()) {int input=getch();switch (input) {case 'a':head_vx=-1;head_vy=0;break;case 's':head_vy=1;head_vx=0;break;case 'w':head_vy=-1;head_vx=0;break;case 'd':head_vx=1;head_vy=0;break;}}//你控制的不是头  是头的方向!!
}
int main() {initialize();while(alive) {show(); Sleep(300) ;operate();update_without();update_with();}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED);//设置文本输出红色 printf(" WASTED \a"); //neta自GTAVSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);//将文本输出颜色还原 Sleep(1000) ;system("pause");
}

【游戏】[C++] 贪吃蛇控制台版相关推荐

  1. c语言贪吃蛇控制台版

    用c语言写的期末作业 /* {conio.h阻塞式: getch(): 从无回显的控制台获取字符.无缓冲区,只有当按下一个键才会执行后面的程序.非阻塞式: kbhit() 检测缓冲区中是否有字符:执行 ...

  2. 贪吃蛇简易版(C++)

    导航 下一篇:贪吃蛇升级版(C++) 目录 一. 贪吃蛇简易版的实现 1. 贪吃蛇如何存储? 2. 贪吃蛇如何移动? 3. 食物如何生成? 4. 如何判断游戏结束? 二. 贪吃蛇简易版的优化 1. 添 ...

  3. C语言 小游戏之贪吃蛇

    还记得非常久曾经听群里人说做贪吃蛇什么的,那时候大一刚学了C语言,认为非常难,根本没什么思路. 前不久群里有些人又在谈论C语言贪吃蛇的事了,看着他们在做,我也打算做一个出来. 如今大三,经过了这一年半 ...

  4. Java游戏开发——贪吃蛇

    最近在重构代码,思路和制作过程都有不少变化,为了避免混淆,我将之前的博客内容移到了我的有道云笔记里,通过链接可以查看历史文章. 旧版:http://note.youdao.com/noteshare? ...

  5. 贪吃蛇大作战代码java,贪吃蛇游戏,贪吃蛇java游戏代码讲解

    贪吃蛇游戏,贪吃蛇java游戏代码讲解 来源:互联网 作者:佚名 时间:2020-06-06 贪吃蛇源代码.txt这世界上除了我谁都没资格陪在你身边. 听着,我允许你喜欢我.除了白头偕老,我们... ...

  6. canvas游戏篇 - 贪吃蛇

    截图如下: HTML 代码如下: <!DOCTYPE html> <html> <head><meta charset="UTF-8"&g ...

  7. python贪吃蛇源码_Python:游戏:贪吃蛇(附源码)

    Python:游戏:贪吃蛇(附源码) 发布时间:2018-09-05 09:59, 浏览次数:1295 , 标签: Python 贪吃蛇是个非常简单的游戏,适合练手. 首先分析一下这个游戏 1.蛇怎么 ...

  8. cocos creator开发微信小游戏(五)贪吃蛇大作战

    目录 小游戏介绍 小游戏cocos creator场景图 小游戏部分JS代码 开发中碰到的问题 工程及说明 小游戏介绍 贪吃蛇小游戏:贪吃蛇试玩(首次加载比较慢),类似贪吃蛇大作战的小游戏.当玩家的蛇 ...

  9. Python 游戏:贪吃蛇

    系列文章地址 Python 游戏:贪吃蛇 Python 游戏:扫雷 Python 游戏:300行代码实现俄罗斯方块 Python 游戏:五子棋之人机对战 文章目录 系列文章地址 一.游戏介绍 二.游戏 ...

  10. 贪吃蛇java版_java贪吃蛇极速版

    本文为大家推荐了一款由java实现经典小游戏:贪吃蛇,相信大家都玩过,如何实现的呐? 效果图: 废话不多说,直接奉上代码: 1. public class GreedSnake { public st ...

最新文章

  1. hibernate之 一级缓存和二级缓存
  2. 习题:codevs 2822 爱在心中 解题报告
  3. 为什么ABAP SE11里传送table entry的菜单项被禁掉了
  4. 三菱四节传送带控制梯形图_【毕业设计】三菱plc(论文)基于PLC的传送带的控制系统设计毕业设计...
  5. 127.0.0.1和0.0.0.0和本机IP的区别
  6. linux底下dig命令报错
  7. 加密狗破解原理和破解方法介绍
  8. 无效的列类型 || Mbatis-Plus链接oracle
  9. 高数_第6章无穷级数__正项级数的性质_比值_比较_根值_极限审敛法
  10. 秦殇千年轮回java游戏下载,智云稳定器如何拍旋转画面 使用稳定器拍摄画面方法...
  11. python三个单引号成对用于什么_python中三个单引号是什么意思
  12. openwrt路由器挂载sdcard为overlay
  13. 软考题目快速学习法(个人笔记)
  14. 群晖、黑群晖安装emby很慢,或者卡0%的解决办法,请收藏
  15. 机器学习-支持向量机SVM算法
  16. 安装配置Android Studio集成开发环境
  17. 《TensorFlow深度学习》学习笔记--10.卷积神经网络--1.LeNet-5实战
  18. 电子商务中的数据挖掘技术
  19. 罗振宇2021跨年演讲8:为什么不能随便当“过来人”?
  20. 远程控制软件哪个好?

热门文章

  1. 类似print shopmail可变数据生成,排版、拼版实现
  2. 【JZOJ】【数论】立体井字棋
  3. 广告终结者chinalist-easylist语法规则
  4. 项目管理工具——Jira使用和配置
  5. 如何判断函数极值点与拐点
  6. word中插入高分辨率图片,并且保存为PDF图片仍然高清的方法
  7. 一个php网站加入背景音乐,html页面中如何添加背景音乐
  8. 2021 OpenCV人工智能竞赛优秀项目团队介绍集锦(五)
  9. 解决Carsim2016找不Liscens问题
  10. python中的if语句