当前位置: 首页 > news >正文

c++游戏_小恐龙(开源)

小恐龙2.0网址:c++游戏_小恐龙2.0(开源)-CSDN博客

一、游戏概述

这段C++代码实现了一个简易的恐龙跳跃游戏,灵感来源于Chrome浏览器在断网状态下提供的恐龙跑酷游戏。游戏采用控制台界面,通过字符图形呈现游戏场景。玩家控制一个由"@"符号表示的恐龙角色,通过按下回车键使其跳跃,躲避前方障碍物("#"和"&"符号)。

游戏的主要特点包括:

  • 简单的字符图形界面

  • 动态滚动的游戏场景

  • 基于物理的跳跃机制

  • 碰撞检测系统

  • 实时按键响应

主游戏逻辑

主函数main()包含游戏的全部逻辑:

  1. 初始化游戏地图数组a[3][40]

  2. 进入主游戏循环

  3. 处理用户输入(回车键跳跃)

  4. 更新恐龙位置

  5. 绘制游戏场景

  6. 检测碰撞

  7. 滚动地图

游戏机制详解

1. 地图系统

游戏使用一个3行40列的字符数组存储地图:

cpp

char a[3][40];

地图初始化后,通过不断将每行字符向左移动实现滚动效果:

cpp

for(int i=1; i<=3; i++) {for(int j=1; j<=39; j++) {a[i][j]=a[i][j+1];}
}

2. 跳跃物理

恐龙跳跃采用简单的物理模拟:

  • 按下回车键时,k值减小使恐龙上升

  • 释放按键后,k值逐渐增大使恐龙下落

  • k值代表恐龙所在的行号(1=顶行,3=底行)

跳跃控制代码:

if (KEY_DOWN(13)) { // Enter键if (flag == 0) {k=1;time=10;}flag = 1;
}
if (KEY_UP(13)) {flag = 0;
}

3. 碰撞检测

游戏通过检查恐龙位置与地图字符是否重叠来检测碰撞:

if(i==k&&j==3){p();if(a[i][j]!='.')s=1; // 碰到非'.'字符则标记碰撞
}

------------------------------------------------------------------------------------------------------------------

注意事项:

1.开局要复制代码底下的地图才能进入游戏

2.跳跃键:Enter

地图:

........................................
...........#...........#.............#..
...........&...........&.............&..

也可以自己输入3*40的地图 ,注意!空白是"."

------------------------------------------------------------------------------------------------------------------

//*
#include<iostream>
#include<windows.h>
#define KEY_DOWN(vKey) ((GetAsyncKeyState(vKey) & 0x8000) ? 1:0)
#define KEY_UP(vKey) ((GetAsyncKeyState(vKey) & 0x8000) ? 0:1)
#include<bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
void p() {cout<<"@";
}
char a[3][40];
int main() {int i=0,l,time=0;double k=3;int flag = 0;for(int i=1; i<=3; i++) {for(int j=1; j<=40; j++) {cin>>a[i][j];}}system("cls");while (1) {i++;cout<<"                                                                    i="<<i<<"  k="<<k<<endl;;if (KEY_DOWN(13)) {//Enter在Key Code中为13if (flag == 0) {k=1;time=10;}flag = 1;}if (KEY_UP(13)) {//Enter在Key Code中为13flag = 0;}int s=0;for(int i=1; i<=3; i++) {for(int j=1; j<=40; j++) {if(i==k&&j==3){p();if(a[i][j]!='.')s=1;}else cout<<a[i][j];}cout<<endl;}if(k<3)k+=0.2;if(s==1){break;}int d=a[1][1],f=a[2][1],g=a[3][1];for(int i=1; i<=3; i++) {for(int j=1; j<=39; j++) {a[i][j]=a[i][j+1];}}a[1][40]=d;a[2][40]=f;a[3][40]=g;time--;if(time>5)k=1;else if(time>1)k=2;else k=3;system("cls");}system("cls");cout<<"dinosaur is die"<<endl;return 0;
}
/*
地图(开始自己复制)
........................................
...........#...........#.............#..
...........&...........&.............&..
//*/

这段代码展示了一个简单但完整的控制台游戏实现,涵盖了游戏开发的基本要素。虽然存在一些问题和局限性,但它很好地演示了如何使用C++实现交互式游戏的基本框架。对于初学者来说,这是一个很好的学习范例,可以在此基础上进行扩展和改进,学习更复杂的游戏开发技术。

http://www.dtcms.com/a/266365.html

相关文章:

  • Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南
  • MySQL安装报错解决
  • 解锁阿里云Hologres:开启实时数据分析新时代
  • [论文阅读] 人工智能 + 软件工程 | 需求获取访谈中LLM生成跟进问题研究:来龙去脉与创新突破
  • ODS 系统是什么?企业为什么需要搭建 ODS?
  • .net对象映射框架
  • Response对象
  • Gartner《数据与分析治理的参考架构概述》学习心得
  • electron 打包太大 试试 tauri , tauri 安装打包demo
  • 短剧系统开发定制全流程解析:从需求分析到上线的专业指南
  • 屏幕分辨率修改工具 SwitchResX(Mac电脑)
  • 2025.7.4总结
  • Compose LazyVerticalStaggeredGrid卡顿
  • Excel 如何处理更复杂的嵌套逻辑判断?
  • 【嵌入式电机控制#9】编码器滤波算法
  • 敏捷开发在国际化团队管理中的落地
  • 如何选择合适的工业相机快门种类
  • SpringCloud系列 - OpenFeign 远程调用(三)
  • SpringAIAlibaba正式版发布!
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分/紫光同创 IP core 的使用及添加
  • 从0开始学习R语言--Day38--辛普森多样性指数
  • 相机:Camera原理讲解(使用OpenGL+QT开发三维CAD)
  • Gemini CLI安装及使用
  • [代码学习] c++ 通过H矩阵快速生成图像对应的mask
  • trae设置插件市场url
  • 力扣 hot100 Day34
  • Flink Oracle CDC 环境配置与验证
  • Flink OceanBase CDC 环境配置与验证
  • PHP接单涨薪系列(九)之计算机视觉实战:PHP+Stable Diffusion接单指南(2025高溢价秘籍)
  • 技术与情感交织的一生 (九)