c++文字游戏_闯关打怪2.0(开源)

本次更新内容:

1.增强对手性能

2.可暂停(按N)

3.修复些许bug

4.增加boos关(第10、20、30...关)

1. 游戏概述

本游戏是一个基于Windows控制台的回合制战斗游戏,采用俯视视角的2D平面设计。玩家控制角色"p"在13×25大小的封闭场景中与敌人"@"战斗,通过WASD移动,空格键发射炮弹,Enter键释放震爆弹技能。

游戏采用关卡递增设计,每关BOSS血量会提升10%,具有简单的成长系统。主要游戏元素包括:

玩家角色(p)

敌人(@)

炮弹(*)

场景边界(=)

空白区域(空格)

重点

操作说明运行代码时会显示

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;
int n,m,f=1,k=1;
char wutai[13][25] = {
	{'=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','='},
	{'=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','=','='}
};
int x=2,y=2,l=0,boos=100,cd=0;;
int ff,xx,yy,g=0,xxx=10,yyy=20,hp1=100,hp2=100;
int q=0;
void print() {
	//*
	cout<<"操作说明:"<<endl;
	cout<<"    1.上:w  下:s 左:a 右:d"<<endl;
	cout<<"    2.释放技能(震爆弹:震晕对手几秒):Entre"<<endl;
	cout<<"    3.发射炮弹:空格  朝所在方向发射"<<endl;
	cout<<"    4.当对手血量大于150是他速度会增加150%"<<endl;
	cout<<"    4.暂停:N"<<endl;
	
	system("pause") ;
	system("cls");
	//*/
}
int main() {

	for(int i=0; i<=100; i++) {
		cout<<endl<<endl;

		cout<<"加载中";
		for(int j=i%4; j>=0; j--) {
			cout<<".";
		}
		cout<<endl;
		cout<<endl<<endl<<endl<<endl;
		for(int j=0; j<=i; j++) {
			cout<<"▋";
		}
		cout<<endl;
		cout<<"    "<<i<<"%"<<endl;
		system("cls");
	}
	system("pause") ;
	system("cls");
	print();

	while(1) {
		if(k%10==0){
			cout<<"第"<<k<<"关  《《本关为boos关》》"<<endl;
		}else cout<<"第"<<k<<"关"<<endl;
		k++;
		hp2=boos;
		boos=boos+boos/10;
		if(k%10==0){
			hp2*=3;
		} 
		hp1=100;
		Sleep(500);
		x=2;
		y=2;
		yyy=20;
		xxx=10;
		while(1) {
			l++;
			if (KEY_DOWN(87)&&x-1>=1) {//w
				x-=1;
				f=1;
			}
			if (KEY_DOWN(65)&&y-1>=1) {//a
				y-=1;
				f=3;
			}
			if (KEY_DOWN(83)&&x+1<11) {//s
				x+=1;
				f=4;
			}
			if (KEY_DOWN(68)&&y+1<22) {//d
				f=2;
				y+=1;
			}
			if (KEY_DOWN(32)&&g!=1&&k%10!=0) {//空格
				g=1;
				ff=f;
				xx=x;
				yy=y;
			}

			if (KEY_DOWN(13)&&cd==0) {//空格
				q=50;
				cd=500;
				for(int i=0; i<13; i++) {
					for(int j=0; j<25; j++) {
						cout<<"█";
					}
					cout<<endl;
				}
				Sleep(500);
			}
			cout<<"x="<<x<<"  y="<<y<<"  f="<<f<<"    你的HP="<<hp1<<"    对手血量:"<<hp2<<"   技能CD:"<<cd<<endl;
			for(int i=0; i<13; i++) {
				for(int j=0; j<25; j++) {
					if(i==x && j==y&&i==xxx&&j==yyy)cout<<"X";
					else if(i==x && j==y) {
						cout<<"p";
					} else if(i==xx&&j==yy &&g==1) {
						cout<<"*";
					} else if(i==xxx&&j==yyy ) {
						cout<<"@";
					} else cout<<wutai[i][j];
				}
				cout<<endl;
			}
			if(g==1) {
				if(ff==1&&xx-1>=1) {
					xx-=1;
				} else if(ff==2&&yy+1<22) {
					yy+=1;
				} else if(ff==3&&yy-1>=1) {
					yy-=1;
				} else if(ff==4&&xx+1<11) {
					xx+=1;
				} else {
					g=0;
				}
			}
			if(q==0) {
				if(boos<150) {

					if(x<xxx&&l%3==0) {
						xxx-=1;
					} else if(y<yyy&&l%3==0) {
						yyy-=1;
					} else if(x>xxx&&l%3==0) {
						xxx+=1;
					} else if(y>yyy&&l%3==0) {
						yyy+=1;
					}
				} else if(boos<200){
					if(x<xxx&&l%2==0) {
						xxx-=1;
					} else if(y<yyy&&l%2==0) {
						yyy-=1;
					} else if(x>xxx&&l%2==0) {
						xxx+=1;
					} else if(y>yyy&&l%2==0) {
						yyy+=1;
					}
				}else{
					if(x<xxx) {
						xxx-=1;
					} else if(y<yyy) {
						yyy-=1;
					} else if(x>xxx) {
						xxx+=1;
					} else if(y>yyy) {
						yyy+=1;
					}
				}

			}
			if(q>0) {
				q--;
			}
			if(cd>0) {
				cd--;
			}
			if(xx==xxx &&yy==yyy) {
				hp2-=5;
				g=0;
			}
			if(xxx==x&&y==yyy)hp1-=0.5;
			if(xxx==x&&y==yyy&&k%10==0)hp1-=3;
			if(hp1<=0) {
				system("cls");
				cout<<"you die"<<endl;
				Sleep(500);
				system("pause");
				system("cls");
				break;
			} else if(hp2<=0) {
				system("cls");
				cout<<"you win"<<endl;
				Sleep(500);
				system("pause");
				system("cls");
				break;
			}
			system("cls");
			if (KEY_DOWN(78)) {//空格
				system("cls");
				cout<<"暂停"<<endl;
				system("pause");
				system("cls");
			}

		}
	}
	return 0;
}
/*
=========================
=                       =
=                       =
=                       =
=                       =
=                       =
=                       =
=                       =
=                       =
=                       =
=                       =
=                       =
=========================


*/
相关推荐
iCxhust2 小时前
c# U盘映像生成工具
开发语言·单片机·c#
yangzhi_emo3 小时前
ES6笔记2
开发语言·前端·javascript
emplace_back4 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
jz_ddk4 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
萧曵 丶4 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
夜月yeyue4 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
收破烂的小熊猫~5 小时前
《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
java·开发语言·设计模式
nananaij5 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm