Do you like Paoku?
我们都非常的喜欢跑酷,自然也想要做出跑酷游戏。请看代码:
#include <time.h>
#include <windows.h>
#include <bits/stdc++.h>
#include <stdio.h>
#include <conio.h>
#define Nor \
if (B[b].x < 5) \
B[b].x = 5;
#define Out1 Bx1 - Bvx1 <= 6 || Bx1 - Bvx1 >= 28 || By1 - Bvy1 <= 7 || By1 - Bvy1 >= 27
#define Out2 Bx2 - Bvx2 <= 6 || Bx2 - Bvx2 >= 28 || By2 - Bvy2 <= 7 || By2 - Bvy2 >= 27
#define Chang1 \
{ \
Bwhat1 = 0; \
Bvx1 = Bvy1 = 0; \
memset(Bgo1, 0, sizeof(Bgo1)); \
}
#define Chang2 \
{ \
Bwhat2 = 0; \
Bvx2 = Bvy2 = 0; \
memset(Bgo2, 0, sizeof(Bgo2)); \
}
#define Chang3 \
{ \
Bwhat3 = 0; \
Bvx3 = Bvy3 = 0; \
memset(Bgo3, 0, sizeof(Bgo3)); \
}
using namespace std;
int ti(float a) { return ((int)(a * 10 + 5)) / 10; }
void Setpos(float x, float y)
{
COORD pos;
pos.X = ti(y * 4) / 2;
pos.Y = ti(x);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void Color(int a)
{
if (a == 0)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if (a == 1)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);
if (a == 2)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
if (a == 3)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
if (a == 4)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
if (a == 5)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
if (a == 6)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
if (a == 7)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if (a == 8)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
if (a == 9)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE);
if (a == 10)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE);
if (a == 11)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE);
if (a == 12)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
if (a == 13)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
if (a == 14)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
}
int Blomax, Ren, Exp, Expmax, Lv, Lvl, Ice, Drug, ar1, ar2, Tar1, Tar2, bl, br, Win, T, Tb, Sy, Up, Upt, Down, u1, u2, Kill, Killb, L, Ll[4], Li, D, Gd[10], Biao, Fire, Fir, Water, Thun, Wind, Magne, I[20][2], ib, Dis, Disb, Dis1, Disb1, Boss, Bblo, Bblomax, Bwhat1, Bwhat2, Bwhat3, Bgo1[10], Bgo2[10], Bgo3[10], Bbr, Bbl, Bl[4];
float X, Y, Vx, Vy, Ding, Blo, Hui, Bx1, By1, Bx2, By2, Bx3, By3, Bvx1, Bvy1, Bvx2, Bvy2, Bvx3, Bvy3, Bway[1001][2];
struct bullet
{
float x, y, vx, vy;
int what;
int a, t, How;
int life;
bool kill;
} B[100001];
void Map(int a, int b);
void Pan(int a, float x, float y, int b)
{
float Nox[4], Noy[4];
Nox[0] = X, Noy[0] = Y;
if (Down == 1 && X == 22)
Nox[1] = X + 1, Noy[1] = Y - 0.5, Nox[2] = X - 1, Noy[2] = Y - 0.5;
else if (Down == 2)
Nox[1] = X + 1, Noy[1] = Y - 0.5, Nox[2] = -10, Noy[2] = -10;
else if (Down == 1 || X < 18)
Nox[1] = X - 1, Noy[1] = Y - 0.5, Nox[2] = -10, Noy[2] = -10;
else
Nox[1] = X + 1, Noy[1] = Y - 0.5, Nox[2] = X - 1, Noy[2] = Y - 0.5;
for (int i = 0; i < 3; i++)
{
if (a == -1)
{
if (abs(x - Nox[i]) + abs(y - Noy[i]) < 1.5)
{
if (B[b].what == -10)
Exp += 2;
if (B[b].what == -11)
Exp += 1;
B[b].life = 0;
if (B[b].life == 0 && b == bl)
bl++;
Map(3, b);
break;
}
}
if (a == -2)
{
if (abs(x - Nox[i]) + abs(y - Noy[i]) < 2.5)
{
if (B[b].what == -2)
Exp += 5, Biao += 5;
if (B[b].what == -3)
Fire = 300, Ice = 0, Fir = 3;
if (B[b].what == -4)
Water = 200;
if (B[b].what == -5)
{
Wind = 70;
Ding = 28.25;
Ice = 0;
if (Y < Ding - 1)
Vy = 5;
else
Vy = 0;
if (Up >= 1)
Vx = -5;
if (Down == 2)
Vx = 5;
}
if (B[b].what == -6)
{
Thun = 200;
system("color 1F");
Sleep(20);
system("color 6F");
Sleep(10);
system("color 0F");
}
if (B[b].what == -7)
Magne = 300;
if (B[b].what == -8)
Ice = 0, Drug = 0, Blo = fmin((float)Blomax, Blo + 20);
if (B[b].what == -9)
Exp = fmin((float)Expmax, Exp + 20);
B[b].life = 0;
if (B[b].life == 0 && b == bl)
bl++;
Map(3, b);
break;
}
}
}
if (Wind == 0 && Thun == 0 && (B[b].kill != 0 || Killb >= 15 || Ren == 1 && Killb > 0))
return;
for (int i = 0; i < 3; i++)
{
if ((Wind >= 1 || Thun >= 1) && abs(x - Nox[i]) + abs(y - Noy[i]) < 2.5)
{
if (B[b].what < 98)
Exp += 2;
B[b].life = 0;
Map(3, b);
break;
}
if (a == 1)
{
if (abs(x - Nox[i]) < 0.5 && abs(y - Noy[i]) < 1)
{
if (B[b].what >= 99)
Blo -= 10;
if (B[b].what == 14)
Blo -= 15, Ice = 100, B[b].life = 0;
else if (B[b].what == 15)
Blo -= 20, Ice = 0, B[b].life = 0;
else if (B[b].what == 17)
Blo -= 5, Drug = 100, B[b].life = 0;
else if (B[b].what >= 13 && B[b].what <= 17)
Blo -= 10, B[b].life = 0;
else
Blo -= 15;
B[b].kill = 1, Killb = 20;
Kill = 1;
Map(3, b);
break;
}
}
if (a == 2 || a == 6 || a == 8 || a == 9 || a == 10 || a == 11 || a == 12)
{
if (abs(x - Nox[i]) + abs(y - Noy[i]) < 1.5)
{
if (a == 2)
Blo -= 20;
else if (a == 8)
Blo -= 10;
else
Blo -= 15;
B[b].kill = 1, Killb = 20;
Kill = 1;
if (a != 2)
{
B[b].life = 0;
if (B[b].life == 0 && b == bl)
bl++;
Map(3, b);
break;
}
}
}
if (a == 4)
{
if ((Wind >= 1 || Thun >= 1) && abs(x - Nox[i]) < 1.5 && Noy[i] - y <= 0 && Noy[i] - y >= -8)
{
if (B[b].what < 98)
Exp += 2;
B[b].life = 0;
Map(3, b);
break;
}
if (abs(x - Nox[i]) < 1 && Noy[i] - y <= 0 && Noy[i] - y >= -8)
{
Blo -= 25, B[b].kill = 1, Killb = 20;
Kill = 1;
Vy = -1;
Y -= 0.5;
break;
}
}
}
}
void Map(int a, int b)
{
Color(0);
if (a == -1)
{
if (Boss == 1 || Boss == 6)
{
if (Bwhat1 == 5)
{
if (ti(Bx1) == 20)
Setpos(Bx1, By1), cout << "==";
else
Setpos(Bx1, By1), cout << " ";
}
else
{
Setpos(Bx1 - 1, By1 - 0.5), cout << " ";
Setpos(Bx1, By1 - 1), cout << " ";
Setpos(Bx1 + 1, By1 - 0.5), cout << " ";
if (abs(ti(Bx1) - 20) <= 1)
Setpos(20, By1 - 1), cout << "======";
}
}
if (Boss == 2 || Boss == 6)
{
Setpos(Bx2 - 1, By2 - 1);
cout << " ";
Setpos(Bx2, By2 - 1);
cout << " ";
Setpos(Bx2 + 1, By2 - 1), cout << " ";
Color(0);
if (abs(ti(Bx2) - 20) <= 1)
Setpos(20, By2 - 1), cout << "======";
}
if (Boss == 3 || Boss == 6)
{
Setpos(Bx3 - 1, By3 - 0.5);
cout << " ";
Setpos(Bx3, By3);
cout << " ";
Setpos(Bx3 + 1, By3 - 1), cout << " ";
Color(0);
if (abs(ti(Bx3) - 20) <= 1)
Setpos(20, By3 - 1), cout << "=======";
}
if (X < 0)
return;
if (X >= 17 && X <= 19)
{
Setpos(X - 1, Y);
cout << " ";
Setpos(X, Y - 1);
cout << " ";
Setpos(X + 1, Y - 1), cout << " ";
}
else if (X <= 23 && X >= 21)
{
Setpos(X + 1, Y);
cout << " ";
Setpos(X, Y - 1);
cout << " ";
Setpos(X - 1, Y - 1), cout << " ";
}
else if (X > 23)
{
Setpos(X, Y - 1);
cout << " ";
Setpos(X - 1, Y - 0.5), cout << " ";
}
else if (X < 17 && Upt != 0)
{
Setpos(X, Y - 1);
cout << " ";
Setpos(X + 1, Y - 1.5), cout << " ";
}
else if (X < 17)
{
Setpos(X, Y - 1);
cout << " ";
Setpos(X + 1, Y - 0.5), cout << " ";
}
if (Thun > 0)
{
Setpos(X - 2, Y - 1), cout << " ";
Setpos(X + 2, Y - 1), cout << " ";
Setpos(X, Y + 2), cout << " ";
Setpos(X, Y - 2.5), cout << " ";
Setpos(X - 1, Y + 1), cout << " ";
Setpos(X + 1, Y + 1), cout << " ";
Setpos(X - 1, Y - 2), cout << " ";
Setpos(X + 1, Y - 2), cout << " ";
Setpos(20, Y - 2.5), cout << "============";
}
if (Wind != 0)
{
Setpos(X + 1, Y - 5);
cout << " ";
Setpos(X, Y - 5);
cout << " ";
Setpos(X - 1, Y - 5);
cout << " ";
Setpos(20, Y - 5), cout << "========";
}
if (Water != 0)
{
Setpos(X, Y - 4);
cout << " ";
Setpos(X + 2, Y - 3.5);
cout << " ";
Setpos(X - 2, Y - 3.5);
cout << " ";
Setpos(X + 1, Y - 3.5);
cout << " ";
Setpos(X - 1, Y - 3.5);
cout << " ";
Setpos(20, Y - 5), cout << "========";
}
if (Fire != 0)
{
Setpos(X, Y + 1), cout << " ";
Setpos(X + 1, Y), cout << " ";
Setpos(X - 1, Y - 1), cout << " ";
Setpos(20, Y - 1);
cout << "======";
}
}
if (a == 0)
{
if (Boss == 1 || Boss == 6)
{
if (Bwhat1 == 5)
Color(5), Setpos(Bx1, By1), cout << "█", Color(0);
else if (Bwhat1 == 4 && Bgo1[1] > 6 && Bgo1[1] < 11)
Color(4), Setpos(Bgo1[5] - 1, Bgo1[6]), cout << "︻", Setpos(Bgo1[5], Bgo1[6] - 1), cout << "【", Setpos(Bgo1[5], Bgo1[6] + 1), cout << "】", Setpos(Bgo1[5] + 1, Bgo1[6]), cout << "︼", Color(0);
else
{
Setpos(Bx1 - 1, By1 - 0.5), Color(0), cout << "●●";
Setpos(Bx1, By1 - 1);
if (Bwhat1 == 2 && Bgo1[1] <= 5)
Color(1);
else if (Bwhat1 == 3 && Bgo1[1] <= 5)
Color(5);
else if (Bwhat1 == 6 && Bgo1[1] <= 5)
Color(8);
else
Color(4);
if (Bwhat1 == 4)
Setpos(Bx1, By1 - 0.5), cout << "██(";
else
cout << ")██(";
Setpos(Bx1 + 1, By1 - 0.5), cout << "……";
Color(0);
}
}
if (Boss == 2 || Boss == 6)
{
Setpos(Bx2 - 1, By2 - 1);
Color(0), cout << "\\ ";
Color(0);
cout << "●";
Setpos(Bx2, By2 - 1);
Color(3);
cout << "◥";
Color(5), cout << "JJJ";
Color(0), cout << ">";
Color(3);
Setpos(Bx2 + 1, By2 - 1), cout << "◢█◣";
Color(0);
}
if (Boss == 3 || Boss == 6)
{
Setpos(Bx3 - 1, By3 - 0.5);
if (Bwhat3 == 3 || Bwhat3 == 9)
Color(1);
else if (Bwhat3 == 4 || Bwhat3 == 10)
Color(4);
else if (Bwhat3 == 5 || Bwhat3 == 11)
Color(5);
if (Bwhat3 == 11)
cout << ' ';
else if (Bwhat3 == 6)
Color(3);
else
Color(2);
cout << "●-";
Setpos(Bx3, By3);
if (Bwhat3 == 11)
cout << "/";
else
cout << "┃";
Color(0);
Setpos(Bx3 + 1, By3 - 1), cout << "●●●";
}
if (X < 0)
return;
if (Ren == 2)
Color(12);
if (Ren == 3)
Color(1);
if (Ren == 4)
Color(3);
if (Ren == 5)
Color(4);
if (Ren == 6)
Color(2);
if (Drug != 0 && T % 5 != 0)
Color(11);
if (Drug != 0 && T % 5 == 0)
Color(11);
if (Ice != 0)
Color(6);
if (b == 1)
Color(8);
if (Li != 0)
Color(5);
if (Ren == 1 && Killb > 0 && T % 4 < 2)
Color(13);
if (Wind > 0 && T % 4 <= 1)
Color(1);
if (Wind > 0 && T % 4 >= 2)
Color(0);
if (Thun > 0 && T % 4 <= 1)
Color(1);
if (Thun > 0 && T % 4 >= 2)
Color(6);
if (X >= 17 && X <= 19)
{
Setpos(X - 1, Y);
cout << "●";
Setpos(X, Y - 1);
cout << "━/";
if (T % 10 < 3)
Setpos(X + 1, Y - 1), cout << "┛╲";
else if (T % 10 < 6)
Setpos(X + 1, Y - 1), cout << "┦ ";
else
Setpos(X + 1, Y - 1), cout << "╯>";
if (Wind > 0 && T % 3 == 0)
Setpos(X + 1, Y - 1), cout << "┛╲";
else if (Wind > 0 && T % 3 == 1)
Setpos(X + 1, Y - 1), cout << "┦ ";
else if (Wind > 0 && T % 3 == 2)
Setpos(X + 1, Y - 1), cout << "╯>";
}
else if (X <= 23 && X >= 21)
{
Setpos(X + 1, Y);
cout << "●";
Setpos(X, Y - 1);
cout << "━\\";
if (T % 10 < 3)
Setpos(X - 1, Y - 1), cout << "┓╱";
else if (T % 10 < 6)
Setpos(X - 1, Y - 1), cout << "┪ ";
else
Setpos(X - 1, Y - 1), cout << "╮>";
if (Wind > 0 && T % 3 == 0)
Setpos(X - 1, Y - 1), cout << "┓╱";
else if (Wind > 0 && T % 3 == 1)
Setpos(X - 1, Y - 1), cout << "┪ ";
else if (Wind > 0 && T % 3 == 2)
Setpos(X - 1, Y - 1), cout << "╮>";
}
else if (X > 23)
{
Setpos(X, Y - 1);
cout << "━ ●";
Setpos(X - 1, Y - 0.5), cout << "│>";
}
else if (X < 17 && Upt != 0)
{
Setpos(X, Y - 1);
cout << "━ ●";
Setpos(X + 1, Y - 1.5), cout << "╱ >";
}
else if (X < 17)
{
Setpos(X, Y - 1);
cout << "━ ●";
Setpos(X + 1, Y - 0.5), cout << "│>";
}
if (Thun > 0)
{
Setpos(X - 2, Y - 1), cout << "▄▄";
Setpos(X + 2, Y - 1), cout << "▄▄";
Setpos(X, Y + 2), cout << "▌";
Setpos(X, Y - 2.5), cout << "▌";
Setpos(X - 1, Y + 1), cout << "█";
Setpos(X + 1, Y + 1), cout << "█";
Setpos(X - 1, Y - 2), cout << "█";
Setpos(X + 1, Y - 2), cout << "█";
}
if (Magne > 0 && T % 7 < 2)
Setpos(X, Y), Color(5), cout << "★";
if (Wind > 1)
{
if (T % 6 < 2)
Color(1);
else
Color(0);
if (T % 8 <= 1)
{
Setpos(X + 1, Y - 5);
cout << "---- --";
Setpos(X, Y - 5);
cout << "- --- -";
Setpos(X - 1, Y - 5);
cout << "--- - --";
}
else if (T % 8 <= 3)
{
Setpos(X + 1, Y - 5);
cout << "------ ";
Setpos