c++游戏_寻宝猎人_开源

游戏目标

敌人 和**竞争者(寻宝者)**的干扰下,率先找到宝藏。

游戏要素

  • 玩家(P) :由(xx+5, yy+15)表示,使用WASD键移动

  • 宝藏(H) :随机生成的(px, py)坐标,玩家触碰即获胜

  • 敌人(@红色) :初始位置(x, y),会追踪玩家,触碰后HP-1

  • 寻宝者(@黄色) :初始位置(xxx, yyy),会与玩家竞争寻找宝藏

移动机制

  1. 玩家移动 :通过KEY_DOWN宏检测按键(S/D/A/W对应下/右/左/上),移动前检查是否为墙壁'#'

  2. 敌人AI:每4帧(l%4==0)且游戏运行超过300帧后,向玩家位置移动

  3. 寻宝者AI:同样每4帧,在200帧后开始向宝藏位置移动

操作方式

  • W键:向上移动

  • S键:向下移动

  • A键:向左移动

  • D键:向右移动

游戏角色说明

符号 颜色 身份 说明
P 青色 你(玩家) 通过WASD控制移动
H 绿色 宝藏 触碰即获胜
@ 红色 敌人 会追踪你,触碰扣除1点HP
@ 黄色 寻宝者 竞争对手,会先于你寻找宝藏

游戏规则

  1. 地图大小:1000×1000的网格世界

  2. 障碍物:地图随机生成"#"符号作为墙壁,无法穿过

  3. 生命值:初始HP=100,每次触碰红色敌人减少1点

  4. 胜负条件

    • 胜利:你的"P"移动到绿色"H"的位置

    • 失败1:黄色寻宝者先找到宝藏

    • 失败2:HP降至0或以下

游戏界面

屏幕会显示:

  • 11行×31列的局部地图视野

  • 实时坐标信息(你的位置、敌人位置、宝藏位置)

  • 当前生命值

游玩流程

  1. 启动游戏,阅读介绍和规则

  2. 按任意键开始,地图随机生成

  3. 使用WASD移动,避开红色敌人,赶在黄色寻宝者之前找到宝藏

  4. 触碰绿色"H"即可获胜

小提示:敌人和寻宝者都会自动移动,需要规划路线快速行动!

cpp 复制代码
#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;
char a[1005][1005];
int px,py,xx=500,yy=500,x=502,y=503,HP=100,xxx=510,yyy=510;

void COLOR_PRINT(const char* s, int color) {
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | color);
	printf("%s", s);
	SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | 7); // 恢复默认颜色
}

int main() {
	cout<<"欢迎来到寻宝世界"<<endl;
	cout<<endl<<endl<<endl<<endl<<endl;
	system("pause") ;
	system("cls");
	cout<<"规则:"<<endl;
	cout<<"1. ";
	COLOR_PRINT("@", 6);
	cout<<"  这是寻宝者,你需要在它之前找到宝藏。"<<endl;
	cout<<"2. ";
	COLOR_PRINT("H", 2);
	cout<<"  这是宝藏,你需要在1000*1000的地图里找到它"<<endl;
	cout<<"3. ";
	COLOR_PRINT("@", 4);
	cout<<"  这是敌人,它会追杀你,你有100HP,碰到它就会扣血"<<endl;
	cout<<"4.   地图下面有各个图标的坐标"<<endl;
	cout<<"5.   地控制方向用w,s,a,d四个键"<<endl;
	
	cout<<endl<<endl;
	system("pause") ;
	system("cls");
	srand((unsigned)time(NULL));
	for(int i=1; i<=1000; i++) {
		for(int j=1; j<=1000; j++) {
			int o=rand()%10;
			if(o==1)a[i][j]='#';
			else a[i][j]=' ';
		}
	}
	px=rand()%1000;
	py=rand()%1000;
	a[px][py]=' ';
	int l=0;
	while(1) {
		l++;
		for(int i=xx; i<=xx+10; i++) {
			for(int j=yy; j<=yy+30; j++) {
				if(i==xx+5&&j==yy+15) {
					COLOR_PRINT("P", 3);
				} else if(i==x&&j==y) {
					COLOR_PRINT("@", 4);
				} else if(i==px&&j==py) {
					COLOR_PRINT("H", 2);
				} else if(i==xxx&&j==yyy) {
					COLOR_PRINT("@", 6);
				} else {
					cout<<a[i][j];
				}
			}
			cout<<endl;
		}
		cout<<"坐标 x="<<xx+5<<" y="<<yy+15<<"     敌人坐标  x="<<x<<"   y="<<y<<"    目标位置  x="<<px<<"  y="<<py<<endl;
		cout<<"HP="<<HP<<"    寻宝人位置  x="<<xxx<<"  y="<<yyy<<endl;
		if(KEY_DOWN(83)&&a[xx+6][yy+15]!='#') {
			xx++;
		} else if(KEY_DOWN(68)&&a[xx+5][yy+16]!='#') {
			yy++;
		} else if(KEY_DOWN(65)&&a[xx+5][yy+14]!='#') {
			yy--;
		} else if(KEY_DOWN(87)&&a[xx+4][yy+15]!='#') {
			xx--;
		}
		if(l%4==0&&l>300) {
			if(xx+5>x) {
				x++;
			} else if(xx+5<x) {
				x--;
			}
			if(yy+15<y) {
				y--;
			} else if(yy+15>y) {
				y++;
			}
		}
		if(l%4==0&&l>200) {
			if(px>xxx) {
				xxx++;
			} else if(px<xxx) {
				xxx--;
			}
			if(py<yyy) {
				yyy--;
			} else if(py>yyy) {
				yyy++;
			}
		}
		if(xx+5==px&&yy+15==py) {
			break;
		}
		if(xx+5==x&&yy+15==y) {
			HP--;

		}
		if(xxx==px&&yyy==py) {
			cout<<"you lost!";
		    system("pause");
			system("cls");
			return 0;
		}
		if(HP<=0) {
			cout<<"you die...";
			system("pause") ;
			system("cls");
			return 0;
		}
		system("cls");
	}
	cout<<endl;
	cout<<"you win!"<<endl;
	system("pause") ;
	system("cls");
	return 0;
}
相关推荐
xnian_1 小时前
高并发下锁管理器,单机与分布式版
java·开发语言
不染尘.1 小时前
背包问题BP
开发语言·c++·算法
程序员buddha1 小时前
Java面试八股文基础篇
java·开发语言·面试
2401_874732531 小时前
基于C++的爬虫框架
开发语言·c++·算法
3GPP仿真实验室1 小时前
【MATLAB源码】THz ISAC:太赫兹通感一体化链路级仿真平台
开发语言·matlab
lly2024061 小时前
HTML5 测验
开发语言
吴声子夜歌1 小时前
JavaScript——字符串和正则表达式
开发语言·javascript·正则表达式
林恒smileZAZ1 小时前
JavaScript this绑定规则:告别踩坑指南!
开发语言·javascript·ecmascript
lcj25111 小时前
蓝桥杯C++:数据结构
数据结构·c++·算法
2401_873204651 小时前
C++代码重构实战
开发语言·c++·算法