自闭枪战V2.0(大改)

Player1:ad左右动。w跳跃 r向左开枪,t向右开枪

Player2:hk左右动。u跳跃 o向左开枪,p向右开枪

#include <bits/stdc++.h>
#include <conio.h>
#include <windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,我是背下来的 


using namespace std;

int jump[20] = {0, -1, -1, -1, -1};

char mmp[21][42] = {"
O    #                            #    @",
                    "
##                                    ##",
                    "
     ###                        ###     ",
                    "
                                        ",
                    "
####                                ####",
                    "
                                        ",
                    "
        ########################        ",
                    "
                                        ",
                    "
                                        ",
                    "
############                ############",
                    "
                                        ",
                    "
                                        ",
                    "
          ######        ######          ",
                    "
                                        ",
                    "
                                        ",
                    "
                 ######                 ",
                    "
                                        ",
                    "
########                        ########",
                    "
            ######    ######            ",
                    "
                                        "
                   };

int main() {

    int xp1 = 0, yp1 = 1, xp2 = 0, yp2 = 40, tick = 0;
    char ch;
    int score1 = 0, score2 = 0, jumpdelay1 = 0, jumpdelay2 = 0;

    while (1) {

        Sleep(40);
        HANDLE hout;
        COORD coord;
        coord.X=0;
        coord.Y=0;
        hout=GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(hout,coord);
        fwrite(mmp, 1, 20 * 40, stdout);
        printf("
score: 1:%d  2:%d", score1, score2);

        if (jumpdelay1 > 0) {

            if (xp1 + jump[jumpdelay1] > 0 && mmp[xp1 + jump[jumpdelay1]][yp1] == ' ') {

                mmp[xp1][yp1] = ' ';
                xp1 += jump[jumpdelay1];
                mmp[xp1][yp1] = 'O';

            }
            if (xp1 + jump[jumpdelay1] > 0 && (mmp[xp1 + jump[jumpdelay1]][yp1] == '<' || mmp[xp1 + jump[jumpdelay1]][yp1] == '>')) {

                mmp[xp1][yp1] = ' ';
                xp1 = 0, yp1 = 1;
                mmp[xp1][yp1] = 'O';
                score2++;

            }
            if (xp1 + jump[jumpdelay1] > 0 && mmp[xp1 + jump[jumpdelay1]][yp1] == '#') {

                jumpdelay1 = 1;

            }
            if (xp1 + jump[jumpdelay1] > 0 && mmp[xp1 + jump[jumpdelay1]][yp1] == '@') {

                jumpdelay1 = 1;

            }
            jumpdelay1--;

        } else {

            if (xp1 == 19) {

                mmp[xp1][yp1] = ' ';
                xp1 = 0, yp1 = 1;
                mmp[xp1][yp1] = 'O';
                score2++;

            } else {

                if (mmp[xp1 + 1][yp1] == ' ') {

                    mmp[xp1][yp1] = ' ';
                    xp1++;
                    mmp[xp1][yp1] = 'O';

                }
                if (mmp[xp1 + 1][yp1] == '<' || mmp[xp1 + 1][yp1] == '>') {

                    mmp[xp1][yp1] = ' ';
                    xp1 = 0, yp1 = 1;
                    mmp[xp1][yp1] = 'O';
                    score2++;

                }

            }

        }
        if (jumpdelay2 > 0) {

            if (xp2 + jump[jumpdelay2] > 0 && mmp[xp2 + jump[jumpdelay2]][yp2] == ' ') {

                mmp[xp2][yp2] = ' ';
                xp2 += jump[jumpdelay2];
                mmp[xp2][yp2] = '@';

            }
            if (xp2 + jump[jumpdelay2] >=0 && (mmp[xp2 + jump[jumpdelay2]][yp2] == '<' || mmp[xp2 + jump[jumpdelay2]][yp2] == '>')) {

                mmp[xp2][yp2] = ' ';
                xp2 = 0, yp2 = 40;
                mmp[xp2][yp2] = '@';
                score1++;

            }
            if (xp2 + jump[jumpdelay2] >=0 && mmp[xp2 + jump[jumpdelay2]][yp2] == '#') {

                jumpdelay2 = 1;

            }
            if (xp2 + jump[jumpdelay2] >=0 && mmp[xp2 + jump[jumpdelay2]][yp2] == '#') {

                jumpdelay2 = 1;

            }
            jumpdelay2--;

        } else {

            if (xp2 == 19) {

                mmp[xp2][yp2] = ' ';
                xp2 = 0, yp2 = 40;
                mmp[xp2][yp2] = '@';
                score1++;

            } else {

                if (mmp[xp2 + 1][yp2] == ' ') {

                    mmp[xp2][yp2] = ' ';
                    xp2++;
                    mmp[xp2][yp2] = '@';

                }
                if (mmp[xp2 + 1][yp2] == '<' || mmp[xp2 + 1][yp2] == '>') {

                    mmp[xp2][yp2] = ' ';
                    xp2 = 0, yp2 = 40;
                    mmp[xp2][yp2] = '@';
                    score1++;

                }

            }

        }

        for (register int i = 0; i < 20; i++) {

            for (register int j = 1; j <= 40; j++) {

                if (mmp[i][j] == '<') {

                    if (j - 1 <= 0) {

                        mmp[i][j] = ' ';
                        continue;

                    }

                    if (mmp[i][j - 1] == 'O') {

                        mmp[xp1][yp1] = ' ';
                        xp1 = 0, yp1 = 1;
                        mmp[xp1][yp1] = 'O';
                        score2++;
                        mmp[i][j - 1] = '<';

                    }
                    if (mmp[i][j - 1] == '@') {

                        mmp[xp2][yp2] = ' ';
                        xp2 = 0, yp2 = 40;
                        mmp[xp2][yp2] = '@';
                        score1++;

                    }
                    if (mmp[i][j - 1] == '#') {

                        mmp[i][j] = ' ';

                    }
                    if (mmp[i][j - 1] == ' ') {

                        mmp[i][j] = ' ';
                        mmp[i][j - 1] = '<';

                    }
                    if (mmp[i][j - 1] == '>') {

                        mmp[i][j] = mmp[i][j - 1] = ' ';

                    }

                }

            }

        }
        for (register int i = 19; i >= 0; i--) {

            for (register int j = 40; j >= 1; j--) {

                if (mmp[i][j] == '>') {

                    if (j + 1 >= 41) {

                        mmp[i][j] = ' ';
                        continue;

                    }

                    if (mmp[i][j + 1] == 'O') {

                        mmp[xp1][yp1] = ' ';
                        xp1 = 0, yp1 = 1;
                        mmp[xp1][yp1] = 'O';
                        score2++;
                        mmp[i][j + 1] = '>';

                    }
                    if (mmp[i][j + 1] == '@') {

                        mmp[xp2][yp2] = ' ';
                        xp2 = 0, yp2 = 40;
                        mmp[xp2][yp2] = '@';
                        score1++;

                    }
                    if (mmp[i][j + 1] == '#') {

                        mmp[i][j] = ' ';

                    }
                    if (mmp[i][j + 1] == ' ') {

                        mmp[i][j] = ' ';
                        mmp[i][j + 1] = '>';

                    }
                    if (mmp[i][j + 1] == '<') {

                        mmp[i][j] = mmp[i][j + 1] = ' ';

                    }

                }

            }

        }

        if (KEY_DOWN('A')) {

            if (yp1 - 1 > 0 && mmp[xp1][yp1 - 1] == ' ') {

                mmp[xp1][yp1] = ' ';
                yp1--;
                mmp[xp1][yp1] = 'O';

            }

            if (yp1 - 1 > 0 && (mmp[xp1][yp1 - 1] == '<' || mmp[xp1][yp1 - 1] == '>')) {

                mmp[xp1][yp1] = ' ';
                xp1 = 0, yp1 = 1;
                mmp[xp1][yp1] = 'O';
                score2++;

            }

        }

        if (KEY_DOWN('D')) {

            if (yp1 + 1 <= 40 && mmp[xp1][yp1 + 1] == ' ') {

                mmp[xp1][yp1] = ' ';
                yp1++;
                mmp[xp1][yp1] = 'O';

            }

            if (yp1 + 1 <= 40 && (mmp[xp1][yp1 + 1] == '<' || mmp[xp1][yp1 + 1] == '>')) {

                mmp[xp1][yp1] = ' ';
                xp1 = 0, yp1 = 1;
                mmp[xp1][yp1] = 'O';
                score2++;

            }

        }

        if (KEY_DOWN('W')) {

            if (jumpdelay1 == 0 && mmp[xp1 + 1][yp1] == '#') {

                jumpdelay1 = 4;

            }

        }

        if (KEY_DOWN('H')) {

            if (yp2 - 1 > 0 && mmp[xp2][yp2 - 1] == ' ') {

                mmp[xp2][yp2] = ' ';
                yp2--;
                mmp[xp2][yp2] = '@';

            }

            if (yp2 - 1 > 0 && (mmp[xp2][yp2 - 1] == '*' || mmp[xp2][yp2 - 1] == '*')) {

                mmp[xp2][yp2] = ' ';
                xp2 = 0, yp2 = 40;
                mmp[xp2][yp2] = '@';
                score1++;

            }

        }

        if (KEY_DOWN('K')) {

            if (yp2 + 1 <= 40 && mmp[xp2][yp2 + 1] == ' ') {

                mmp[xp2][yp2] = ' ';
                yp2++;
                mmp[xp2][yp2] = '@';

            }

            if (yp2 + 1 <= 40 && (mmp[xp2][yp2 + 1] == '<' || mmp[xp2][yp2 + 1] == '>')) {

                mmp[xp2][yp2] = ' ';
                xp2 = 0, yp2 = 40;
                mmp[xp2][yp2] = '@';
                score1++;

            }

        }

        if (KEY_DOWN('U')) {

            if (jumpdelay2 == 0 && mmp[xp2 + 1][yp2] == '#') {

                jumpdelay2 = 4;

            }

        }

        if (KEY_DOWN('R')) {

            if (yp1 > 1) {

                if (mmp[xp1][yp1 - 1] == '@') {

                    mmp[xp2][yp2] = ' ';
                    xp2 = 0, yp2 = 40;
                    mmp[xp2][yp2] = '@';
                    score1++;

                }

                if (mmp[xp1][yp1 - 1] == ' ') {

                    mmp[xp1][yp1 - 1] = '<';

                }

            }

        }

        if (KEY_DOWN('T')) {

            if (yp1 < 40) {

                if (mmp[xp1][yp1 + 1] == '@') {

                    mmp[xp2][yp2] = ' ';
                    xp2 = 0, yp2 = 40;
                    mmp[xp2][yp2] = '@';
                    score1++;

                }

                if (mmp[xp1][yp1 + 1] == ' ') {

                    mmp[xp1][yp1 + 1] = '>';

                }

            }

        }

        if (KEY_DOWN('O')) {

            if (yp2 > 1) {

                if (mmp[xp2][yp2 - 1] == 'O') {

                    mmp[xp1][yp1] = ' ';
                    xp1 = 0, yp1 = 1;
                    mmp[xp1][yp1] = 'O';
                    score2++;

                }

                if (mmp[xp2][yp2 - 1] == ' ') {

                    mmp[xp2][yp2 - 1] = '<';

                }

            }

        }

        if (KEY_DOWN('P')) {

            if (yp2 < 40) {

                if (mmp[xp2][yp2 + 1] == 'O') {

                    mmp[xp1][yp1] = ' ';
                    xp1 = 0, yp1 = 1;
                    mmp[xp1][yp1] = 'O';
                    score2++;

                }

                if (mmp[xp2][yp2 + 1] == ' ') {

                    mmp[xp2][yp2 + 1] = '>';

                }

            }

        }

        /*if (kbhit()) {

            ch = getch();

            switch (ch) {

                case 27 :

                    exit(0);

                    break;

                case 'a' :

                    if (yp1 - 1 > 0 && mmp[xp1][yp1 - 1] == ' ') {

                        mmp[xp1][yp1] = ' ';
                        yp1--;
                        mmp[xp1][yp1] = 'O';

                    }

                    if (yp1 - 1 > 0 && (mmp[xp1][yp1 - 1] == '<' || mmp[xp1][yp1 - 1] == '>')) {

                        mmp[xp1][yp1] = ' ';
                        xp1 = 0, yp1 = 1;
                        mmp[xp1][yp1] = 'O';
                        score2++;

                    }

                    break;

                case 'd' :

                    if (yp1 + 1 <= 40 && mmp[xp1][yp1 + 1] == ' ') {

                        mmp[xp1][yp1] = ' ';
                        yp1++;
                        mmp[xp1][yp1] = 'O';

                    }

                    if (yp1 + 1 <= 40 && (mmp[xp1][yp1 + 1] == '<' || mmp[xp1][yp1 + 1] == '>')) {

                        mmp[xp1][yp1] = ' ';
                        xp1 = 0, yp1 = 1;
                        mmp[xp1][yp1] = 'O';
                        score2++;

                    }

                    break;

                case 'w' :

                    if (jumpdelay1 == 0 && mmp[xp1 + 1][yp1] == '#') {

                        jumpdelay1 = 4;

                    }

                    break;

                case -32 :

                    ch = getch();

                    switch (ch) {

                        case 75 :

                            if (yp2 - 1 > 0 && mmp[xp2][yp2 - 1] == ' ') {

                                mmp[xp2][yp2] = ' ';
                                yp2--;
                                mmp[xp2][yp2] = '@';

                            }

                            if (yp2 - 1 > 0 && (mmp[xp2][yp2 - 1] == '*' || mmp[xp2][yp2 - 1] == '*')) {

                                mmp[xp2][yp2] = ' ';
                                xp2 = 0, yp2 = 40;
                                mmp[xp2][yp2] = '@';
                                score1++;

                            }

                            break;

                        case 77 :

                            if (yp2 + 1 <= 40 && mmp[xp2][yp2 + 1] == ' ') {

                                mmp[xp2][yp2] = ' ';
                                yp2++;
                                mmp[xp2][yp2] = '@';

                            }

                            if (yp2 + 1 <= 40 && (mmp[xp2][yp2 + 1] == '<' || mmp[xp2][yp2 + 1] == '>')) {

                                mmp[xp2][yp2] = ' ';
                                xp2 = 0, yp2 = 40;
                                mmp[xp2][yp2] = '@';
                                score1++;

                            }

                            break;

                        case 72 :

                            if (jumpdelay2 == 0 && mmp[xp2 + 1][yp2] == '#') {

                                jumpdelay2 = 4;

                            }

                            break;

                    }

                    break;

                case 'j' :

                    if (yp1 > 1) {

                        if (mmp[xp1][yp1 - 1] == '@') {

                            mmp[xp2][yp2] = ' ';
                            xp2 = 0, yp2 = 40;
                            mmp[xp2][yp2] = '@';
                            score1++;

                        }

                        if (mmp[xp1][yp1 - 1] == ' ') {

                            mmp[xp1][yp1 - 1] = '<';

                        }

                    }

                    break;
                case 'k' :

                    if (yp1 < 40) {

                        if (mmp[xp1][yp1 + 1] == '@') {

                            mmp[xp2][yp2] = ' ';
                            xp2 = 0, yp2 = 40;
                            mmp[xp2][yp2] = '@';
                            score1++;

                        }

                        if (mmp[xp1][yp1 + 1] == ' ') {

                            mmp[xp1][yp1 + 1] = '>';

                        }

                    }
                    break;
                case ',' :

                    if (yp2 > 1) {

                        if (mmp[xp2][yp2 - 1] == 'O') {

                            mmp[xp1][yp1] = ' ';
                            xp1 = 0, yp1 = 1;
                            mmp[xp1][yp1] = 'O';
                            score2++;

                        }

                        if (mmp[xp2][yp2 - 1] == ' ') {

                            mmp[xp2][yp2 - 1] = '<';

                        }

                    }

                    break;
                case '.' :

                    if (yp2 < 40) {

                        if (mmp[xp2][yp2 + 1] == 'O') {

                            mmp[xp1][yp1] = ' ';
                            xp1 = 0, yp1 = 1;
                            mmp[xp1][yp1] = 'O';
                            score2++;

                        }

                        if (mmp[xp2][yp2 + 1] == ' ') {

                            mmp[xp2][yp2 + 1] = '>';

                        }

                    }

                    break;

            }

        }*/

    }


    return 0;

}
原文地址:https://www.cnblogs.com/Ice-watermelon233/p/zibigungame.html