• 个人简介

    [鼠标放这有惊喜]

    打发时间神器 ∽ Mikutap打发时间神器 ∽ Mikutap [戏弄你的同学/教练/老师/家长 ∽ 记得全屏​】(http://fakeupdate.net/)

    generals ∽ 没智商不要玩generals ∽ 没智商不要玩

    yorg ∽ 超级好玩的塔防游戏yorg ∽ 超级好玩的塔防游戏

    OI歌 ∽ 刷题时可以听听OI歌** ∽ 刷题时可以听听​**

    测手速 ∽ 看看你单身几年测手速看看你单身几年

    因式分解工具 ∽ 作弊工具!因式分解工具 ∽ **作弊工具!**​

    MC成就生成器 ∽ 生成属于你的成就MC成就生成器** ∽ 生成属于你的成就​**

    文章生成器 ∽ 不要轻易尝试文章生成器不要轻易尝试

    诗歌生成器 ∽ 九歌诗歌生成器九歌 小鸡词典**​](https://jikipedia.com/) #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 vx, 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].vx / 2;
    
    blt[a].Y += blt[a].vy / 2;
    
    blt[a].vx += 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].vx / 2 + 1; i++) {
    
    		if (blt[a].vx > 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].vx = -blt[a].vx * 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].vx *= 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].vx < 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].vx = -blt[a].vx;
    
    			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].vx *= 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].vx) <= 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].vx / 2;
    
    pig[a].Y += pig[a].vy / 2;
    
    pig[a].vx += pig[a].ax / 2;
    
    pig[a].vy += pig[a].ay / 2;
    
    for (int i = -2; i <= pig[a].vx / 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].vx = -pig[a].vx * 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].vx = 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].vx = -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].vx = -((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].vx = -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].vx = blt[i].vx + 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].vx = blt[i].vx - 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].vx++;
    
    						blt[i].ax = 0;
    
    					}
    
    					if (blt[i].W == 4) {
    
    						blt[i].vx = -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].vx = 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].vx = min (blt[i].vx / 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 (30);
    
    }
    
    if (Sco < 1500) {
    
    	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;
    

    }

  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.
  • 最近编写的题解

    This person is lazy and didn't write any solutions.

题目标签

2021
2
CSP-J
2
聪明人游戏
2
cspj 2021
1
深搜 广搜
1
广搜
1