猫史档案馆


怎么用c++做愤怒的小鸟

用户:专注肝帝专注肝帝查看:3 回复:4 评论:3 创建时间:2023-08-28T22:11:31


我目前会两种语言:python和c++。那今天就拿毕生所学教大家怎么做愤怒的小鸟。

首先,头文件:

#include <bits/stdc++.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>

不得不说,有点多。

由于今天写得有点多,便不一一介绍,开整!

using namespace std; const double pi = 3.1415926536; int toint (float a) { return ((int) (a * 10 + 5)) / 10; } void Color (int a) {     if (a == 0 || a == 14 || a == 20) {     SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); } else if (a == 1 || a == 12) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE); } else if (a == 2) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_GREEN); } else if (a == 3) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE); } else if (a == 4 || a == 11) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED); } else if (a == 5 || a == 13) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); } else if (a == 7) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_GREEN|FOREGROUND_BLUE); } else if (a == 15) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY); } else if (a == 16) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_GREEN); } else if (a == 17) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED); } else if (a == 8) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); } else if (a == 6) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE); } else if (a == 9) { SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN); } } void SetPos (float x, float y) {     int xx = toint (x), yy = toint (y);     COORD pos; pos.X = yy * 2; pos.Y = xx; SetConsoleCursorPosition (GetStdHandle (STD_OUTPUT_HANDLE), pos); } struct node {     int W, W2, S, mS;     float X, Y;     float 喵, vy;     float ax, ay;     bool go, boom; } blt[100001], pig[100001], boo[100001]; int T, yX, yY, Xy, put, K, K2, Sle, What; int Bot, Pit, Blt, Pig, Sco, pigk, scok; int m[41][41]; void Cout (int a, int x, int y) {     if (a == 1) {     SetPos (x, y); Color (5); cout << put << ' '; } if (y == 202) {         SetPos (pig[a].X, pig[a].Y); cout << ". ";         if ((pig[a].W == 2 || pig[a].W == 3) && pig[a].X >= 2) {         SetPos (pig[a].X - 2, pig[a].Y); cout << ". "; SetPos (pig[a].X - 1, pig[a].Y); cout << ". "; } else if (pig[a].W == 4) {         SetPos (pig[a].X, pig[a].Y - 1); cout << ". "; } else if(pig[a].W == 5) { SetPos (pig[a].X - 1, pig[a].Y); cout << ". "; SetPos (pig[a].X - 1, pig[a].Y - 1); cout << ". "; }     }     if (a == 2) {     for (int i = 0; i <= 40; i++) {     for (int j = 0; j <= 40; j++) {     if (i <= 18 && m[i][j] == 1) {     SetPos (i, j); Color (7); cout << "■"; } if (m[i][j] >= 2 && m[i][j] <= 19) { SetPos (i, j); Color (5); cout << "█"; m[i][j]++; } if (m[i][j] > 19 && m[i][j] <= 29) { SetPos (i, j); Color (0); cout << "█"; m[i][j]++; if (m[i][j] == 30) { SetPos (i, j); Color (0); cout << "  "; m[i][j] = 0; } if (m[i][j] >= 31 && m[i][j] <= 49) { SetPos (i, j); Color (0); cout << "■"; m[i][j]++; } if (m[i][j] == 50) { SetPos (i, j); Color (7); cout << "■"; m[i][j] = 1; } } } } }     if (y == 666) {         SetPos (blt[a].X, blt[a].Y);         Color (10 + blt[a].W); cout<<"●";     } Color (0); } void Go (int a) {     SetPos (blt[a].X, blt[a].Y); cout << "..";     blt[a].X += blt[a].喵 / 2; blt[a].Y += blt[a].vy / 2; blt[a].喵 += blt[a].ax / 2; blt[a].vy += blt[a].ay / 2;     if (blt[a].X >= 20) {     blt[a].X = 19; }     if (blt[a].X > 20 || blt[a].Y > 38 || blt[a].X < 0 || blt[a].Y <= 0) {     blt[a].go = 1; }     if (blt[a].W2 == 1 && blt[a].Y >= Xy) { blt[a].go = 1; Sle = 0;//地跑鸟 }     if (blt[a].W2 == 0) {         for (int i = 0; i <= blt[a].喵 / 2 + 1; i++) {             if (blt[a].喵 > 0 && m[toint (blt[a].X) + i][toint (blt[a].Y)] == 1) {                 if (blt[a].W != 5) {                 blt[a].boom = 1; }                 blt[a].X = toint (blt[a].X) + i - 1; blt[a].Y += blt[a].vy / 2; blt[a].喵 = -blt[a].喵 * 0.4; blt[a].vy = blt[a].vy * 0.8;                 if (blt[a].W == 3) {                 blt[a].ax = 0.5; } if (blt[a].W == 7) { blt[a].喵 *= 2; }                 if (blt[a].W == 10) {                 blt[a].go = 1; Bot++; boo[Bot].X = blt[a].X; boo[Bot].Y = blt[a].Y; boo[Bot].S = 1; boo[Bot].mS = 4; }             }             if (blt[a].喵 < 0 && m[toint (blt[a].X) - i][toint(blt[a].Y)] == 1) {                 if (blt[a].W != 5) {                 blt[a].boom = 1; }                 blt[a].X = toint (blt[a].X) + i + 1; blt[a].Y += blt[a].vy / 2; blt[a].喵 = -blt[a].喵; blt[a].vy=blt[a].vy * 0.8;                 if (blt[a].W == 3) {                 blt[a].ax = 0.5; } if (blt[a].W == 7) { blt[a].喵 *= 2; }                 if (blt[a].W == 10) {                 blt[a].go = 1; Bot++; boo[Bot].X = blt[a].X; boo[Bot].Y = blt[a].Y; boo[Bot].S = 1; boo[Bot].mS = 4; }             }         }         if (abs (blt[a].喵) <= 0.1 && abs (blt[a].vy) <= 0.1 && abs (blt[a].ay) <= 0.1) {             blt[a].go = 1;             if (blt[a].W == 5) {             Bot++; boo[Bot].X = blt[a].X; boo[Bot].Y = blt[a].Y; boo[Bot].S = 1; boo[Bot].mS = 4; blt[a].go = 1; }         }     }     if (blt[a].go == 0) {     Cout (a, 0, 666); } } void Kill (int a) {     if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {     Cout (a, 202, 202); pig[a].Y = 16; }     if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) {     pig[a].W = 1; }     int R = rand () % 50; Cout (a, 202, 202);     //清除猪猪     pig[a].X += pig[a].喵 / 2; pig[a].Y += pig[a].vy / 2; pig[a].喵 += pig[a].ax / 2; pig[a].vy += pig[a].ay / 2;     for (int i = -2; i <= pig[a].喵 / 2 + 1; i++) {         if (m[toint (pig[a].X) + i][toint (pig[a].Y)] == 1) {         pig[a].X = toint (pig[a].X) + i - 1; pig[a].Y += pig[a].vy / 2; pig[a].喵 = -pig[a].喵 * 0.5; pig[a].vy = pig[a].vy * 0.8; }     }     for (int i = Blt - 10; i <= Blt; i++) {         if (pig[a].W == 5 && blt[i].go == 0 && abs (pig[a].X - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) { m[toint (pig[a].X) - 1][toint (pig[a].Y)] = 2; pig[a].W2++; Sco += 2; break; }         if (pig[a].W == 5 && m[toint (pig[a].X)][toint (pig[a].Y)] >= 2 && m[toint (pig[a].X)][toint (pig[a].Y)] < 30) { m[toint (pig[a].X) - 1][toint (pig[a].Y)] = 2; pig[a].W2++; Sco += 2; break; }         if (blt[i].go == 0 && abs (pig[a].X - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) {             if (pig[a].W == 6) {             Bot++; boo[Bot].X = pig[a].X; boo[Bot].Y = pig[a].Y; boo[Bot].S = 1; boo[Bot].mS = 4; blt[i].go = 1; }             m[toint (pig[a].X)][toint (pig[a].Y)] = 2; pig[a].go = 1; Pig--; Sco+=10; break;         }         if (m[toint (pig[a].X)][toint (pig[a].Y)] >= 2 && m[toint (pig[a].X)][toint (pig[a].Y)] < 30) {             if (pig[a].W == 6) {             Bot++; boo[Bot].X = pig[a].X; boo[Bot].Y = pig[a].Y; boo[Bot].S = 1; boo[Bot].mS = 4; }             pig[a].go = 1; Pig--; Sco += 10; break;         }         if ((pig[a].W == 2 || pig[a].W == 3) && blt[i].go == 0 && abs (pig[a].X - 2 - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) { m[toint (pig[a].X)][toint (pig[a].Y)] = 2; pig[a].go = 1; Pig--; Sco += 10; break; }         if ((pig[a].W == 2 || pig[a].W == 3) && m[toint (pig[a].X - 2)][toint (pig[a].Y)] >= 2 && m[toint (pig[a].X - 2)][toint (pig[a].Y)] < 30) { pig[a].go = 1; Pig--; Sco += 10; break; }     }     //喵猪猪     if (pig[a].go == 0) {         if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {         Cout (a, 202, 202); pig[a].Y = 16; }         if (pig[a].go == 0 && pig[a].W == 4 &&pig[a].Y < 20) {         pig[a].W = 1; }         int Xx = toint (pig[a].X), Xy = toint (pig[a].Y);         if (pig[a].W == 6) {         SetPos (pig[a].X, pig[a].Y); Color (9); cout << "TN"; Color (0); } else {         SetPos (pig[a].X, pig[a].Y); Color (2); cout << "●";         if ((pig[a].W == 2 || pig[a].W == 3) && pig[a].X >= 2) {         SetPos (pig[a].X - 2, pig[a].Y); Color (0); cout << "○"; SetPos (pig[a].X - 1, pig[a].Y); cout << "|"; } else if (pig[a].W == 4) { SetPos (pig[a].X, pig[a].Y - 1); Color (2); cout << "﹃"; } else if (pig[a].W == 5) {             SetPos (pig[a].X - 1, pig[a].Y); Color (8); SetPos (pig[a].X - 1, pig[a].Y - 1); cout << "▁";             if (pig[a].W2 == 0) {             cout << "▅"; } else if (pig[a].W2 == 1) { cout << "▃"; } else if (pig[a].W2 == 2) { cout << "▂"; } else if (pig[a].W2 == 3) { pig[a].W = 1; pig[a].W2 = 0; SetPos (pig[a].X - 1, pig[a].Y - 1); cout << "  "; }         }         }         //输出猪猪         if (pig[a].W == 2 && pig[a].X > pig[a].S) {         pig[a].W = 3; pig[a].ax = -0.4; pig[a].喵 = 1.5; } else if (pig[a].W == 3 && pig[a].X <= pig[a].S) { pig[a].W = 2; pig[a].ax = 0.4; pig[a].喵 = -1.5; }         if ((pig[a].W == 2 || pig[a].W == 3) && (pig[a].Y <= 10 || pig[a].Y >= 38)) {         pig[a].vy *= -1; }         if (pig[a].W == 4 && R == 0 && pig[a].X == 20) {         pig[a].喵 = -((rand () % 40) / 10); }         if(pig[a].W == 4) {             int r = rand () % 20;             for (int i = Blt - 10; i <= Blt; i++) {             if (r <= 5 && blt[i].go == 0 && pig[a].Y - blt[i].Y <= 5 && abs (blt[i].X - pig[a].X) <= 1.5 && r < 5) { r = 0; break; } }             if (r == 0) {                 m[toint (pig[a].X)][toint (pig[a].Y) - 2] = 10; m[toint (pig[a].X)][toint (pig[a].Y) - 3] = 2;                 for (int j = toint (pig[a].Y) - 1; j >= toint (pig[a].Y) - 5; j--) {                     for (int i = Blt - 10; i <= Blt; i++) {                     if (blt[i].go == 0 && !(blt[i].W == 3 && blt[i].boom == 1) && blt[i].W2 == 0 && toint (blt[i].Y) == j && abs (blt[i].X - pig[a].X) <= 2) { blt[i].vy = -2; } }                     for (int i = Pit - 50; i <= Pit; i++) {                     if (pig[i].go == 0 && toint (pig[i].Y) == j && abs (pig[i].X - pig[a].X) <= 2) {                     pig[i].vy = -1; } }                 }             }         }         //移动猪猪         if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {         Cout (a, 202, 202); pig[a].Y = 16; }         if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) { pig[a].W = 1; }         if (pig[a].X > 20 || pig[a].Y > 38 || pig[a].X < 0 || pig[a].Y <= 0) {         pig[a].go = 1; Pig--; Cout (a, 202, 202); }         //清除猪猪     } } void Creat (int a, int p) {     if (a == -1 && p == -1) {         Blt++; blt[Blt].W = What; blt[Blt].W2 = 1;         blt[Blt].vy = 1; blt[Blt].X = 19; blt[Blt].Y = 0; blt[Blt].boom = 1;     } else if (a == 0 && p == -1) {         int u = rand () % 7 + 1, U = rand() % 30;         if (u >= 5) {         Pit++; pig[Pit].Y = rand () % 15 + 20; pig[Pit].X = 2; pig[Pit].ax = 0.5; pig[Pit].W = 1; } else if (u == 1) { Pit++; pig[Pit].Y = rand () % 15 + 20; pig[Pit].X = 2; pig[Pit].vy = 0.5; pig[Pit].ax = 0.5; pig[Pit].S = rand () % 5 + 7; pig[Pit].W = 2; } else if (u == 2) { Pit++; pig[Pit].Y = rand () % 15 + 20; pig[Pit].X = 2; pig[Pit].ax = 0.5; pig[Pit].W = 4; } else if (u == 3) { Pit++; pig[Pit].Y = rand () % 15 + 20; pig[Pit].X = 2; pig[Pit].ax = 0.5; pig[Pit].W = 5; } else if (u == 4) { Pit++; pig[Pit].Y = rand () % 15 + 20; pig[Pit].X = 2; pig[Pit].ax = 0.5; pig[Pit].W = 6; }         if (U == 1) {         Bot++; boo[Bot].Y = rand () % 13 + 15; boo[Bot].X = (rand () % 4) * 3 + 8; boo[Bot].S = 0; boo[Bot].mS = rand () % 2 + 2; boo[Bot].W2 = 1; }     } else {         Blt++; blt[Blt].W = What;         if (a == 1) { blt[Blt].X = yX; blt[Blt].Y = yY; blt[Blt].ax = 0.5; //抛物线 }         blt[Blt].喵 = -3.5 * sin (p * pi / 180);         blt[Blt].vy = 3 * cos (p * pi / 180);         if (p <= 45) {         blt[Blt].vy *= 1 + (0.33 - 0.01 * (45 - p)); }         if (p >= 45) {         blt[Blt].vy *= 1 + (0.33 - 0.01 * (p - 45)); }         if (blt[Blt].W == 6) {         blt[Blt].vy *= 1.2; blt[Blt].ax = 0.4; }     } } void Boom (int a) {     if (boo[a].W2 == 0) {         int ms = boo[a].mS, s = boo[a].S, x = boo[a].X, y = boo[a].Y;         if (s == ms) {         return ; }         for (int i = x - s; i <= x + s; i++) {         for (int j = y - s; j <= y + s; j++) {         float k = (i - x) * (i - x) + (j - y) * (j - y) - s * s;             if (k <= s && k >= -s && i <= 20 && j <= 38 && i >= 0 && j > 0 && m[i][j] != 1) {             m[i][j] = 2; } } }         boo[a].S++;     }     if (boo[a].W2 == 1) {         int ms = boo[a].mS, s = boo[a].S, x = boo[a].X, y = boo[a].Y;         if (s == ms) {         return ; }         if (y - s > 10) {         m[x][y-s] = 31 - 31 * (boo[a].W2 - 1); }         if (y + s < 40) {         m[x][y+s] = 31 - 31 * (boo[a].W2 - 1); }         boo[a].S++;     } } void Move (int a) {     Color (5);     if (a == -2) {     SetPos (17, Xy); cout << "        "; SetPos (18, Xy); cout << "        "; SetPos (19, Xy); cout << "        "; SetPos (20, Xy); cout << "       "; }     if (a == -1) {     SetPos (17, Xy); cout << "        "; SetPos (18, Xy); cout << "  ┃  ┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); cout << "     ▏"; }     if (a == 0) {     SetPos (18, Xy); cout << "  ┃"; Color (What + 10); cout << "●"; Color (5); cout << "┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); cout << "     ▏"; }     if (a == 1) {     SetPos (18, Xy); cout << "  "; Color (What + 10); cout << "●"; Color (5); cout << "  ┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); cout << "     ▏"; }     if (a == 2) {     SetPos (18, Xy); Color (What + 10); cout << "●"; Color (5); cout << "┃  ┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); cout << "     ▏"; }     if (a == 3) {     SetPos (18, Xy); cout << "  ┃  ┃"; SetPos (19, Xy); Color (What + 10); cout << "●"; Color (5); cout << "╰┳╯"; SetPos (20, Xy); cout << "     ▏"; }     if (a == 4) {     SetPos (18, Xy); cout << "  ┃  ┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); Color (What + 10); cout << "●"; Color (5); cout << "   ▏"; }     if (a == 5) {     SetPos (18, Xy); cout << "  ┃  ┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); cout << "  "; Color (What + 10); cout << "●"; Color (5); cout << " ▏"; }     if (a == 6) {     SetPos (18, Xy); cout << "  ┃  ┃"; SetPos (19, Xy); cout << "  ╰┳╯"; SetPos (20, Xy); cout << "    "; Color (What + 10); cout << "●"; Color (5); cout << " "; }     Color (0); } void Start () {     char g; Color (5); system ("cls");     SetPos (1, 1); cout << "------- 愤 怒 的 小 鸟 -------"; Color (0);     SetPos (3, 1); cout << "空格瞄准,按X触发小鸟技能,←→移动弹弓";     SetPos (5, 1); cout << "猪猪技能自动触发,空中会有墙出现。";     SetPos (7, 1); cout << "危险值由命中率,猪的存活时间计算!";     SetPos (9, 1); cout << "危险值点满后失败!1500分通关!";     SetPos (1, 20); cout << "-------- 小 鸟 技 能 --------";     SetPos (3, 20); Color (11); cout << "●"; Color (0); cout << ":无技能";     SetPos (5, 20); Color (12); cout << "●"; Color (0); cout << ":分身!不同分身初速度大小相同,";     SetPos(6,20);cout<<"        方向不同。";     SetPos (7, 20); Color (13); cout << "●"; Color (0); cout << ":加速!以当前速度做匀速直线运动,";     SetPos (8, 20); cout << "          且免疫狙击猪的冲击。";     SetPos (9, 20); Color (14); cout << "●"; Color (0); cout << ":投蛋!并获得向上速度做匀速直线";     SetPos (10, 20); cout << "          运动,快达可以穿墙。";     SetPos (11, 20); Color (15); cout << "●"; Color (0); cout << ":爆炸!";     SetPos (13, 20); Color (16); cout << "●"; Color (0); cout << ":回旋!开始做向左加速运动!发射";     SetPos (14, 20); cout << "          时获得双倍水平速度。";     SetPos (15, 20); Color (17); cout << "●"; Color (0); cout << ":[被动] 弹跳力为普通鸟三倍。发射";     SetPos (16, 20); cout << "          时获得1.5倍水平、竖直速度。";     SetPos (11, 1); cout << "-------- 猪 猪 技 能 --------";     SetPos (13, 2); Color (2); cout << "●"; Color (0); cout << ":无技能";     SetPos (14, 1); Color (8); cout << "▁▅";     SetPos (15, 2); Color (2); cout << "●"; Color (0); cout << ":防御力为普通猪三倍";     SetPos (16, 2); cout << "○";     SetPos (17, 2); cout << "│:做空中简谐运动,受喵范围";     SetPos (18, 2); Color (2); cout << "●"; Color (0); cout << "  为普通猪两倍。";     SetPos (19, 2); cout << "    有几率跳起或发射冲击波,冲";     SetPos (20, 1); Color (2); cout << "﹃●"; Color (0); cout << ":开小鸟与同类,可以引爆TNT!";     SetPos (18, 20); Color (5); cout << "按 y 开始游戏!"; A: if (kbhit ()) { g = _getch (); }     if(g != 'y') { goto A; } } int main () {     system ("mode con cols=79 lines=22");     CONSOLE_CURSOR_INFO cursor_info = {1, 0};     SetConsoleCursorInfo (GetStdHandle (STD_OUTPUT_HANDLE), &cursor_info);     srand ((unsigned)time(NULL)); St:Start (); system ("cls");     memset (blt, 0, sizeof (blt)); memset (pig, 0, sizeof (pig));     memset (boo, 0, sizeof (boo)); memset (m, 0, sizeof (m));     T = put = K = K2 = Sle = What = Pig = Sco = 0; pigk = scok = -1;     Xy = 4; yX = 18; yY = 6; Blt = 20; Bot = 20; Pit = 60; Color (7);     SetPos (19, 14); cout << "■";     SetPos (20, 13); cout << " █▍"; m[19][14] = m[20][13] = m[20][14] = 1;     SetPos (21, 0); for (int i = 0; i < 39; i++) { cout << "■"; m[21][i] = 1; }     Color (0); What = rand () % 5 + 1;     while (1) {         if (Sco >= 1500) {         break; }         T++; K = 0; Color (0);         if (Sco != scok) {         SetPos (1, 1); cout << "分数:" << Sco << ' '; }         if (Pig != pigk) { SetPos (3, 1); cout << "危险值:"; int aa = min (Sco / 100, 10); Pig += aa;         SetPos (3, 5); if (Pig <= 2) { Color (2); } else if (Pig <= 4) { Color (16); } else if (Pig <= 6) { Color (7); } else if (Pig <= 9) { Color (6); } else if (Pig <= 12) { Color (3); } else if (Pig <= 15) { Color (17); } else { Color (11); }         for (int i = 1; i <= Pig; i++) {         cout << "■"; } Color (0); cout << ' ' << Pig; for (int i = 1; i <= 5; i++) { cout << "  "; }         if (Pig > 18) {         break; } Pig -= aa; }         scok = Sco; pigk = Pig;         if (GetAsyncKeyState (VK_LEFT)&0x8000 && Xy > 0) {         Move (-2); Xy--; K = 1; }         if (GetAsyncKeyState (VK_RIGHT)&0x8000 && Xy < 10) {         Move (-2); Xy++; K = 1; }         if (K == 1) {             if (put == 0 && Sle == 0) {             Move (0); } else { Move (-1); }         }         if (kbhit ()) {             char g = _getch ();             if (g == 'x' || g == 'X') {                 for (int i = Blt - 10; i <= Blt; i++) {                 if (blt[i].go == 0 && blt[i].boom == 0 && blt[i].W != 1 && blt[i].W != 7) {                 blt[i].boom = 1;                     if (blt[i].W == 2) {                         Blt++; blt[Blt].W = 2; blt[Blt].vy = blt[i].vy * 1.2; blt[Blt].喵 = blt[i].喵 + 1;                         blt[Blt].ax = blt[i].ax; blt[Blt].X = blt[i].X; blt[Blt].Y = blt[i].Y; blt[Blt].boom = 1;                         Blt++; blt[Blt].W = 2; blt[Blt].vy = blt[i].vy * 0.7; blt[Blt].喵 = blt[i].喵 - 1;                         blt[Blt].ax = blt[i].ax; blt[Blt].X = blt[i].X; blt[Blt].Y = blt[i].Y; blt[Blt].boom = 1;                     }                     if (blt[i].W == 3) {                     blt[i].vy = fmax (blt[i].vy * 1.5, 2.5); blt[Blt].喵++; blt[i].ax = 0; }                     if (blt[i].W == 4) {                         blt[i].喵 = -3; blt[i].ax = 0.1; Blt++; blt[Blt].boom = 1; blt[Blt].W = 10;                         blt[Blt].X = blt[i].X; blt[Blt].Y = blt[i].Y; blt[Blt].ax = blt[i].ax; blt[Blt].喵 = 1;                     }                     if (blt[i].W == 5) {                     Bot++; boo[Bot].X = blt[i].X; boo[Bot].Y = blt[i].Y; boo[Bot].S = 1; boo[Bot].mS = 5; blt[i].go = 1; }                     if (blt[i].W == 6) {                     blt[i].ay = -1; blt[i].ax = 0.3; blt[i].喵 = min (blt[i].喵 / 2, (float)0); }                     break; } }             }         }         if (GetAsyncKeyState (' ')&0x8000 && K == 0 && Sle == 0) {             if (put <= 5) {             Move (1); yX = 18; yY = Xy + 1; } else if (put <= 20) { Move (2); yX = 18; yY = Xy; } else if (put <= 40) { Move (3); yX = 19; yY = Xy; } else if (put <= 60) { Move (4); yX = 20; yY = Xy; } else if (put <= 80) {             Move (5); yX = 20; yY = Xy + 1; } else { Move (6); yX = 20; yY = Xy + 2; }             if (put == 0) {             K2 = 1; } if (put == 90) { K2 = -1; }             if (K2 == 1) {             put += min (rand () % 7 + 1, 90 - put); }             if (K2 == -1) {             put-=min(rand()%7+1,put); }             Cout (1, 17, Xy + 2);         }         if ((!(GetAsyncKeyState (' ')&0x8000) && (put != 0)) || (put != 0 && K == 1)) {         Move (-1); Creat (1, put); put = 0; yX = 18; yY = 5; Sle = 1; What = rand () % 7 + 1; Creat (-1, -1); Sco = max (Sco - 5, 0); }         for (int i = Blt - 10; i <= Blt; i++) {         if (blt[i].go == 0) {         Go (i); } }         for (int i = Bot - 10; i <= Bot; i++) {         if (boo[i].go == 0) {         Boom (i); Cout (2, 0, 0); } }         for (int i = Pit - 50; i <= Pit; i++) {         if (pig[i].go == 0) {         Kill (i); } }         if (Sle != 0) {         Move (-1); } else if (put == 0) { Move (0); }         if (T % 300 == 0) {         system ("cls"); pigk = scok = -1; }         if (T % 100 == 0) {             Color (7);             for (int i = 0; i <= 18; i++) {             for (int j = 0; j <= 40; j++) {             if (m[i][j] == 1 && T % 100 == 0) {             SetPos (i, j); cout << "■"; } } }             SetPos (19, 14); cout << "■"; SetPos (20, 13); cout <<" █▍";             SetPos (21, 0); for (int i = 0; i < 39; i++) { cout << "■"; Color (0); }         }         if (T % min (50, (2000 - Sco) / 30) == 0) {         Pig++; Creat (0, -1); }         Sleep (15);     }     if (Sco < 500) { if (MessageBox (NULL, "很遗憾,您输了,您还想再来一次吗?", "温馨提示", MB_YESNO) == IDYES) { goto St; } else { return 0; } } else { if (MessageBox (NULL, "恭喜您赢了!您还想再来一次吗?", "温馨提示", MB_YESNO) == IDYES) { goto St; } else { return 0; } }     return 0; }   这不是正版,搜瑞……


回复

上一页1 页 / 共 1下一页
扫厕所地方军阀111扫厕所地方军阀111

眼花缭乱,但把缩进整理好效果还是很不错的

点赞0


评论


underlineunderline

加了万能头就不用再加stdio, time了

点赞0


评论


underlineunderline

《喵》

点赞0


评论


underlineunderline

你可以简化输出颜色的代码

#include<bits/stdc++.h>
#include<windows.h>
void rgb_init(){
	HANDLE hin=GetStdHandle(STD_INPUT_HANDLE);
	HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
	DWORD dwinmode,dwoutmode;
	GetConsoleMode(hin,&dwinmode);
	GetConsoleMode(hout,&dwoutmode);
	dwinmode|=0x0200;
	dwoutmode|=0x0004;
	SetConsoleMode(hin,dwinmode);
	SetConsoleMode(hout,dwoutmode);
}
void rgb_set(int wr=192,int wg=192,int wb=192,int br=12,int bg=12,int bb=12){
	printf("\033[38;2;%d;%d;%dm\033[48;2;%d;%d;%dm",wr,wg,wb,br,bg,bb);
}
//rgb_set(255,255,0,12,12,12)
//cout<<"◌";

点赞0


评论