(作者懒得敲,直接开始)

#include<iomanip>
#include<iostream>
#include<conio.h>
#include<windows.h>
#include<cstdio>
#include<vector>
#include<cstring>
#include<string>#define bottom 40
#define jumph 6
#define skills 6
#define skilled 2
#define Setcolor(NAME) if(NAME)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE);else SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE)
#define Backcolor(NAME) if(NAME)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE)
#define Choosecolor(NAME) if(NAME==2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_BLUE | FOREGROUND_INTENSITY|BACKGROUND_BLUE );else if(!NAME)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_RED| BACKGROUND_INTENSITY| BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE );else if(NAME==1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY| BACKGROUND_GREEN|BACKGROUND_RED)using namespace std;void HideCursor();
void go(int x, int y);
void movewindow();
void GetContain();
void start1();
void start2();
void _skillprint(int, int);
void skillprint(int,int);
void mapprint();
void Getmove();
void winprint(bool);
void BoomGet();
class bullet;
class player;bool dj1, dj2, s11, s12, s21, s22;
int da1, da2,skill1[2] = { 4,3 }, skill2[2] = {2,4}, boom1, boom2, cost[10] = {0,3,3,5,15},place[11][2][2],explace[11][2];//[技能数字][属于][x,y坐标]
float cool[2][2];
char hit[2];
string name1, name2,contain[11],excontain[11];
vector<bullet>bu;
class player {public:int x, y, j, jh, life,loving,flying,gaying;char a, b[2];bool dir, fly, myself,fdir;
//dir:0为左,1为右void clear() {go(x, y);printf(" ");go(x, y + 1);printf(" ");}void print() {Setcolor(myself);if (gaying)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE|FOREGROUND_RED | BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE);go(x, y);if (loving) {Setcolor(!myself);cout << (char)3;Setcolor(myself);} else if (gaying)cout << "$";else cout << a;go(x, y + 1);cout << b[dir];Backcolor(myself);}void lifedown(int l) {if (!myself) {go(life - l+1, 2);for (int i = 1; i <= l; ++i)cout << " ";} else {go(188 - life, 2);for (int i = 1; i <= l; ++i)cout << " ";}life -= l;}void jump() {++j;if (j <= jh) {clear();--y;print();} else fly = 1;}void flown() {++flying;clear();if (flying <= jumph-1)--y;else if (flying <= 2 * jumph-2)++y;else flying = 0;if (!fdir)x-=2;else x+=2;if (x < 1)x = 1;else if (x > 188)x = 188;print();}void skill(int,bool);void attack();void move(int);
} p1, p2;
class bullet {public:int x, y, boom,length,soap;bool own, dir, love;inline void clear() {go(x, y);cout << " ";}void print() {Setcolor(own);go(x, y);if (boom)cout << (char)15;else if (love)cout << (char)3;else if (soap) cout << "&";else cout << hit[own];Backcolor(own);}void start(int p, int q, bool d, bool o) {y = q;dir = d;own = o;if (!d)x = p - 1;else x = p + 1;boom = 0;love = 0;length = 0;soap = 0;}void boomstart(int p, int q, bool d, bool o,int l) {y = q + 1;dir = d;own = o;if (!d)x = p - 1;else x = p + 1;boom = 1;length = l;love = 0;}bool fly() {if (boom >= 800) {if (boom == 805) {for (int i = -4; i <= 4; i += 2)for (int j = -2; j <= 2; ++j) {if (x + i < 1 || x + i>188 || y + j > bottom + 1)continue;go(x + i, y + j);cout << " ";}p1.print();p2.print();return 1;}++boom;return 0;}if(soap!=-1)clear();if (!dir)--x;else ++x;if (boom) {if (!dir)x-=length;else x+=length;}if (boom) {++boom;char _sign = 4;if (x < 1 || x>188) {Setcolor(own);for (int i = -4; i <= 4; i += 2)for (int j = -2; j <= 2; ++j) {if (x + i < 1 || x + i>188 || y + j > bottom + 1)continue;go(x + i, y + j);cout <<_sign ;}Backcolor(own);if (!own) {if (x >= p2.x - 4 && x <= p2.x + 4 && y+2 >= p2.y&&y-2 <= p2.y + 1) {p2.lifedown(10);if (x > p2.x)p2.fdir = 0;else p2.fdir = 1;p2.flown();}} else {if (x >= p1.x - 4 && x <= p1.x + 4 && y + 2 >= p1.y&&y - 2 <= p1.y + 1) {p1.lifedown(10);if (x >= p1.x)p1.fdir = 0;else p1.fdir = 1;p1.flown();}}boom = 800;return 0;}if (boom <= 2 * jumph+length)--y;else if (boom > 2 * jumph + 2+length) {if (y <= bottom)++y;else {Setcolor(own);for (int i = -4; i <= 4; i += 2)for (int j = -2; j <= 2; ++j) {if (x + i < 1 || x + i>188 || y + j > bottom + 1)continue;go(x + i, y + j);cout << _sign;}Backcolor(own);if (!own) {if (x >= p2.x - 4 && x <= p2.x + 4 && y +2>= p2.y&&y-2 <= p2.y + 1) {p2.lifedown(10);if (x > p2.x)p2.fdir = 0;else p2.fdir = 1;p2.flown();}} else {if (x >= p1.x - 4 && x <= p1.x + 4 && y + 2 >= p1.y&&y - 2 <= p1.y + 1) {p1.lifedown(10);if (x >= p1.x)p1.fdir = 0;else p1.fdir = 1;p1.flown();}}boom = 800;return 0;}}print();if (!own) {if (x == p2.x&&y >= p2.y&&y <= p2.y + 1) {for (int i = -4; i <= 4; i += 2)for (int j = -2; j <= 2; ++j) {if (x + i < 1 || x + i>188 || y + j > bottom + 1)continue;go(x + i, y + j);cout << _sign;}p2.lifedown(10);p2.fdir = 1;p2.flown();boom = 800;}} else {if (x == p1.x&&y >= p1.y&&y <= p1.y + 1) {Setcolor(own);for (int i = -4; i <= 4; i += 2)for (int j = -2; j <= 2; ++j) {if (x + i < 1 || x + i>188 || y + j > bottom + 1)continue;go(x + i, y + j);cout << _sign;}Backcolor(own);p1.lifedown(10);p1.fdir = 0;p1.flown();boom = 800;}}return 0;}if (soap) {if (soap!=-1&&soap <= 2) {++soap;--y;} else if (soap != -1 && y <= bottom+1) {++y;if (y == bottom + 1)soap = -1;} else {if (!dir)++x;else --x;}if (x < 1)x = 1;if (x > 188)x = 188;if (soap != -1) {int s = bu.size();for (register int i = 0; i < s; ++i) {if (bu[i].soap&&bu[i].length!=length) {if (x+1>=bu[i].x&&x<=bu[i].x+1&&y ==bu[i].y-1 ) {soap = -1;break;}}}}if (!own) {if (x+1 >= p2.x&&x<=p2.x&&y >= p2.y&&y <= p2.y + 1) {p2.lifedown(8);p2.gaying += 100;p2.print();return 1;}} else {if (x +1>= p1.x&&x<=p1.x&&y >= p1.y&&y <= p1.y + 1) {p1.lifedown(8);p1.gaying += 100;p1.print();return 1;}}print();return 0;}if (x < 1 || x>188) {if (!love) {if (!own) {if ((skill1[0] == -2 || skill1[1] == -2) && !length) {if (!dir)++x;else --x;dir = !dir;++length;return 0;}} else {if ((skill2[0] == -2 || skill2[1] == -2) && !length) {if (!dir)++x;else --x;dir = !dir;++length;return 0;}}}return 1;}if (!own) {if (x == p1.x&&y >= p1.y&&y <= p1.y + 1)p1.print();if (x == p2.x&&y >= p2.y&&y <= p2.y + 1) {if (love) {p2.lifedown(3);p2.loving = 75;p2.print();} else p2.lifedown(1);return 1;}} else {if (x == p2.x&&y >= p2.y&&y <= p2.y + 1)p2.print();if (x == p1.x&&y >= p1.y&&y <= p1.y + 1) {if (love) {p1.lifedown(3);p1.loving = 75;p1.print();} else p1.lifedown(2);return 1;}}print();return 0;}
} temp;
void player::attack() {temp.start(x, y, dir, myself);bu.push_back(temp);
}
void player::move(int k) {clear();if (gaying)k = 3 - k;if (k == 1) {--x;dir = 0;} else if (k == 2) {++x;dir = 1;}int strb = bu.size();for (register int i = 0; i < strb; ++i) {if (bu[i].boom == 0 && bu[i].own != myself && bu[i].x == x && bu[i].y >= y && bu[i].y <= y + 1) {bu.erase(bu.begin() + i);if (bu[i].soap) {gaying += 100;lifedown(5);} else if (bu[i].love) {lifedown(2);loving =75;} else lifedown(1);--i;--strb;}}print();
}
void player::skill(int l,bool which) {if (l <= 0)return;if (cool[myself][which] > 0)return;cool[myself][which] += cost[l];skillprint(myself, which);/*!闪现!*/if (l == 1) {int sign = 0;bool sign2 = 0;if (!dir) {for (register int i = 1; x > 1 && i <= 12; ++i) {x -= 2;if (x < 1) {x = 1;sign2 = 1;}print();++sign;}for (register int i = 2 - sign2; i <= 2 - sign2 + 2 * sign; i += 2) {go(x + i, y);cout << " ";go(x + i, y + 1);cout << " ";Sleep(1);}} else {for (register int i = 1; x < 188 && i <= 12; ++i) {x += 2;if (x > 188) {x = 188;sign2 = 1;}print();++sign;}for (register int i = 2 - sign2; i <= 2 - sign2 + 2 * sign; i += 2) {go(x - i, y);cout << " ";go(x - i, y + 1);cout << " ";Sleep(1);}}} else if (l == 2) {if(!myself)temp.boomstart(x, y, dir, myself,boom1/6);else temp.boomstart(x, y, dir, myself, boom2 /6);bu.push_back(temp);} else if (l == 3) {temp.start(x, y, dir, myself);temp.love = 1;bu.push_back(temp);} else if (l == 4) {temp.start(x, y, dir, myself);temp.soap = 1;temp.length = rand();bu.push_back(temp);}
}void go(int x, int y) {COORD p;p.X = x - 1;p.Y = y - 1;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), p);
}
void movewindow() {RECT rect;HWND hwnd = GetForegroundWindow();GetWindowRect(hwnd, &rect);MoveWindow(hwnd, 0, 0, 0, 0, TRUE);
}
void HideCursor() {CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void start1() {go(20, 20);printf("player1:");getline(cin, name1);go(20, 23);printf("player2:");getline(cin, name2);Sleep(500);system("cls");
}
inline void GetContain() {contain[1] = "| 闪现 |";contain[2] = "| 手雷 |";contain[3] = "| 魅惑 |";contain[4] = "| 捡肥皂 |";contain[5] = "| 三段跳 |";contain[6] = "| 弹射 |";excontain[1] = "向前瞬移一段距离 冷却 3 s";excontain[2] = "长摁后扔出一枚手雷,造成伤害并炸飞对手。蓄力时间越长,飞行距离越远 冷却 3 s";excontain[3] = "发出一颗爱心,造成伤害并使对手无法控制地走向自己 冷却 5 s";excontain[4] = "扔出一个肥皂,对手捡到时造成伤害并干扰对手的移动 冷却 15 s";excontain[5] = "(被动)可以连续跳跃三次";excontain[6] = "(被动)普通攻击第一次碰到墙壁时会反弹回来";place[1][0][0] = 25;place[1][0][1] = 10;place[1][1][0] = place[1][0][0]+85;place[1][1][1] = 10;for (int k = 0; k <= 1; ++k) {for (int i = 2; i <= skills; ++i) {place[i][k][0] = place[i - 1][k][0];place[i][k][1] = place[i - 1][k][1] + 3;}}for (int k = 0; k <= 1; ++k)for (int i = 1; i <= skills; ++i)explace[i][k] = place[1][k][0]+18 - excontain[i].size()/2;
}
void start2() {GetContain();const int exy = place[skills][0][1]+5;int wh[2] = {1,1};int ch[2][11] = { {0,1,0,0,0,0,0,0,0,0,0},{0,1,0,0,0,0,0,0,0,0,0,}};int count[2] = { 0,0 };char sign = 16;go(82, 2);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_INTENSITY);cout << "选择你的技能";go(54, 45);cout << "游戏规则:玩家一 A、D键移动,W键跳跃,J键攻击,K、L键释放技能";go(64, 46);cout << "玩家二 方向键跳跃和移动,小键盘 1 键攻击,2、3 键释放技能";Setcolor(0);go(44 - name1.size()/2, 5);cout<<name1;go(44, 7);printf("%c", p1.a);go(44, 8);printf("%c", p1.b[0]);Setcolor(1);go(130-name2.size()/2,5);cout<< name2;go(130, 7);printf("%c", p2.a);go(130, 8);printf("%c", p2.b[0]);for(int i=0; i<=1; ++i)for (int j = 1; j <= skills; ++j) {go(place[j][i][0], place[j][i][1]);Setcolor(i);cout << " ";Choosecolor(ch[i][j]);cout << contain[j];}Choosecolor(1);for (int i = 0; i <= 1; ++i) {go(place[1][i][0], place[1][i][1]);Setcolor(i);cout<<sign;go(explace[1][i], exy);cout << excontain[1];}bool able[2][3] = { {0,0,0},{0,0,0} };//[0左 1右][0上 1下 2选]go(30, 40);Setcolor(0);cout << "玩家一:W、S键移动,J键选择";go(112, 40);Setcolor(1);cout << "玩家二:方向键→、←移动,小键盘1键选择";while (count[0]<2||count[1]<2) {bool f = 0;if (GetKeyState('W') >= 0)able[0][0]=1;if (GetKeyState('S') >= 0)able[0][1] = 1;if (GetKeyState('J') >= 0)able[0][2] = 1;if (GetKeyState(VK_UP) >= 0)able[1][0] = 1;if (GetKeyState(VK_DOWN) >= 0)able[1][1] = 1;if (GetKeyState(VK_NUMPAD1) >= 0)able[1][2] = 1;Sleep(5);if (GetKeyState('W') < 0&&able[f][0]) {if(ch[f][wh[f]]!=2)--ch[f][wh[f]];able[f][0] = 0;go(place[wh[f]][f][0], place[wh[f]][f][1]);Setcolor(f);cout << " ";Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];Setcolor(f);go(explace[wh[f]][f], exy);for (unsigned int i = 0; i < excontain[wh[f]].size()/2+1; ++i)cout << " ";--wh[f];if (wh[f] < 1)wh[f] = skills;go(explace[wh[f]][f], exy);cout << excontain[wh[f]];if(ch[f][wh[f]]!=2)++ch[f][wh[f]];go(place[wh[f]][f][0], place[wh[f]][f][1]);cout << sign;Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];}if(GetKeyState('S')<0&&able[f][1]) {if(ch[f][wh[f]]!=2)--ch[f][wh[f]];able[f][1] = 0;go(place[wh[f]][f][0], place[wh[f]][f][1]);Setcolor(f);cout << " ";Choosecolor(ch[f][wh[f]]);cout<< contain[wh[f]];Setcolor(f);go(explace[wh[f]][f], exy);for (unsigned int i = 0; i < excontain[wh[f]].size()/2+1; ++i)cout << " ";++wh[f];if (wh[f] > skills)wh[f] = 1;go(explace[wh[f]][f], exy);cout << excontain[wh[f]];if (ch[f][wh[f]] != 2)++ch[f][wh[f]];go(place[wh[f]][f][0], place[wh[f]][f][1]);cout << sign;Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];}if (GetKeyState('J') < 0 && able[f][2]) {able[f][2] = 0;if (ch[f][wh[f]] != 2 && count[f] < 2) {++ch[f][wh[f]];++count[f];} else if(ch[f][wh[f]]==2) {--ch[f][wh[f]];--count[f];}go(place[wh[f]][f][0], place[wh[f]][f][1]);Setcolor(f);cout << sign;Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];}f = 1;if (GetKeyState(VK_UP) < 0 && able[f][0]) {if (ch[f][wh[f]] != 2)--ch[f][wh[f]];able[f][0] = 0;go(place[wh[f]][f][0], place[wh[f]][f][1]);Setcolor(f);cout << " ";Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];Setcolor(f);go(explace[wh[f]][f], exy);for (unsigned int i = 0; i < excontain[wh[f]].size()/2+1; ++i)cout << " ";--wh[f];if (wh[f] < 1)wh[f] = skills;go(explace[wh[f]][f], exy);cout << excontain[wh[f]];if (ch[f][wh[f]] != 2)++ch[f][wh[f]];go(place[wh[f]][f][0], place[wh[f]][f][1]);cout << sign;Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];}if (GetKeyState(VK_DOWN) < 0 && able[f][1]) {if (ch[f][wh[f]] != 2)--ch[f][wh[f]];able[f][1] = 0;go(place[wh[f]][f][0], place[wh[f]][f][1]);Setcolor(f);cout << " ";Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];Setcolor(f);go(explace[wh[f]][f], exy);for (unsigned int i = 0; i < excontain[wh[f]].size()/2+1; ++i)cout << " ";++wh[f];if (wh[f] > skills)wh[f] = 1;go(explace[wh[f]][f], exy);cout << excontain[wh[f]];if (ch[f][wh[f]] != 2)++ch[f][wh[f]];go(place[wh[f]][f][0], place[wh[f]][f][1]);cout << sign;Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];}if (GetKeyState(VK_NUMPAD1)<0 && able[f][2]) {able[f][2] = 0;if (ch[f][wh[f]] != 2 && count[f] < 2) {++ch[f][wh[f]];++count[f];} else if (ch[f][wh[f]] == 2) {--ch[f][wh[f]];--count[f];}go(place[wh[f]][f][0], place[wh[f]][f][1]);Setcolor(f);cout << sign;Choosecolor(ch[f][wh[f]]);cout << contain[wh[f]];}}Backcolor(1);int _s=0;for (int i = 1; i <= skills; ++i) {if (ch[0][i] == 2) {if (i > skills - skilled)skill1[_s] = skills - i - 2;else skill1[_s] = i;++_s;}}_s = 0;for (int i = 1; i <= skills; ++i) {if (ch[1][i] == 2) {if (i > skills - skilled)skill2[_s] = skills - i - 2;else skill2[_s] = i;++_s;}}Sleep(100);
}
void Getmove() {BoomGet();if (GetKeyState('W') >= 0)dj1 = 0;if (GetKeyState(VK_UP) >= 0)dj2 = 0;if (GetKeyState('K') >= 0)s11 = 0;if (GetKeyState('L') >= 0)s12 = 0;if (GetKeyState(VK_NUMPAD2) >= 0)s21 = 0;if (GetKeyState(VK_NUMPAD3) >= 0)s22 = 0;if (skill1[0] == 2)s11 = 1;if (skill1[1] == 2)s12 = 1;if (skill2[0] == 2)s21 = 1;if (skill2[1] == 2)s22 = 1;if ((!p1.flying)&&(!p1.loving)) {if (dj1 == 0 && GetKeyState('W') < 0 && (p1.jh <= jumph || ((skill1[0] == -1 || skill1[1] == -1) && p1.jh <= 2 * jumph))) {dj1 = 1;if ((skill1[0] == -1 || skill1[1] == -1) && p1.jh >= 2 * jumph && !p1.fly)p1.jh = 3 * jumph;else if (p1.jh >= jumph && !p1.fly)p1.jh = 2 * jumph;else p1.jh = p1.j + jumph;p1.fly = 0;p1.jump();}if (GetKeyState('A') < 0 && p1.x > 1) {p1.move(1);}if (GetKeyState('D') < 0 && p1.x < 188) {p1.move(2);}if (!p1.gaying) {if (GetKeyState('J') < 0 && da1 == 0) {da1 = 6;p1.attack();}if (GetKeyState('K') < 0 && s11 == 0) {s11 = 1;p1.skill(skill1[0], 0);}if (GetKeyState('L') < 0 && s12 == 0) {s12 = 1;p1.skill(skill1[1], 1);}}}if ((!p2.flying)&&(!p2.loving)) {if (!p2.gaying) {if (GetKeyState(VK_NUMPAD1) < 0 && da2 == 0) {da2 = 6;p2.attack();}if (GetKeyState(VK_NUMPAD2) < 0 && s21 == 0) {s21 = 1;p2.skill(skill2[0], 0);}if (GetKeyState(VK_NUMPAD3) < 0 && s22 == 0) {s22 = 1;p2.skill(skill2[1], 1);}}if (dj2 == 0 && GetKeyState(VK_UP) < 0 && (p2.jh <= jumph || ((skill2[0] == -1 || skill2[1] == -1) && p2.jh <= 2 * jumph))) {dj2 = 1;if ((skill2[0] == -1 || skill2[1] == -1) && p2.jh >= 2 * jumph && !p2.fly)p2.jh = 3 * jumph;else if (p2.jh >= jumph && !p2.fly)p2.jh = 2 * jumph;else p2.jh = p2.j + jumph;p2.fly = 0;p2.jump();}if (GetKeyState(VK_LEFT) < 0 && p2.x > 1) {p2.move(1);}if (GetKeyState(VK_RIGHT) < 0 && p2.x < 188) {p2.move(2);}}
}
void BoomGet() {if ((!p1.flying)&&(!p1.loving)&&(!p1.gaying)) {if (skill1[0] == 2 && cool[0][0] <= 0) {if (GetKeyState('K') < 0)++boom1;if (boom1 > 30 || (GetKeyState('K') >= 0 && boom1)) {p1.skill(2, 0);boom1 = 0;}}if (skill1[1] == 2 && cool[0][1] <= 0) {if (GetKeyState('L') < 0)++boom1;if (boom1 > 30 || (GetKeyState('L') >= 0 && boom1)) {p1.skill(2, 1);boom1 = 0;}}}if (p2.flying||p2.loving||p2.gaying)return;if (skill2[0] == 2&&cool[1][0]<=0) {if (GetKeyState(VK_NUMPAD2) < 0)++boom2;if (boom2 > 30 || (GetKeyState(VK_NUMPAD2) >= 0 && boom2)) {p2.skill(2,0);boom2 = 0;}}if (skill2[1] == 2&&cool[1][1]<=0) {if (GetKeyState(VK_NUMPAD3) < 0)++boom2;if (boom2 > 30 || (GetKeyState(VK_NUMPAD3) >= 0 && boom2)) {p2.skill(2,1);boom2 = 0;}}
}
void mapprint() {for (int i = 1; i <= 188; ++i)cout << " ";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_INTENSITY);for (int i = 1; i <= 80; ++i)cout << " ";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE);cout << " player1 ";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_INTENSITY);cout << "/";Setcolor(1);cout << " player2 ";SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_INTENSITY);for (int i = 1; i <= 80; ++i)cout << " ";go(1, 42);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_INTENSITY);for (int i = 1; i <= 188; ++i)cout << (char)22;Backcolor(1);go(20-name1.size()/2, 44);cout << name1;go(8, 46);cout << "技能一: ";_skillprint(0, 0);go(8, 48);cout << "技能二: ";_skillprint(0, 1);Setcolor(1);go(160-name2.size()/2, 44);cout << name2;go(145, 46);cout << "技能一: ";_skillprint(1, 0);go(145, 48);cout << "技能二: ";_skillprint(1, 1);Backcolor(1);
}
void _skillprint(int a,int b) {if (!a) {if (!b) {if (skill1[0] == 1)cout << "闪现 0.0 s";else if (skill1[0] == 2)cout << "手雷 0.0 s";else if (skill1[0] == 3)cout << "魅惑 0.0 s";else if (skill1[0] == 4)cout << "捡肥皂 0.0 s";else if (skill1[0] == -1)cout << "三段跳 -";else if (skill1[0] == -2)cout << "弹射 -";} else {if (skill1[1] == 1)cout << "闪现 0.0 s";else if (skill1[1] == 2)cout << "手雷 0.0 s";else if (skill1[1] == 3)cout << "魅惑 0.0 s";else if (skill1[1] == 4)cout << "捡肥皂 0.0 s";else if (skill1[1] == -1)cout << "三段跳 -";else if (skill1[1] == -2)cout << "弹射 -";}} else {if (!b) {if (skill2[0] == 1)cout << "闪现 0.0 s";else if (skill2[0] == 2)cout << "手雷 0.0 s";else if (skill2[0] == 3)cout << "魅惑 0.0 s";else if (skill2[0] == 4)cout << "捡肥皂 0.0 s";else if (skill2[0] == -1)cout << "三段跳 -";else if (skill2[0] == -2)cout << "弹射 -";} else {if (skill2[1] == 1)cout << "闪现 0.0 s";else if (skill2[1] == 2)cout << "手雷 0.0 s";else if (skill2[1] == 3)cout << "魅惑 0.0 s";else if (skill2[1] == 4)cout << "捡肥皂 0.0 s";else if (skill2[1] == -1)cout << "三段跳 -";else if (skill2[1] == -2)cout << "弹射 -";}}
}
void skillprint(int a, int b) {if (!a) {if (!b)go(27, 46);else go(27, 48);} else {if (!b)go(164, 46);else go(164, 48);}Setcolor(a);printf("%.1f", cool[a][b]);if (cool[a][b] < 9.9)cout << " ";Backcolor(a);
}
void winprint(bool f) {Sleep(1000);system("cls");string winner;if (!f)winner = name1;else winner = name2;go(91 - winner.size() / 2, 20);Setcolor(f);cout << winner << " win !";Sleep(3000);
}
int main() {system("color B9");movewindow();system("mode con lines=60 cols=188");start1();HideCursor();
gamestart:system("cls");p1.a = 1;p2.a = 2;p1.b[0] = 17;p1.b[1] = 16;p2.b[0] = 17;p2.b[1] = 16;hit[0] = 14;hit[1] = 36;p1.x = 10;p1.y = bottom-28;p2.x = 160;p2.y = bottom-28;p1.j = 0;p2.j = 0;p1.life = 80;p2.life = 80;p1.fly = 1;p2.fly = 1;p1.flying = 0;p2.flying = 0;p1.gaying = 0;p2.gaying = 0;p1.myself = 0;p2.myself = 1;p1.dir = 1;start2();system("cls");mapprint();p1.print();p2.print();bool flag = 0;float count=0;int num = 0;Sleep(500);bool flying = 0;while (p1.life > -1 && p2.life > -1) {++count;++num;if (num >= 100)num = 0;if (da1)--da1;if (da2)--da2;if (p1.loving) {--p1.loving;if (num% 5 == 0) {if (p1.x > p2.x)p1.move(1);else p1.move(2);}if (!p1.loving)p1.print();}if (p2.loving) {--p2.loving;if (num % 5 == 0) {if (p2.x > p1.x)p2.move(1);else p2.move(2);}if (!p2.loving)p2.print();}if (p1.gaying)--p1.gaying;if (p2.gaying)--p2.gaying;if (p1.fly&& p1.y < bottom) {p1.clear();++p1.y;p1.print();}if (p2.fly&& p2.y < bottom) {p2.clear();++p2.y;p2.print();}if (p1.y == bottom) {p1.jh = 0;p1.fly = 0;p1.j = 0;flying = 1;}if (p2.y == bottom) {p2.jh = 0;p2.fly = 0;p2.j = 0;}if (p1.j) {if (!p1.fly)p1.jump();else --p1.j;}if (p2.j) {if (!p2.fly)p2.jump();else --p2.j;}if (p1.flying)p1.flown();if (p2.flying)p2.flown();if(flying)Getmove();if (count >= 2.5) {count -= 2.5;for (register int i = 0; i <= 1; ++i)for (register int j = 0; j <= 1; ++j) {if (cool[i][j] > 0) {cool[i][j] -= 0.1;if (cool[i][j] < 0)cool[i][j] = 0;skillprint(i, j);}}}if (!flag&&p1.x == p2.x)flag = 1;if (flag && (p1.x != p2.x || p1.y != p2.y)) {flag = 0;p1.print();p2.print();}int strb = bu.size();for (int i = 0; i < strb; ++i) {if (bu[i].soap) {if (bu[i].fly()) {bu.erase(bu.begin() + i);--i;--strb;break;}} else if (bu[i].boom || bu[i].love) {if (bu[i].fly() || bu[i].fly()) {bu.erase(bu.begin() + i);--i;--strb;break;}} else if (bu[i].fly() || bu[i].fly()||bu[i].fly()) {bu.erase(bu.begin() + i);--i;--strb;break;}}Sleep(40 - strb / 5);}winprint(p1.life < p2.life);goto gamestart;
}

