简单的下一百层的c++实现,代码一晚上就码完了

注意:游戏前请在 默认值 或 属性 中调整缓冲区大小,否则会输出爆屏,方法写在代码里了

觉得速度 快/慢 的可以在第 23 行手动改一下,相信大神们能看懂~

/*************************************************************/

/*
< D O W N >
**作者:CQzhangyu
**使用说明:
游戏时请在 窗口 上按 右键 打开菜单
点击 默认值 ->
布局 ->
将 屏幕缓冲区 中的 高度 改为 9999
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<queue>
#include<time.h>
#include<conio.h>
#include<windows.h>
#define gowhite SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
#define goyellow SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN|FOREGROUND_INTENSITY)
#define gogreen SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY)
#define gored SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_INTENSITY)
using namespace std;
const int n=20,m=24,unit=20,len=5,sfall=2,smove=1,sdown=5,hei=7;
int tot,depth,score,dead,px,py;
char input;
queue<int> qx,qy;
void GOTO(int x,int y)
{
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
}
void pmenu()
{
GOTO(0,0);
int i;
printf("\n\n\n\n\n");
puts(" ╔═══════════════════════════╗");
puts(" ║ ████ ███ █ █ █ █ ║");
puts(" ║ █ █ █ █ █ █ █ ██ █ ║");
puts(" ║ █ █ █ █ █ █ █ █ █ █ ║");
puts(" ║ █ █ █ █ █ █ █ █ █ █ ║");
puts(" ║ █ █ █ █ █ █ █ █ █ █ ║");
puts(" ║ █ █ █ █ █ █ █ ██ ║");
puts(" ║ ████ ███ █ █ █ █ ║");
puts(" ╚═══════════════════════════╝");
printf("\n\n\n");
puts(" Press any key to start.");
getch();
system("cls");
for(i=1;i<=n+1;i++) printf("▼");
printf("\n");
for(i=1;i<=m;i++)
puts("║ ║");
GOTO(50,3);
printf("分 数:");
GOTO(0,24);
}
int main()
{
srand(time(NULL));
pmenu();
qx.push((n-len)/2+1);
qy.push(23);
GOTO(n-len+3,23);
int i,tx,ty;
for(i=0;i<len;i++)
printf("█");
px=n/2;
py=22;
GOTO(n+2,22);
goyellow;
printf("●");
gowhite;
while(!dead)
{
tot++;
if(tot%smove==0)
{
while(kbhit())
{
input=_getch();
if(input=-32)
{
input=_getch();
if(input==75&&px>0&&(py!=qy.front()||px>qx.front()+len))
{
GOTO(px*2+2,py);
printf(" ");
px--;
GOTO(px*2+2,py);
goyellow;
printf("●");
gowhite;
}
if(input==77&&px<n-1&&(py!=qy.front()||px<qx.front()-1))
{
GOTO(px*2+2,py);
printf(" ");
px++;
goyellow;
printf("●");
gowhite;
}
}
}
}
if(tot%sdown==0)
{
depth++;
if(py==depth)
{
dead=1;
break;
}
GOTO(0,depth);
for(i=1;i<=n+2;i++) printf("▼");
GOTO(50,depth+2);
printf(" ");
GOTO(50,depth+3);
printf("分 数:");
gogreen;
printf("%04d",score);
gowhite;
GOTO(0,depth+23);
puts("║ ║");
if(depth%hei==0)
{
score++;
tx=rand()%(n-len+1);
ty=depth+23;
qx.push(tx);
qy.push(depth+23);
GOTO(tx*2+2,ty);
for(i=1;i<=len;i++)
printf("█");
}
}
if(tot%sfall==0)
{
while(!qy.empty()&&qy.front()<py)
{
qx.pop();
qy.pop();
}
if(qy.empty()||py+1!=qy.front()||px<qx.front()||px>=qx.front()+len)
{
GOTO(px*2+2,py);
printf(" ");
py++;
GOTO(px*2+2,py);
goyellow;
printf("●");
gowhite;
}
}
if(py>=depth+24)
{
dead=1;
break;
}
GOTO(0,depth+24);
Sleep(unit);
}
GOTO(50,depth+15);
gored;
printf("---Game Over---");
gowhite;
GOTO(0,depth+24);
getch();
return 0;
}

【CQgame】[下一百层] [Down]的更多相关文章

  1. HTML5小游戏【是男人就下一百层】UI美化版

    之前写的小游戏,要么就比较简单,要么就是比较难看,或者人物本身是不会动的. 结合了其它人的经验,研究了一下精灵运动,就写一个简单的小游戏来试一下. 介绍一下几个主要的类: Frame:帧的定义,主要描 ...

  2. Unity经典游戏教程之:是男人就下100层

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  3. Linux网络栈下两层实现

    http://www.cnblogs.com/zmkeil/archive/2013/04/18/3029339.html 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linu ...

  4. 解决IE6下浮动层固定定位的经典方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等

    超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 &l ...

  6. 【阿里聚安全·安全周刊】双十一背后的“霸下-七层流量清洗”系统| 大疆 VS “白帽子”,到底谁威胁了谁?

    关键词:霸下-七层流量清洗系统丨大疆 VS "白帽子"丨抢购软件 "第一案"丨企业安全建设丨Aadhaar 数据泄漏丨朝鲜APT组织Lazarus丨31款违规A ...

  7. 『HTML5挑战经典』是英雄就下100层-开源讲座(二)危险!英雄

    本篇为<『HTML5挑战经典』是英雄就下100层-开源讲座>第二篇,需要用到开源引擎lufylegend,可以到这里下载: 下载地址:http://lufylegend.googlecod ...

  8. 『HTML5挑战经典』是英雄就下100层-开源讲座(一)从天而降的英雄

    是英雄就下100层是一款经典的手机小游戏,以前是在诺基亚手机上十分有名.今天我们就用HTML5和lufylegend一步步地实现它. 一,准备工作 首先,你需要下载lufylegend,下载地址如下: ...

  9. 是男人就下100层【第四层】——Crazy贪吃蛇(2)

    在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...

随机推荐

  1. Swift - 获取、改变按钮的标题文本(UIButton点击切换title)

    在开发中,我们常常需要动态地改变按钮标签文字,使用 setTitle() 函数就可以了.有时我们需要在几个标题间切换,比如下面样例所示,按钮点击后按钮文字会在"播放""暂 ...

  2. 三、jQuery--jQuery基础--jQuery基础课程--第12章 jQuery在线聊天室

    在线聊天室案例 一.功能简介: 1.用户需要登录后才能进入聊天室交流 2.已无刷新的方式,动态展示交流后的内容和在线人员的基本信息 3.登录后的用户可以提交文字和表情图标 技术重点:利用ajax的无刷 ...

  3. 随机数组&大数相加

    随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中 一,      设计思路: 先生成随机数数组,再将数组保存在一个字符串中,然后将数组各数字加和, ...

  4. 利用bak文件恢复数据库问题小结

    对备份的基础理解: --完整备份:完整备份会备份所有数据的区和少量的日志(日志文件用于恢复数据保持数据一致性).由于差异备份需要依据最后一次完整备份,因此完整备份会清楚一些分配位图数据. --差异备份 ...

  5. AIX性能监控

    http://www.ibm.com/developerworks/cn/aix/library/au-aix7memoryoptimize2/ http://www.aixchina.net/Art ...

  6. 谈谈Delph中的类和对象2---类可以理解成一种特殊的数据结构、类型转换

    三.类可以理解成一种特殊的数据结构 我们知道数据类型可以进行强制类型转换,类既然可以理解成一种数据类型,那么它也应该可以进行类型转换.比如下面代码为一个按钮(Button1)的单击事件 procedu ...

  7. SQL Server 2014 BI新特性(一)五个关键点带你了解Excel下的Data Explorer

    Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛. 此文是在微软商业智能官方博客里 ...

  8. FTP的20、21端口,工作模式

    什么是FTP? FTP就是文件传输协议 File Transfer Protocol 的缩写. FTP端口号是多少? 21 FTP的端口号能改吗? 能 ftp的端口号20.21有何区别? 一个是数据端 ...

  9. C编译: 动态连接库 (.so文件)(转摘)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在“纸上谈兵: 算法与数据结构”中,我在每一篇都会有一个C程序,用于实现算法和数据 ...

  10. iOS 随记

    UIImage 走缓存 + (UIImage *)imageNamed:(NSString *)name; 不走缓存 + (UIImage *)imageWithContentsOfFile:(NSS ...