作者: qwerty 管理员
标签: C++
创建日期:2024年10月31日 18:13
浏览量:8
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
#ifndef color
#define color(a) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a)
//0黑 1蓝 2绿 3青 4红 5紫 6黄 7白 8灰 9亮蓝 10亮绿 11亮青 12亮红 13亮紫 14亮黄 15亮白
#endif
using namespace std;
int Px=1,Py=1,Pd=1,Ph=2000;
bool Plive=true,Pill=false,Pstrong=false,Ptreat=false;
int Pilltime=0,Pstrongtime=0,Ptreattime=0;
int Ex=1,Ey=1,Ed=1,Eh=2000;
bool Elive=true,Eill=false,Estrong=false,Etreat=false;
int Eilltime=0,Estrongtime=0,Etreattime=0;
bool vis[21][21];
inline void initcolor(){
color(0*16+15);
return;
}
inline void pu(string s){
for(int i=0;i<s.size();++i){
char x=s[i];
if(x=='\n') Sleep(1000);
else if(x=='\t') Sleep(100);
else if(x==' ') Sleep(50);
else if(x=='?'||x=='!'||x==';') Sleep(114);
else if(x=='/'||x=='*'||x=='-'||x=='+'||x=='.') Sleep(20);
else Sleep(15);
putchar(x);
}
return;
}
inline void outputplot(){
pu("剧情概述:\n");
pu("A.D.4514年\n");
pu("FaXiSi主义NaCui党重新组织起来\n");
pu("进行了一次大规模的起义\n");
pu("想要建立一个新的国度\n");
pu("但\n");
pu("这引起了一些人的注意\n");
pu("于是乎\n");
pu("各个大国联合起来剿杀FaXiSi主义NaCui党成员\n");
pu("经历了无数场战争\n");
pu("只剩下一位FaXiSi主义NaCui党成员\n");
pu("那就是你\n");
pu("希望身为FaXiSi主义NaCui党成员的你\n");
pu("能够恢复我们曾经的辉煌!\n");
system("pause");
return;
}
inline void outputgameinfor(){
pu("一个蒟蒻创作的游戏\n");
pu("按WS移动,AD转向,空格开枪(按K相当于\\kill)\n");
system("pause");
system("cls");
outputplot();
return;
}
inline void outputmap(){
for(int i=1;i<=20;i++){
for(int j=1;j<=20;j++){
if(Px==j&&Py==i) cout<<"卐";
else if(vis[i][j]) cout<<"■";
else cout<<"□";
}
putchar('\n');
}
return;
}
inline int inputaction(){
char x=_getch();
if(x=='w') return 1;
if(x=='a') return 2;
if(x=='s') return 3;
if(x=='d') return 4;
if(x==' ') return 5;
if(x=='k') return 6;
return 0;
}
inline void dead(){
color(4*16+13);
system("cls");
pu("\t\t\t\tYou died!!!\n");
exit(0);
return;
}
inline void win(){
color(7*16+14);
system("cls");
pu("\t\t\t\tYou won!!!\n");
exit(0);
return;
}
inline void Pjudgedead(){
if(Ph<=0) dead();
else if(Ph>2000) Ph=2000;
return;
}
inline void Ejudgedead(){
if(Eh<=0) win();
else if(Eh>2000) Ph=2000;
return;
}
inline void refresh(){
system("cls");
if(Pstrong){
color(0*16+14);
Pill=false;
Pilltime=0;
Pstrongtime--;
if(Pstrongtime==0) Pstrong=false;
Ph+=5;
if(Ptreat) Ph+=13;
}else if(Pill){
color(0*16+10);
Pilltime--;
if(Pilltime==0) Pill=false;
Ph-=15;
}else if(Ptreat){
color(0*16+12);
Ptreattime--;
if(Ptreattime==0) Ptreat=false;
Ph+=13;
}
else color(0*16+4);
Pjudgedead();
pu("你的血量:");cout<<Ph<<"\n";
color(0*16+9);
pu("当前坐标: x=");cout<<Px;pu(" y=");cout<<Py<<"\n";
color(0*16+11);
pu("当前方向:");
switch(Pd){
case 1:pu("北\n");break;
case 2:pu("西\n");break;
case 3:pu("南\n");break;
case 4:pu("东\n");break;
}
initcolor();
outputmap();
return;
}
inline void moving(int a){
pu("\n");
switch(a){
case 1:
if(Pd==1&&Py>1) Py--;
else if(Pd==2&&Px>1) Px--;
else if(Pd==3&&Py<20) Py++;
else if(Pd==4&&Px<20) Px++;
break;
case 2:Pd=Pd%4+1;break;
case 3:
if(Pd==3&&Py>1) Py--;
else if(Pd==4&&Px>1) Px--;
else if(Pd==1&&Py<20) Py++;
else if(Pd==2&&Px<20) Px++;
break;
case 4:Pd=Pd%4+1;Pd=Pd%4+1;Pd=Pd%4+1;break;
case 5:
if(Pd==1&&Ex==Px){
for(int i=1;i<Py;i++){
if(Ey==i){
pu("击中了!造成50点伤害!!!");
Eh-=50;
Ejudgedead();
}
}
}else if(Pd){
}
break;
}
}
int main(){
initcolor();
outputgameinfor();
while(Plive){
refresh();
pu(":");
int x=inputaction();
if(x==6) dead();
if(!x){
pu("无效输入!!!\n");
continue;
}
moving(x);
if(x==2||x==4){
pu(":");
x=0;
do{
x=inputaction();
if(!x){
pu("无效输入!!!\n");
continue;
}
}while(!x);
moving(x);
}
}
return 0;
}