Untitled3

作者:    qwerty 管理员

标签: C++

创建日期:2024年11月6日 18:05

浏览量:12

#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=20,Pd=3,Ph=2000;
bool Plive=true,Pill=false,Pstrong=false,Ptreat=false;
int Pilltime=0,Pstrongtime=0,Ptreattime=0;
int Ex=20,Ey=20,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(Ex==j&&Ey==i) cout<<"卍";
            else if(vis[i][j]) cout<<"■";
            else cout<<"□";
        }
        puts("");
    }
    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();
    color(0*16+4);
    pu("你的血量:");cout<<Ph<<"\n";
    color(0*16+1);
    pu("敌方血量:");cout<<Eh<<"\n";
    color(0*16+9);
    pu("当前坐标: x=");cout<<Px;pu(" y=");cout<<Py<<"\n";
    color(0*16+14);
    pu("敌方坐标: x=");cout<<Ex;pu(" y=");cout<<Ey<<"\n";
    color(0*16+11);
    pu("当前方向:");
    switch(Pd){
        case 1:pu("北");break;
        case 2:pu("西");break;
        case 3:pu("南");break;
        case 4:pu("东");break;
    }
    puts("");
    color(0*16+3);
    pu("敌方方向:");
    switch(Ed){
        case 1:pu("北");break;
        case 2:pu("西");break;
        case 3:pu("南");break;
        case 4:pu("东");break;
    }
    puts("");
    initcolor();
    outputmap();
    return;
}
inline void moving(int a){
    puts("");
    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){
                if(Ey<=Py){
                    pu("击中了!造成500点伤害!!!\n");
                    Eh-=500;
                    Ejudgedead();
                }
            }else if(Pd==2&&Ey==Py){
                if(Ex<=Px){
                    pu("击中了!造成500点伤害!!!\n");
                    Eh-=500;
                    Ejudgedead();
                }
            }else if(Pd==3&&Ex==Px){
                if(Ey>=Py){
                    pu("击中了!造成500点伤害!!!\n");
                    Eh-=500;
                    Ejudgedead();
                }
            }else if(Pd==4&&Ey==Py){
                if(Ex>=Px){
                    pu("击中了!造成500点伤害!!!\n");
                    Eh-=500;
                    Ejudgedead();
                }
            }
            break;
    }
}
int main(){
    initcolor();
//    outputgameinfor();
    while(Plive){
        refresh();
        pu(":");
        int x=inputaction();
        if(x==6) dead();
        if(!x){
            puts("无效输入!!!");
            continue;
        }
        moving(x);
        if(x==2||x==4){
            pu(":");
            x=0;
            do{
                x=inputaction();
                if(!x){
                    puts("无效输入!!!");
                    continue;
                }
            }while(!x);
            moving(x);
        }
    }
    return 0;
}

评论区

竟然没有人发布评论!