[娱乐]一款浅陋的C++控制台贪吃蛇小游戏
因为时间有限,没能尽可能完善这一款贪吃蛇,不过能做出来还是很有意思的
1 #include<bits/stdc++.h> 2 #include<windows.h> 3 #include<conio.h> 4 #include<stdlib.h> 5 using namespace std; 6 const int dy[5]={0,-1,1,0,0}; 7 const int dx[5]={0,0,0,1,-1}; 8 int n=50,m=30,Score,Speed; 9 int kind[101][31]; 10 struct point{ 11 int x,y,kind; 12 }; 13 HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出句柄 14 void Setup(){ 15 system("color 0F");//设置控制台界面背景颜色和前景颜色 16 system("mode con cols=50 lines=31");//初始化缓冲区大小 17 SetConsoleTitle("Greddy Snake");//设置控制台窗口标题 18 } 19 void Move(int x,int y){//移动到指定坐标 20 COORD posPoint={x,y}; 21 SetConsoleCursorPosition(hOut,posPoint); 22 } 23 void Home(){//显示首页 24 system("CLS"); 25 Move(0,0); 26 printf("移动 : [A] [S] [D] [W]\n"); 27 printf("暂停 : [P]\n"); 28 printf("确定 : [Space]\n"); 29 system("pause"); 30 } 31 32 void Addapp(){//放置苹果 33 srand(time(0)); 34 if (40<Score++) Speed=100; 35 int x,y; 36 do{ 37 x=rand()%n; 38 y=rand()%m; 39 }while (kind[x][y]); 40 kind[x][y]=2; 41 Move(x,y);printf("#"); 42 } 43 44 bool Update(queue<point>& que,int now){//更新蛇体 45 Move(12,30);printf("%d",Score); 46 point s=que.back(); 47 s.x+=dx[now],s.y+=dy[now],s.kind=now; 48 s.x=(s.x+n)%n,s.y=(s.y+m)%m; 49 if (kind[s.x][s.y]==1) return false; 50 if (kind[s.x][s.y]==2) Addapp();//吃到苹果 51 else{ 52 point ss=que.front(); 53 Move(ss.x,ss.y);printf(" "); 54 que.pop();kind[ss.x][ss.y]=0; 55 } 56 Move(s.x,s.y);printf("*"); 57 que.push(s);kind[s.x][s.y]=1; 58 return true; 59 } 60 bool flag=true; 61 void Play(){ 62 system("CLS"); 63 Move(0,30);printf("当前得分: |----------<0xfaner>----------|",Score); 64 memset(kind,0,sizeof(kind)); 65 kind[0][0]=1; 66 queue<point> que; 67 point a={0,0,1};que.push(a); 68 Speed=200;Score=0;Addapp(); 69 int now=3; 70 while (true){ 71 char x=' '; 72 if (_kbhit()) x=getch(); 73 if ('a'<=x&&x<='z') x+='A'-'a'; 74 switch (x){ 75 case 'W':if (now>2) now=1; break; 76 case 'S':if (now>2) now=2; break; 77 case 'D':if (now<3) now=3; break; 78 case 'A':if (now<3) now=4; break; 79 case 'P':{ 80 while (true){ 81 if (_kbhit()) x=getch(); 82 if (x!='P') break; 83 } 84 break; 85 } 86 } 87 if (!Update(que,now)){ 88 Sleep(1000); 89 system("CLS"); 90 Move(18,12); 91 printf("You Lose"); 92 Move(11,13); 93 printf("Press [R] to play again"); 94 Move(11,14); 95 printf("Press [E] to exit game"); 96 do{ 97 char x=getch(); 98 if ('a'<=x&&x<='z') x+='A'-'a'; 99 if (x=='E') flag=false; 100 if (x=='E'||x=='R') break; 101 }while (true); 102 break; 103 } 104 Sleep(Speed); 105 } 106 } 107 int main(){ 108 Setup(); 109 Home(); 110 while (flag) Play(); 111 return 0; 112 }
Greedy_Snake
之后有时间我会继续完善这一款小游戏的(咕咕咕
计划清明节之前用多线程重写一下(咕咕咕
转载于:https://www.cnblogs.com/liyian/p/10639312.html
[娱乐]一款浅陋的C++控制台贪吃蛇小游戏相关推荐
- 【C++】经典项目控制台贪吃蛇小游戏详细教程
[小游戏]贪吃蛇GreedySnake 本文将讲解如何使用c++面向对象方法编写控制台版贪吃蛇小游戏 项目github地址:游戏源码链接 游戏下载:GreedySnake 本人属初学者,水平所限,难免 ...
- C++控制台贪吃蛇小游戏详细教程
游戏截图 开始动画: 游戏过程: 游戏架构设计 该游戏的玩法简单,玩家通过键盘方向键控制蛇上下左右移动,吃到食物得分并增长,碰到墙或者自己的身体则死亡,游戏结束. 整个游戏其实就是一 ...
- Golang 控制台百行代码贪吃蛇小游戏
Golang 并不适合在前端工作,缺少强大的图形图像包和硬件加速包,更适合做成后台服务程序.本文的贪吃蛇小游戏运行与控制台上,其中调用了Window系统kernel32.dll中控制台相关的函数. 项 ...
- 控制台版贪吃蛇小游戏 C语言
写在前面 最近我们C语言的课设快开始了,开始前刚好有时间就写了一下C语言的贪吃蛇小游戏(单链表实现),包含了经典模式和无边界模式 ,网上查了设置颜色 和 改变光标位置 还有 用方向键控制 的函数,第一 ...
- Android Studio实现贪吃蛇小游戏
项目目录 一.项目概述 二.开发环境 三.详细设计 四.运行演示 五.项目总结 六.源码获取 一.项目概述 贪吃蛇是一款经典的街机游戏,不仅在电子游戏史上占有一席之地,也在很多人的童年回忆中留下了深刻 ...
- python简易贪吃蛇小游戏任务书含代码
目 录 第一章 绪论 1.1 开发的背景 1.2 开发的目的 1.3 开发的意义 1.4 开发工具简介 第二章 需求分析 (1) 利用方向键来改变蛇的运行方向. (2) 在随机的地方产生食物. (3 ...
- 基于C语言Ncurse库和链表的简单贪吃蛇小游戏
参考:基于C语言Ncurse库和链表的简单贪吃蛇小游戏 作者:三速何时sub20 发布时间:2020-09-29 10:23:51 网址:https://blog.csdn.net/weixin_44 ...
- python快速实现简易贪吃蛇小游戏
贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本.既简单又耐玩.该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长. 贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式.赏金模 ...
- 贪吃蛇小游戏 (一)
贪吃蛇是一款儿时爱不释手的游戏.近日修行,想玩玩游戏开发.便简单写了个控制台版的贪吃蛇. 程序的简单框架: 建立一张固定大小的MAP,保存输出信息. 当信息有变动时,用system("cls ...
最新文章
- 在目前大数据时代下,怎么能成为一名合格的数据分析师
- SpringBoot - 探究Spring Boot应用是如何通过java -jar 启动的
- VB API 之 第十一课 绘制矩形
- 用c语言编译二叉树,C语言实现二叉树的基本操作
- python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...
- WPF开源项目:WPF-ControlBase
- java 连接 sftp失败_java – 文件上传到SFTP失败(Apache VFS)
- 字节跳动暑期日常实习前端面试
- 想从远程办公进入 toB 蓝海?它可以,你未必
- 5. PDO 数据库封装
- 2018年中小学计算机培训,2018年中小学网管员培训心得体会
- GreenDao清空数据库的方法
- 抖音运营详细教程,算法解读、平台规则、热门涨粉......丨国仁网络
- 组态王 6.55 启停plc_PLC编程进料PLC编程项目
- 【檀越剑指大厂--redis】redis基础篇
- zbursh2021尝新,安装包
- perl与c相互调用
- 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂
- Java中AudioFileStream_iOS音频学习一之AudioFileStream
- 交换机日志删除_如何查看交换机报警日志 并导出日志 命令是什么
热门文章
- captura录屏发生了一个错误_录屏教程的方法有哪些?学会这两种轻松搞定
- python3代码转python2_Python2代码转成Python3代码
- java 文本编辑器替换特殊字符_linux中批量替换文本中字符串--转载
- mysql server 80_mysql Host 'microsof-80f25e' is not allowed to connect to this MySQL server
- python软件安装及设置_入门Python——1.软件安装与基础语法
- mysql的表最多可设置多少字段?
- git 连接到远程的其它分支问题
- Android移动开发之【Android实战项目】漂亮Button样式
- 字符串 mysql索引,长字符串的MySQL索引
- 如何优化才能赢得搜索引擎“欢心”,提升抓取量?