C++实践 极简版本贪吃蛇小游戏
借鉴了很多网上大神们的代码,给了我思路和制作方法。
这个版本是最为简单的贪吃蛇,单纯在运行框中运行。最为基础的。
这个版本还有一个问题,由于每次都要刷新屏幕,结果屏幕一闪一闪的,特别不舒服。现在正在努力改进中
#include<iostream>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;
int i,j,dengji,speed,grade,fenshu,head,weiba;
void shuaxin(char ditu[22][22])
{
system("cls");
for(i=0;i<22;i++)
{
cout<<" ";
for(j=0;j<22;j++)
cout<<ditu[i][j]<<" ";
if(i==0)
cout<<"你现在的等级为:"<<dengji;
if(i==3)
cout<<"自动前进时间间隔为"<<speed;
if(i==6)
cout<<"你的得分为"<<fenshu;
cout<<endl;
}
}
int main()
{
//地图绘制
//这一部分是地图的构建
char ditu[22][22]; // 贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)
int i,j;
for(i=1;i<=20;i++)
for(j=1;j<=20;j++)
ditu[i][j]=' '; // 初始化贪吃蛇棋盘中间空白部分
for(i=0;i<=20;i++)
ditu[0][i] = ditu[21][i] = '-'; //初始化贪吃蛇棋盘上下墙壁
for(i=1;i<=28;i++)
ditu[i][0] = ditu[i][21] = '|'; //初始化贪吃蛇棋盘左右墙壁
//蛇的绘制
int x_she[100],y_she[100];//分别代表x和y的坐标
for(i=0;i<4;i++) //初始长度为4
{
x_she[i]=1;//都在第一行
y_she[i]=i+1; //横着排
}
head=3;
weiba=0;//头和尾巴的位置,方便以后进行移动!!!!
for(i=1;i<=3;i++)
ditu[1][i]='*'; //以下两行则是在地图上实现蛇的初始位置
ditu[1][4]='#';
//食物的自动生成
int x1,y1;
srand(time(0));//产生随机数
do
{
x1=rand()%22+1; //随机产生的数对地图取余再加1;
y1=rand()%22+1;
}while(ditu[x1][y1]!=' '); //直到合理位置
ditu[x1][y1]='*'; //在地图上表现;
//开始
int speed;
cout<<"请选择难度\n1:简单\n2:中等\n3:困难\n4:炼狱\n";
cin>>speed;
if(speed==1)
speed=100;
else if(speed==2)
speed=400;
else if(speed==3)
speed=200;
else if(speed==4)
speed=1;
cout<<"\n\n\t\t贪吃蛇游戏即将开始 !"<<endl;
long start;
int dengji=1;//初始等级
int length=4;//初始长度
//开始倒计时
for(i=3;i>=0;i--)//i就是倒计时
{
start=clock();
while(clock()-start<=1000); //刷新页面的倒计时
system("cls");
if(i>0)
cout<<"\n\n\t\t进入倒计时:"<<i<<endl;
else
shuaxin(ditu); //刷新页面,打印地图
}
/正式开始操作
int timeover;
char direction=77;//默认向右出发
int x,y;
while(1)
{
timeover=1;
start=clock(); //随机产生
while((timeover=(clock()-start<=speed))&&!kbhit());//时间超过了游戏速度,则自动前进
if(timeover)
{
getch(); //不需要回车键的输入,用来操作游戏
direction=getch();//!!一定要赋值
}
switch(direction)
{
case 72: x= x_she[head]-1; y= y_she[head];break; // 向上
case 80: x= x_she[head]+1; y= y_she[head];break; // 向下
case 75: x= x_she[head]; y= y_she[head]-1;break; // 向左
case 77: x= x_she[head]; y= y_she[head]+1; //默认向右
}
if(!(direction==72||direction==80||direction==75 ||direction==77))
{ // 按键非方向键
cout << "\tGame over!" << endl;return 0;
}
if(x==0 || x==21 ||y==0 || y==21)
{ // 碰到墙壁
cout << "\tGame over!" << endl;return 0;
}
if(ditu[x][y]!=' '&&!(x==x1&&y==y1))
{ // 蛇头碰到蛇身
cout << "\tGame over!" << endl;return 0;
}
if(x==x1&&y==y1) //吃到了食物
{
fenshu++;
length++;
if(length>=8)
{
length=length-8;
if(speed>=200)
speed=550-grade*50;
}
ditu[x][y]='#';//食物那个位置变成了头!
ditu[x_she[head]][y_she[head]]='*';//原来头的位置变成了身子
head=(head+1)%100; //头的位置刷新一下
x_she[head]=x;
y_she[head]=y;
do //在产生一个食物,方便刷新地图时一起出现
{
x1=rand()%20+1;
y1=rand()%20+1;
}while(ditu[x1][y1]!=' ');
ditu[x1][y1]='*';
shuaxin(ditu);
}
else//没有吃到米,这个时很重要很重要的一部分.解答一个疑惑,很多人不明白为什么
//转了弯,身子会沿着头的方向走,下面就是答案。因为头就是下一个的身子,一个连着一个
//顺序不会变
{
ditu[x_she[weiba]][y_she[weiba]]=' '; //前进了一步
weiba=(weiba+1)%100; //刷新尾巴
ditu[x_she[head]][y_she[head]]='*'; //头变成了身子
head=(head+1)%100; //刷新尾巴
x_she[head]=x;//更新头
y_she[head]=y;
ditu[x_she[head]][y_she[head]]='#';
shuaxin(ditu);
}
}
}
C++实践 极简版本贪吃蛇小游戏相关推荐
- 蘑菇云「行空板Python入门教程」第六课:贪吃蛇小游戏
在很久很久以前,手机屏幕都还是黑白的年代,有一款叫做"贪吃蛇"的游戏风靡了大街小巷,在那分辨率极低的屏幕上,几条扭扭曲曲的弧线似乎穿越了整个童年. 这节课上,就让我们用行空板来实现 ...
- python简易贪吃蛇小游戏任务书含代码
目 录 第一章 绪论 1.1 开发的背景 1.2 开发的目的 1.3 开发的意义 1.4 开发工具简介 第二章 需求分析 (1) 利用方向键来改变蛇的运行方向. (2) 在随机的地方产生食物. (3 ...
- python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏
Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...
- 再来一次的C语言贪吃蛇小游戏(三)
8.游戏的不同界面 为了便于实现主要功能,之前我们所有的状态控制都是放在游戏中,但实际上我们应该把这些状态控制抽离出来,通过菜单来控制,以便在不同游戏界面间切换. 菜单界面 游戏界面 排行榜 游戏结束 ...
- 基于C语言Ncurse库和链表的简单贪吃蛇小游戏
参考:基于C语言Ncurse库和链表的简单贪吃蛇小游戏 作者:三速何时sub20 发布时间:2020-09-29 10:23:51 网址:https://blog.csdn.net/weixin_44 ...
- c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码
/* *程序名称:贪吃蛇v2.1 *程序描述:一个简易的贪吃蛇小游戏 *版本信息:v2.1 *v1.1版本更新:1:加入菜单选择项 *v1.2版本更新:1:修复菜单选择bug *v1.3班本更新:1: ...
- python快速实现简易贪吃蛇小游戏
贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本.既简单又耐玩.该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长. 贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式.赏金模 ...
- 用 typescript 做一个贪吃蛇小游戏
typescript 做一个贪吃蛇小游戏 搭建环境 创建 tscofig.json 文件 配置如下 {"compilerOptions": {"target": ...
- JavaScript 进阶教程(2)---面向对象实战之贪吃蛇小游戏
目录 1 引言 2 游戏地图 3 游戏对象 3.1 食物对象 3.2 小蛇对象 3.3 游戏对象 4 游戏的逻辑 4.1小蛇的移动 4.2 让蛇自己动起来 4.2.1 自动移动 4.2.2 自调用函数 ...
最新文章
- 2018-3-7 HDFS架构
- python商业爬虫_商业爬虫学习笔记day1
- Knockout应用开发指南(完整版) 目录索引
- 异常检测算法--Isolation Forest
- Anaconda 环境下 对Tushare进行测试
- 接上,进一步优化,LruCache缓存
- JS中全局对象的属性和方法
- 如何看待papi酱的个人平台papitube?
- c语言 srand time 0,c++ 随机数 srand(time(0)) 用法 | 求索阁
- java集合的添加方法_深入理解java集合框架之---------Arraylist集合 -----添加方法
- 蚂蚁金服OceanBase挑战TPCC|TPC-C基准测试之数据库事务引擎挑战
- Redis,真的不完美!
- HDU1829【种类并查集】
- java入门第二天如何使用Elipse
- js input输入框去空格
- c#二次开发明华URF-R330读写器读写问题解决方案
- 一款完整开源的物联网基础平台
- python猴子分桃_Python 五猴分桃.py问题解答代码
- Mac修改默认的电子邮箱客户端
- Python Windows发出警报声、蜂鸣器、声音报警
热门文章
- [backtrack教程]从零开始,教你如何破解WEP、WPA无线网络
- virbr0怎么关闭_kvm虚拟化关闭虚拟网卡virbr0的方法
- Word VBA中的光标操作
- plc服务器作用,工业控制系统以及PLC的简单介绍
- h5 使用canvas实现电子签名和图片的保存
- 萌新记一次在openEuler下安装VMware-Tools的失败经历
- java诺基亚nba,NBA“神器”大比拼 詹皇如三星邓肯似诺基亚
- 【第八课】用于三维建模的拍摄技巧(用手机、相机拍摄)
- 爬虫ip在使用中被封了如何解决 ?
- 竞赛——【蓝桥杯】2022年11月第十四届蓝桥杯模拟赛第一期Python