c++游戏_小恐龙2.0(开源)
本文介绍了一个基于C++的控制台恐龙跳跃游戏,模仿Chrome浏览器断网时的恐龙跑酷游戏。游戏采用3行60列的字符数组表示地图,"@"代表恐龙,"#"和"&"为障碍物。玩家按回车键控制恐龙跳跃,通过物理模拟实现上升下落(k值变化)。游戏包含地图滚动、碰撞检测等核心机制,当恐龙碰到障碍物时游戏结束。代码提供了初始地图模板,玩家也可自
本次更新内容:
1.不可连续跳跃
2.地图增大
3.修复些许bug
一、游戏概述
这段C++代码实现了一个简易的恐龙跳跃游戏,灵感来源于Chrome浏览器在断网状态下提供的恐龙跑酷游戏。游戏采用控制台界面,通过字符图形呈现游戏场景。玩家控制一个由"@"符号表示的恐龙角色,通过按下回车键使其跳跃,躲避前方障碍物("#"和"&"符号)。
游戏的主要特点包括:
简单的字符图形界面
动态滚动的游戏场景
基于物理的跳跃机制
碰撞检测系统
实时按键响应
主游戏逻辑
主函数main()包含游戏的全部逻辑:
初始化游戏地图数组a[3][40]
进入主游戏循环
处理用户输入(回车键跳跃)
更新恐龙位置
绘制游戏场景
检测碰撞
滚动地图
游戏机制详解
1. 地图系统
游戏使用一个3行40列的字符数组存储地图:char a[3][40];
地图初始化后,通过不断将每行字符向左移动实现滚动效果:
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*60的地图 ,注意!空白是"."
------------------------------------------------------------------------------------------------------------------
//*
#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][60];
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<=60; j++) {
cin>>a[i][j];
}
}
system("cls");
while (1) {
i++;
cout<<" i="<<i<<" k="<<k<<endl;;
if (KEY_DOWN(13)&&time<=1) {//Enter在Key Code中为13
if (flag == 0) {
k=1;
time=10;
}
flag = 1;
}
if (KEY_UP(13)) {//Enter在Key Code中为13
flag = 0;
}
int s=0;
for(int i=1; i<=3; i++) {
for(int j=1; j<=60; 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<=59; j++) {
a[i][j]=a[i][j+1];
}
}
a[1][60]=d;
a[2][60]=f;
a[3][60]=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;
}
/*
地图(开始自己复制)
............................................................
...........#...........#.............#.....................#
...........&...........&.............&.....................&
//*/

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)