枪战222.0

//不忘初心,专注枪战。
//大致剧情线:爆破->战役(保卫战->歼灭战->生化空间站救援->阻击战)->枪战  (双人模式架空) 
#include<algorithm>
#include<fstream>
#include<iostream>
#include<stdio.h>
#include<cstdio>
#include<iostream>
#include<windows.h>
#include<conio.h>
#include <time.h>
#include <stdlib.h>
#include<bits/stdc++.h>
#include<cstdio>
#include<algorithm>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
HWND hMainWnd;  //主窗口句柄
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,要背下来
using namespace std;
int ms;
int yb;
int sh=0;
int dhurt=5;
int dz=0;
int bptd=1;
int boom_time;
int map_num;
int hurt;
int js;
int x,y;
int dx,dy;
int bx,by;
int bww=100;
int qfw=100;
char hero;
int dsr;
int game_map[101][101];
int x_what(int x) {//取随机数
    srand((unsigned)time(NULL));
    return( rand() % x);
}
int map_out(int x) {
    if(x==0) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);
        cout<<"*";
    } else if(x==1) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_RED);
        cout<<"*";
    } else if(x==2) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY );
        cout<<"*";
    } else if(x==3) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
        cout<<"*";
    } else if(x==4) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
        cout<<"*";
    } else if(x==5) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE|FOREGROUND_GREEN);
        cout<<"*";
    } else if(x==6) {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE|FOREGROUND_GREEN);
        cout<<"*";
    }
}
int open() {
    hero='+';
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
    cout<<"-------------------"<<endl;
    cout<<"|     黑客小C     |"<<endl;
    cout<<"-------------------"<<endl;
    Sleep(2000);
    system("cls");
    cout<<"-------------------"<<endl;
    cout<<"| 1亿码农枪战梦想 |"<<endl;
    cout<<"-------------------"<<endl;
    Sleep(2000);
    system("cls");
    cout<<"------------------"<<endl;
    cout<<"|     爆破战争    |"<<endl;
    cout<<"-------------------"<<endl;
    while(!kbhit()) {
 
    }
    system("cls");
}
int out1() {
    system("cls");
    cout<<"本局角色:土匪"<<endl;
    cout<<"警:"<<bww<<"匪:"<<qfw;
    if(bptd==0) {
        cout<<"距离爆炸的时间:"<<boom_time;
    }
    cout<<endl;
    for(int i=0; i<11; i++) {
        for(int j=0; j<11; j++) {
            if(i==0||i==10) {
                map_out(map_num);
            } else if(j==0||j==10) {
                map_out(map_num);
            } else if(i==x&&j==y) {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);
                cout<<hero;
            } else if(i==dx&&j==dy) {
                if(sh==0) {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
                    cout<<"+";
                } else {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
                    cout<<"#";
                }
            } else if(i==bx&&j==by) {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
                cout<<"O";
            } else if(game_map[i][j]==1) {
                map_out(map_num);
            } else {
                cout<<" ";
            }
        }
        cout<<endl;
    }
}
int out2() {
    system("cls");
    cout<<"本局角色:警察"<<endl;
    cout<<"警:"<<bww<<"匪:"<<qfw;
    if(bptd==0) {
        cout<<"距离爆炸的时间:"<<boom_time;
    }
    cout<<endl;
    for(int i=0; i<11; i++) {
        for(int j=0; j<11; j++) {
            if(i==0||i==10) {
                map_out(map_num);
            } else if(j==0||j==10) {
                map_out(map_num);
            } else if(i==dx&&j==dy) {
                if(sh==0) {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);
                    cout<<"+";
                } else {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
                    cout<<"#";
                }
            } else if(i==x&&j==y) {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
                cout<<hero;
            } else if(i==bx&&j==by) {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
                cout<<"O";
            } else if(game_map[i][j]==1) {
                map_out(map_num);
            } else {
                cout<<" ";
            }
        }
        cout<<endl;
    }
}
int out3() {
    system("cls");
    cout<<"警:"<<bww<<"匪:"<<qfw;
    if(bptd==0) {
        cout<<"距离爆炸的时间:"<<boom_time;
    }
    cout<<endl;
    for(int i=0; i<11; i++) {
        for(int j=0; j<11; j++) {
            if(i==0||i==10) {
                map_out(map_num);
            } else if(j==0||j==10) {
                map_out(map_num);
            } else if(i==dx&&j==dy) {
                if(sh==0) {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);
                    cout<<"+";
                } else {
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
                    cout<<"#";
                }
            } else if(i==x&&j==y) {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);
                cout<<hero;
            } else if(i==bx&&j==by) {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
                cout<<"O";
            } else if(game_map[i][j]==1) {
                map_out(map_num);
            } else {
                cout<<" ";
            }
        }
        cout<<endl;
    }
}
//隔着建筑物可打建筑物上方射建筑物后的人
//例子:
//   *-----*
//  |  ||| |
int play1() {
    char c;
    if(kbhit()) {
        c=getch();
        if(c=='w'&&x>1&&game_map[x-1][y]==0) {
            x--;
        }
        if(c=='a'&&y>1&&game_map[x][y-1]==0) {
            y--;
        }
        if(c=='s'&&x<9&&game_map[x+1][y]==0) {
            x++;
        }
        if(c=='d'&&y<9&&game_map[x][y+1]==0) {
            y++;
        }
        if (c==' ') {
            if(x==dx||y==dy) {
                bww-=hurt;
            }
        }
        if(c=='q'&&x==dx&&y==dy&&(hero=='A'||hero=='*')) {
            bww-=200;
        }
    }
}
int play2() {
    char c;
    if(kbhit()) {
        c=getch();
        if(c=='w'&&x>1&&game_map[x-1][y]==0) {
            x--;
        }
        if(c=='a'&&y>1&&game_map[x][y-1]==0) {
            y--;
        }
        if(c=='s'&&x<9&&game_map[x][y+1]==0) {
            x++;
        }
        if(c=='d'&&y<9&&game_map[x][y+1]==0) {
            y++;
        }
        if(c=='e') {
            if(x==bx&&y==by) {
                qfw=0;
            }
        }
        if (c==' ') {
            if(x==dx||y==dy) {
                qfw-=hurt;
            }
        }
        if(c=='q'&&x==dx&&y==dy&&(hero=='A'||hero=='*')) {
            qfw-=200;
        }
    }
}
int play3() {
    char c;
    if(kbhit()) {
        c=getch();
        if(c=='w'&&x>1&&game_map[x-1][y]==0) {
            x--;
        }
        if(c=='a'&&y>1&&game_map[x][y]-1==0) {
            y--;
        }
        if(c=='s'&&x<9&&game_map[x+1][y]==0) {
            x++;
        }
        if(c=='d'&&y<9&&game_map[x][y-1]==0) {
            y++;
        }
        if(c=='e') {
            if(x==bx&&y==by) {
                qfw=0;
            }
        }
        if (c==' ') {
            if(x==dx||y==dy) {
                qfw-=hurt;
            }
        }
        if(c=='i'&&dx>1&&game_map[dx-1][dy]==0) {
            dx--;
        }
        if(c=='j'&&dy>1&&game_map[dx][dy-1]==0) {
            dy--;
        }
        if(c=='k'&&dx<9&&game_map[dx+1][dy]==0) {
            dx++;
        }
        if(c=='l'&&dy<9&&game_map[dx][y+1]==0) {
            dy++;
        }
        if (c=='m') {
            if(sh==0&&x==dx||y==dy) {
                bww-=hurt;
            }
            if(sh==1&&x==dx&&y==dy)
                bww-=150;
        }
    }
}
int AI() {
    if(bww<=0||qfw<=0) {
        return 0;
    }
    if(boom_time%3!=0) {
        return 0;
    }
    if(x>dx&&dx<9&&game_map[dx+1][dy]==0) {
        dx++;
    } else if(y>dy&&dy<9&&game_map[dx][dy+1]==0) {
        dy++;
    }
    if(x<dx&&dx>1&&game_map[dx-1][dy]==0) {
        dx--;
    } else if(y<dy&&dy>1&&game_map[dx][dy-1]==0) {
        dy--;
    }
    if(dy==y||dx==x) {
        if(js==2) {
            bww-=dhurt;
            if(hero=='W') {
                bww+=(dhurt/5);
            }
        }
        if(js==1) {
            qfw-=dhurt;
            if(hero=='W') {
                qfw+=(dhurt/5);
            }
        }
    }
}
int AI2() {
    if(bww<=0||qfw<=0) {
        return 0;
    }
    if(boom_time%3!=0) {
        return 0;
    }
    if(x>dx&&dx<9&&game_map[dx+1][dy]==0) {
        dx++;
    } else if(y>dy&&dx!=x&&game_map[dx][dy+1]==0) {
        dy++;
    }
    if(x<dx&&dx>1&&game_map[dx-1][dy]==0) {
        dx--;
    } else if(y<dy&&dy>1&&game_map[dx][dy-1]==0) {
        dy--;
    }
    if(dy==y&&dx==x) {
        if(js==2) {
            bww-=100;
            if(hero=='W') {
                bww+=20;
            }
        }
    }
}
int qf() {
    while(true) {
        out1();
        play1();
        if(sh==0) {
            AI();
        } else {
            AI2();
        }
        boom_time--;
        if(bww<=0||boom_time<=0) {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
            cout<<"土匪胜利";
            Sleep(2000);
            system("cls");
            return 0;
        }
        if(qfw<=0) {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
            cout<<"警察胜利";
            Sleep(2000);
            system("cls");
            return 0;
        }
        Sleep(500);
    }
}
int bw() {
    while(true) {
        out2();
        play2();
        if(sh==0) {
            AI();
        } else {
            AI2();
        }
        boom_time--;
        if(bww<=0||boom_time<=0) {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
            cout<<"土匪胜利";
            Sleep(2000);
            system("cls");
            return 0;
        }
        if(qfw<=0) {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
            cout<<"警察胜利";
            Sleep(2000);
            system("cls");
            return 0;
        }
        Sleep(500);
    }
}
int srbp() {
    while(true) {
        out3();
        play3();
        boom_time--;
        if(bww<=0||boom_time<=0) {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
            cout<<"土匪胜利";
            Sleep(2000);
            system("cls");
            return 0;
        }
        if(qfw<=0) {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED| FOREGROUND_GREEN);
            cout<<"警察胜利";
            Sleep(2000);
            system("cls");
            return 0;
        }
        Sleep(500);
    }
}
int story_bwz() {
    system("cls");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
    system("cls");
    cout<<"?警官:一个财阀为了避免我们和军方歼灭生化幽灵,土匪让一个改造人进攻城市,警局已经沦陷,我是唯一幸存者。";
    Sleep(2000);
    system("cls");
    cout<<"?警官:你一定要消灭他!";
    Sleep(2000);
    system("cls");
    cout<<"?警官:小心点,他拿着枪";
    Sleep(2000);
    system("cls");
    cout<<"?警官:啊!";
    Sleep(2000);
    system("cls");
}
int story_fcns() {
    system("cls");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
    system("cls");
    cout<<"军方指挥官:全体复仇女神部队成员请注意,有新的任务。";
    Sleep(2000);
    system("cls");
    cout<<"军方指挥官:一群警察拿了一个财阀的钱和实验邀请函,进入了生化空间站参加高额奖金生化猎杀,遭遇了生化幽灵。";
    Sleep(2000);
    system("cls");
    cout<<"军方指挥官:进入生化空间站,击毙生化幽灵,营救他们";
    Sleep(2000);
    system("cls");
}
int story_qfz() {
    system("cls");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
    system("cls");
    cout<<"土匪zero:我们改造士兵恐袭计划失败了,你只能自己进攻了";
    Sleep(2000);
    system("cls");
    cout<<"土匪zero:城市里有一个拿狙击枪的警察,你要消灭他";
    Sleep(2000);
    system("cls");
    cout<<"土匪zero:开始行动!";
    Sleep(2000);
    system("cls");
}
int story_yb(){
    system("cls");
    cout<<"土匪zero:我们的生化幽灵被击败了,不能让敌人跑了";
    Sleep(2000);
    system("cls");

int js_h() {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
    char c;
    while(c!='z') {
        system("cls");
        cout<<"n换角色,z确定。"<<endl;
        cout<<hero<<endl;
        if(hero=='+') {
            cout<<"斯沃特(手)";
            hurt=5;
        } else if(hero=='I') {
            cout<<"灵狐者(狙)";
            hurt=100;
        } else  if(hero=='8') {
            cout<<"刀锋(步)";
            hurt=10;
        } else if(hero=='T') {
            cout<<"奥摩(手)";
            hurt=5;
        } else if(hero=='=') {
            cout<<"飞虎队(狙)";
            hurt=100;
        } else if(hero=='V') {
            cout<<"夜玫瑰(步)";
            hurt=10;
        } else if(hero=='W') {
            cout<<"机械N22(手)<AC护甲免疫20%伤害>";
            hurt=5;
        } else if(hero=='A') {
            cout<<"审判者(狙)<可踢腿>";
            hurt=100;
        } else if(hero=='*') {
            cout<<"零(步)<可踢腿>";
            hurt=10;
        }
 
        if(kbhit()) {
            c=getch();
            if(c=='n') {
                if(hero=='+') {
                    hero='I';
                } else if(hero=='I') {
                    hero='8';
                } else if(hero=='8') {
                    hero='T';
                } else if(hero=='T') {
                    hero='=';
                } else if(hero=='=') {
                    hero='V';
                } else if(hero=='V') {
                    hero='W';
                } else if(hero=='W') {
                    hero='A';
                } else if(hero=='A') {
                    hero='*';
                } else if(hero=='*') {
                    hero='+';
                }
            }
        }
        Sleep(500);
    }
    system("cls");
}
int map_what_bp() {
    system("cls");
    char cz;
    cout<<"x:沙漠灰 c:新年广场 v:黑色城镇 b:随机地图。";
    while(true) {
        while(!kbhit()) {
 
        }
        cz=getch();
        if(cz=='x') {
            map_num=1;
            bptd=0;
            dsr=1;
            return 0;
        }
        if(cz=='v') {
            map_num=2;
            bptd=0;
            dsr=1;
            return 0;
        }
        if(cz=='c') {
            map_num=4;
            bptd=0;
            dsr=1;
            return 0;
        }
        if(cz=='b') {
            map_num=x_what(4);
            map_num++;
            bptd=0;
            dsr=1;
            return 0;
        }
    }
}
int map_what_td() {
    system("cls");
    cout<<"x:运输船 c:冰雪宫殿  v:剧场  b:随机地图 ";
    char cz;
    while(!kbhit()) {
 
    }
    cz=getch();
    if(cz=='x') {
        map_num=0;
        bptd=1;
        dsr=1;
        bx=14514;
        by=14514;
        boom_time=10000;
        return 0;
    }
    if(cz=='c') {
        map_num=3;
        bptd=1;
        dsr=1;
        bx=14514;
        by=14514;
        boom_time=10000;
        return 0;
    }
    if(cz=='v') {
        map_num=2;
        bptd=1;
        dsr=1;
        bx=14514;
        by=14514;
        boom_time=10000;
        return 0;
    }
    if(cz=='b') {
        if(x_what(99)%3==0) {
            map_num=0;
            bptd=1;
            dsr=1;
            bx=14514;
            by=14514;
            boom_time=10000;
            return 0;
        } else if(x_what(99)%3==0) {
            map_num=3;
            bptd=1;
            bx=14514;
            by=14514;
            boom_time=10000;
            dsr=1;
            return 0;
        } else {
            map_num=2;
            bptd=1;
            dsr=1;
            bx=14514;
            by=14514;
            boom_time=10000;
            return 0;
        }
    }
}
int map_what_sh() {
    system("cls");
    sh=1;
    cout<<"x:13号地区 c:寂静镇 v:生化酒店 b:随机地图";
    char cz;
    while(!kbhit()) {
 
    }
    cz=getch();
    if(cz=='x') {
        map_num=1;
        bptd=1;
        dsr=1;
        bx=14514;
        by=14514;
        boom_time=10000;
        return 0;
    }
    if(cz=='c') {
        map_num=2;
        bptd=1;
        dsr=1;
        bx=14514;
        by=14514;
        boom_time=10000;
        return 0;
    }
    if(cz=='v') {
        map_num=5;
        bptd=1;
        bx=14514;
        by=14514;
        dsr=1;
        boom_time=10000;
        return 0;
    }
    if(cz=='b') {
        if(x_what(199)%3==0) {
            map_num=1;
            bptd=1;
            dsr=1;
            bx=14514;
            by=14514;
            boom_time=10000;
            return 0;
        } else if(x_what(199)%3==1) {
            map_num=2;
            bptd=1;
            bx=14514;
            by=14514;
            dsr=1;
            boom_time=10000;
            return 0;
        } else {
            map_num=5;
            bptd=1;
            bx=14514;
            by=14514;
            dsr=1;
            boom_time=10000;
            return 0;
        }
    }
}
int map_what_war() {
    system("cls");
    cout<<"x:保卫战 c:歼灭战 v:生化空间站救援 b:阻击战";
    char cz;
    while(true) {
        while(!kbhit()) {
 
        }
        cz=getch();
        if(cz=='x') {
            story_bwz();
            js=1;
            dsr=1;
            ms=1;
            bptd=1;
            map_num=2;
            bx=14514;
            by=14514;
            qfw=200;
            boom_time=100000;
            return 0;
        }
        if(cz=='c') {
            story_qfz();
            ms=0;
            dsr=1;
            js=2;
            bptd=1;
            bx=14514;
            by=14514;
            map_num=2;
            boom_time=100000;
            dhurt=25;
            return 0;
        }
        if(cz=='v') {
            story_fcns();
            map_num=6;
            bptd=1;
            sh=1;
            dsr=1;
            bx=14514;
            by=14514;
            boom_time=10000;
            return 0;
        }
        if(cz=='b'){
            story_yb();
            yb=1;
            map_num=6;
            bptd=1;
            sh=0;
            dsr=1;
            bx=14514;
            by=14514;
            boom_time=10000;
            return 0;
        }
    }
}
int map_what_sr() {
    system("cls");
    cout<<"x:双人爆破 c:双人枪战 v:双人生化";
    char cz;
    while(true) {
        while(!kbhit()) {
 
        }
        cz=getch();
        if(cz=='x') {
            js=1;
            dsr=2;
            ms=1;
            bptd=0;
            map_num=2;
            return 0;
        }
        if(cz=='c') {
            ms=0;
            dsr=2;
            js=2;
            bptd=1;
            bx=14514;
            by=14514;
            map_num=0;
            boom_time=100000;
            dhurt=25;
            return 0;
        }
        if(cz=='v') {
            map_num=1;
            bptd=1;
            dsr=2;
            sh=1;
            bx=14514;
            by=14514;
            boom_time=100000;
            return 0;
        }
    }
}
int what_map() {
    char cz;
    cz='A';
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
    cout<<"1:爆破模式 2:枪战模式  3:战役模式  4:双人模式 5:生化模式 ";
    while(true) {
        while(!kbhit()) {
 
        }
        cz=getch();
        if(cz=='1') {
            map_what_bp();
            return 0;
        }
        if(cz=='2') {
            map_what_td();
            return 0;
        }
        if(cz=='3') {
            map_what_war();
            return 0;
        }
        if(cz=='4') {
            map_what_sr();
            return 0;
        }
        if(cz=='5') {
            map_what_sh();
            return 0;
        }
    }
}
int map_wall() {
    for(int i=0; i<12; i++) {
        for(int j=0; j<12; j++) {
            game_map[i][j]=0;
        }
    }
    for(int i=0;i<12;i++){
        for(int j=0;j<12;j++){
            if(i==0||i==12||j==0||j==12){
                game_map[i][j]=1;
            }
        }
    }
    if(map_num==1||map_num==2) {
        x=1;
        y=5;
        dx=9;
        dy=5;
        if(bptd==0) {
            if(ms==0) {
                bx=5;
                by=1;
            } else {
                bx=5;
                by=9;
            }
        }
        for(int i=2; i<=8; i++) {
            game_map[i][3]=1;
            game_map[i][7]=1;
        }
    } else if(map_num==5) {
        x=1;
        y=5;
        dx=9;
        dy=5;
        if(bptd==0) {
            if(ms==0) {
                bx=5;
                by=5;
            } else {
                bx=5;
                by=5;
            }
        }
        for(int i=1; i<=9; i++) {
            game_map[i][1]=1;
            game_map[i][2]=1;
            game_map[i][3]=1;
        }
    } else if(map_num==6) {
        x=1;
        y=5;
        dx=9;
        dy=5;
        game_map[4][4]=1;
        game_map[4][6]=1;
        game_map[6][4]=1;
        game_map[6][6]=1;
        } else {
        x=1;
        y=1;
        dx=9;
        dy=9;
        game_map[2][2]=1;
        game_map[2][3]=1;
        game_map[3][2]=1;
        game_map[3][3]=1;
        game_map[8][8]=1;
        game_map[8][7]=1;
        game_map[7][7]=1;
        game_map[7][8]=1;
        if(bptd==0) {
            bx=5;
            by=5;
        }
    }
}
int main() {
    open();
    ms=x_what(2);
    while(true) {
        sh=0;
        yb=0;
        boom_time=20;
        qfw=100;
        bww=100;
        dhurt=5;
        bptd=0;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);
        what_map();
        map_wall();
        system("cls");
        if(dsr==1) {
            js_h();
            system("cls");
            for(int i=0; i<10; i++) {
                cout<<"加载中..."<<endl;
                cout<<"tips:wasd移动,空格攻击,e拆弹,q踢腿。警察(警方、军方):拆弹或击杀土匪(战役、生化仅限击杀)。土匪(土匪、佣兵及生化幽灵):击杀警察或炸弹爆炸(战役、生化仅限击杀)。";
                Sleep(1000);
                system("cls");
            }
            if(sh==1&&yb==0) {
                js=2;
                ms=1;
            }
            if(ms==0) {
                js=1;
                ms=1;
                qf();
            } else {
                ms=0;
                js=2;
                bw();
            }
        } else {
            system("cls");
            hero='+';
            hurt=5;
            for(int i=0; i<10; i++) {
                cout<<"加载中..."<<endl;
                cout<<"tips:1P警察:wasd移动,空格攻击,e拆弹,q踢腿  2P土匪:ijkl移动,m攻击,o踢腿。警察:拆弹或击杀土匪。土匪:击杀警察或炸弹爆炸。";
                Sleep(1000);
                system("cls");
            }
            srbp();
        }
    }
}

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用DDraw实现射击游戏说明文档 要点一:画图自动切割 IDirectDrawSurface7::BltFast()方法中没有自动切割功能,即当画图元素超出窗口以外时不会自动切割,DDraw选择自动忽略不画,造成一旦超出窗口,画图元素会突然消失。 解决这一问题的方法是手动切割,代码如下: //自动切割 RECT scRect; //存放当前窗口大小区域 ZeroMemory( &scRect, sizeof( scRect ) ); GetWindowRect( GetActiveWindow(), &scRect ); //防止图片左上角超过窗口左上角 if ( x < 0 ) { m_rect.left -= x; x = 0; } if ( y scRect.right ? scRect.right : x; y = y > scRect.bottom ? scRect.bottom : y; m_rect.right = x + m_rect.right - m_rect.left > scRect.right ? scRect.right - x + m_rect.left : m_rect.right; m_rect.bottom = y + m_rect.bottom - m_rect.top > scRect.bottom ? scRect.bottom - y + m_rect.top : m_rect.bottom; 只需将上述代码加在CGraphic::BltBBuffer() 中的m_bRect = m_rect; 前即可。 要点二:背景的滚轴实现 画背景可以分为以下三种情况: 情况一:背景图片与窗口等高 情况二:背景图片高度小于窗口高度 情况三:背景图片高度大于窗口高度 上述讲解图与代码相对应地看,有助于容易理解。 另外,要点一实现之后,由于已经可以自动切割,画背景可以用其它方法。 要点三:精灵图的实现 在游戏中,如RPG游戏中的人物图、射击类游戏的飞机、爆炸等,叫做精灵图。 精灵图实际上是将所有帧的图片放在一个文件中,游戏时靠一个RECT来控制画图像文件中的哪一部分,进而控制游戏显示哪一帧图,只需控制好RECT的位置即可。如下图: 控制RECT的四个角的坐标的移动,有以下代码: if (m_timeEnd – m_timeStart > 100) //只有到了100ms之后才绘图 { m_ImageID++; if(m_ImageID - m_beginID >= num) { m_ImageID = m_beginID; //最后一帧的下一帧是第一帧 } m_timeStart = timeGetTime(); } int id = m_ImageID++; SetRect(&m_rect, 41 * id, 0, 41 * (id + 1), 41); //飞机精灵图大小是41×41 m_pGraph->BltBBuffer(m_pImageBuffer, true, m_Pos.x, m_Pos.y, m_rect); 这样就实现了精灵动画的效果。 要点四:拿STL进行子弹的实现 子弹的实现可以使用STL中的vector,当按下开火键时发出一颗子弹,就往vector中添加一个结点;当子弹飞出窗口或击中敌机时,再将结点从vector中删除。每帧游戏画面中子弹飞行时只需将vector中的所有子弹进行处理、绘画即可。 参考代码如下: 1.添加子弹 if (g_ctrlDown) //当ctrl键按下时开炮! { m_BulletEnd = m_Gtime->GetTime(); if ((m_BulletEnd - m_BulletStart) * 1000 > 120) //如果连续按着开火键不放,这里控制不会发出太多子弹 { m_BulletStart = m_BulletEnd; MBULLET tmpBullet; tmpBullet.pos.x = m_SPos.x - 1; //记录开火时的子弹位置 tmpBullet.pos.y = m_SPos.y - 26; tmpBullet.speed = 5; //该子弹的飞行速度 m_BulletList.push_back(tmpBullet); //将子弹添加到vector中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值