C++ 飞行游戏
源代码:
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
char temp;
int t=0,score=0,x=12,l1,l2,x1,x2;
char cmd[20][40];
void show(void){
for(int i=0;i<20;i++){
for(int j=0;j<40;j++){
cout<<cmd[i][j];
}
cout<<endl;
}
}
bool check(void){
for(int i=0;i<20;i++){
for(int j=0;j<40;j++){
if(cmd[i][j]=='O')return true;
}
}
return false;
}
void refresh(int status){
if(status==1)cmd[x][2]='O',cmd[x+1][2]=' ';//--x之后执行的刷新操作
if(status==0)cmd[x][2]='O',cmd[x-1][2]=' ';//++x之后执行的刷新操作
if(x1==0 && x2==0){
x1=39;x2=39;l1=rand()%8;l2=rand()%8;score+=10;return;
}
for(int i=0;i<l1;i++){
cmd[i][x1]='#';
}
for(int i=0;i<l2;i++){
cmd[20-i][x2]='#';
}
if(x1!=39 && x2!=39){//把上次的填充为空格
for(int i=0;i<l1;i++){
cmd[i][x1+1]=' ';
}
for(int i=0;i<l2;i++){
cmd[20-i][x2+1]=' ';
}
}
}
void game_over(void){
system("cls");
printf("GAME OVER.YOUR SCORE IS:%04d\n",score);
system("pause");
exit(0);
}
int main(){
system("title flying_game");
srand(time(0));
x1=39;x2=39;l1=rand()%11;l2=rand()%11;
cmd[x][2]='O';
printf("PRESS ANY KEY TO CONTINUE.\n");
getch();
for(;;){
system("cls");
printf("SCORE..%04d\n",score);
show();
if(clock()-t>200){
--x1;--x2;++x;refresh(0);
t=clock();
}
if(_kbhit()){
temp=getch();
if(temp==' '){
--x;
}
refresh(1);
}
if(check()==false){
game_over();
}
}
}
游戏截图:

原理:
使用随机数进行计算柱子的位置,按下空格键把小球上移,碰到柱子结束游戏。使用cmd数组保存杆子等元素的位置,在数组中绘图,然后再显示在输出控制台上。
灵感来源于https://www.cnblogs.com/xiaocaibiancheng/p/15254972.html
本来想用easyx写一个图形版本的然而太复杂就直接用控制台了
C++ 飞行游戏的更多相关文章
- Python游戏编程(Pygame)
安装Pygame pip install pygame C:\Users> pip install pygame Collecting pygame Downloading https://fi ...
- 15款Cocos2d-x游戏源码
(1)用cocos2d-x开发的中国象棋游戏源码 使用Cocos2d-X2.2.3开发的一款中国象棋游戏,游戏中可以实现.新局面.悔棋.游戏音乐.胜利后会显示游戏结果. 源码下载:http://www ...
- App Store中的开源游戏汇总
这是国外达人收集的曾经在app store上出现过,或者还在app store上卖的iOS开源游戏的列表,其中代码大部分人你托管在google code或者github上,其中有很多使用Cocos2D ...
- 作业八:团队项目——Alpha阶段项目总结
1.项目的预期目标 最初的项目计划实现一款类似微信飞机大战这样的一款模拟飞行游戏,中途也没有变动. 2.目前项目实现的功能. 击落飞机并计分. 3.下阶段我们可以增加游戏更多的功能,以及增加网络在线对 ...
- 未来的 Web:九个不可思议的 WebGL 应用试验
WebGL 技术允许把 JavaScript 和 OpenGL ES 2.0 结合在一起,通过增加 OpenGL ES 2.0 的一个 JavaScript 绑定,WebGL 可以为 HTML5 Ca ...
- [转]的C#实现三维数字地形漫游(基于Irrlicht)
马省轩 任丽娜 摘 要:本文采用C#编程语言,利用Irrlicht三维图形引擎实现了三维数字地形的漫游.为三维数字地形显示提供了较易实现的解决方案. 关键词:C# 高度图 Irrlicht引擎 ...
- ubuntu如何安装chromium浏览器并设置成中文版
在Ubuntu上使用APT安装Chromium有3种方法: 1.在Ubuntu软件中心输入chromium,然后在结果中选择安装即可. 2.在新立得软件包管理器中输入chromium,然后标记安装即可 ...
- 引擎设计跟踪 ShadowMap 细节和分析
之前在工作总汇总了shadowmap的各种问题 [工作积累] shadow map问题汇总 最近有点时间再仔细研究了shadowmap的一些算法.主要修复了LiSPSM(上面链接里后面有更新),实现了 ...
- Unity 环境区域网格化
在使用A星算法和物体布局的过程中,常常会使用的网格的概念,即建立在网格的基础上,会使得游戏的相关编程变得简单的多. 格子的代码: using System.Collections; using Sys ...
随机推荐
- Java-SpringBoot注解方式实现AOP
AOP基本总结 连接点(JoinPoint): 连接点是程序运行的某个阶段点,如方法调用.异常抛出等 切入点(Pointcut): 切入点是JoinPoint的集合 是程序中需要注入Advice的位置 ...
- Run Clojure Script with External Dependencies without leiningen
The normal way of deploy clojure files is using leiningen. But if we have no leiningen, or the scrip ...
- Mantis安装过程笔记
安装平台:Windows Server 2003 R2 Enterprise x64 Edition 软件: EasyPHP-5.3.6.1 mantisbt-1.2.6 安装过程: 首先安装Easy ...
- 用notepad2代替notepad
Windows自带的notepad.exe功能比较弱,notepad2是一个比较好的替代方案,但在任何系统调用notepad的时候都能用notepad2代替并不是一件容易的事,下面是一个解决方法: h ...
- Linux 基础学习篇 序篇
读序篇可以知道的: 1.有些指令知道前和知道后,自己的操作是完全不同的,可能知道前,会用reset把系统重新启动一遍,而知道后会使用ps和kill来关闭进程. 2.如果对Linus的学习知识" ...
- Git连接github以及gitee等使用教程
Git连接github以及gitee等使用教程 一.初始化本次仓库 在想要放置仓库的文件夹出git bash输入命令 git init 二.生成ssh 在github或者gitee注册账户, 在本地生 ...
- 将白码平台数据存储到MySQL数据库
概述: 此前在白码平台上搭建并使用系统,若想要将白码平台上搭建的系统的数据存储到自己本地的MySQL数据库中的话,需要将数据导出后再对数据进行处理.如今想要实现这一需求,直接通过使用白码的数据库对接功 ...
- [C#]c#中数据的同步加锁机制 的几种方法
一,锁定机制最简单的做法就是使用锁定关键字Lock.Lock关键字英文中就是锁的意思,顾名思义就是为操作加上一把锁.它的语法如下: lock(lockObj){//加锁的代码段,一般是操作共同资源的代 ...
- Object 类中的主要结构
== 操作符与equals 方法 == 操作符 equals 方法 重写equals() 方法的 toString() 方法
- jQuery中ajax请求的六种方法(三、四):$.getJSON()方法
4.$.getJSON()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...