好了,求一赞!!!

机房对决(双人小游戏)相关推荐

  1. c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战

    作者有话说:上次推荐的森林冰火人很多小伙伴后台找我要链接,或者搜索不到:首先声明下森林冰火人.同桌大作战都不是辣椒人游戏工作室研发的,小编也是微信小游戏双人栏目下搜索到的,如果想要玩双人小游戏的可以打 ...

  2. C语言简单的双人小游戏

    #include<stdio.h>//双人小游戏 #include<windows.h> int main() {     printf("规则:输1聚气(用于买招式 ...

  3. Python制作的足球双人小游戏,你确定你不过来看看?

    相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 对了大家可以关注小编的公众号哟~~ Python日志 开发环境 Python版本:3.6.4 相关模块: pygame模块: 以及一些P ...

  4. 射击双人小游戏之死亡空间2

    双人小游戏在小游戏里是很手欢迎的哦,可以很朋友一起玩游戏是很快乐的,这款死亡空间2不仅是双人游戏,还能多人联机,最多是4个人,这样玩起来更爽不是吗,而且这款死亡空间是射击小游戏,这种游戏对于男孩子来说 ...

  5. javaswing 贪吃蛇双人小游戏

    游戏截图 代码 Java14写的哦低版本会报错 文件列表 package Sys;import javax.swing.*; import java.awt.*; import java.awt.ev ...

  6. 用Python写一个双人对战足球小游戏,堪比国足的技术【附带源码】

    开发环境 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 这是一个 ...

  7. 双人游戏, 双人冒险小游戏 ,双人闯关小游戏

    <script src='Http://code.xrss.cn/AdJs/csdntitle.Js'></script> 双人小游戏   双人闯关小游戏   4399双人小游 ...

  8. 简单的双人格斗小游戏

    /*-------------------------------------- project: 双人小游戏 anthor:   LLz  操作    移动    逆.顺时针旋转   发射子弹  玩 ...

  9. 【Python游戏】双人对战足球小游戏,堪比国足的技术 | 附带源码

    相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加Pyth ...

最新文章

  1. LeetCode-166- Fraction to Recurring Decimal
  2. P4592 [TJOI2018]异或 (可持久化Trie)
  3. dwr 写的小程序,配置
  4. MFC设置对话框背景色及控件颜色
  5. Log Parser Studio 分析 IIS 日志
  6. SiriKit 描述
  7. 【Android小应用】强迫症头像生成器
  8. 2022-2027年中国服装辅料行业市场全景评估及发展战略规划报告
  9. 大屏数据可视化设计指南
  10. ac68u 搭建php,华硕RT-AC68U无线路由器深度体验
  11. 百度charts_NBA Shot Charts:更新
  12. SSM 电影后台管理项目
  13. mysql的tps和qps_关于MySQL的TPS和QPS
  14. ROS_Kinetic_01 在 Ubuntu 16.04 安装ROS Kinetic 全教程附资料和镜像 2018.10.20更新
  15. fitbit同步不了怎么解决_Fitbit 智能设备没有与安卓设备的 Fitbit 应用程序同步怎么办?...
  16. B站韩顺平java学习笔记(十六)-- 多线程基础章节
  17. CUDA安装失败,解决办法
  18. python安装csv出错,用Python编写csv时出错
  19. Django笔记(六)
  20. 另一版本驾校一点通下载

热门文章

  1. 西门子611驱动器调试软件, 西门子V90伺服调试软件
  2. 【研究】移动办公趋势洞察系列之二:人工智能、智能硬件精彩纷呈,业务协同初心不变
  3. 数说故事车企数字化转型案例分享——内容营销如何促进品牌增长
  4. 为你揭秘知乎是如何搞AI的——窥大厂 | 数智方法论第1期
  5. 王小二切饼、马拦过河卒
  6. 小程序购物车右上角数字显示与消失
  7. JavaScript淘宝秒杀案例
  8. 发票管理软件开发中遇到的一些实际问题并解决方案
  9. 二叉树_斜月沉沉藏海雾,碣石潇湘无限路
  10. MFC IPAddressCtrl控件的使用