首页 > 其他分享 >炸弹人

炸弹人

时间:2023-08-07 19:11:52浏览次数:32  
标签:cout int Zb SetPos 炸弹 Color &&

```cpp
#include <bits/stdc++.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;
int m[10001][21];

struct node {
int xx, yy, Zhong, rr, mr;
} B[100001];
int K, X, Y, tX, tY, tY2, tT, Er, T, Yb, Zb, Win, Blood, Score, Kb;

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);
if (a == 8)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
if (a == 9)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | BACKGROUND_INTENSITY | BACKGROUND_RED);
if (a == 10)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE | BACKGROUND_INTENSITY | BACKGROUND_BLUE);
}

void SetPos(int x, int y) {
COORD pos;
pos.X = y * 2 - 1, pos.Y = x + 1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

void Zha(int x, int y) {
Zb++;
int k1 = rand() % 2 + 2, k2 = rand() % 3 + 2, r = rand() % 6;
if (r == 0)
B[Zb].xx = x - K, B[Zb].yy = y, B[Zb].Zhong = 1, B[Zb].rr = 0, B[Zb].mr = k1 * 2;
if (r == 1)
B[Zb].xx = x - K, B[Zb].yy = y, B[Zb].Zhong = 2;
if (r == 2)
B[Zb].xx = x - K, B[Zb].yy = y, B[Zb].Zhong = 3, B[Zb].rr = k2, B[Zb].mr = k1;
if (r == 3)
B[Zb].xx = x - K, B[Zb].yy = y, B[Zb].Zhong = 4;
if (r == 4)
B[Zb].xx = x - K, B[Zb].yy = y, B[Zb].Zhong = 5, B[Zb].rr = 1, B[Zb].mr = k2 * 2;
if (r == 5)
B[Zb].xx = x - K, B[Zb].yy = y, B[Zb].Zhong = rand() % 2 + 6, B[Zb].rr = k1 + 1, B[Zb].mr = k2 + 3;
}

void Cout(int i, int j, int a) {
int R = rand() % 500, jk = 0;
if (i - K >= 0 && i - K <= 1 && j >= 2 && j <= 6)
return;
if (a != 4) {
if (m[i][j] == 0 && (a == 0 || a == 3))
SetPos(i - K, j), Color(7), cout << "■";
if (m[i][j] == 1 && a == 5)
SetPos(i - K, j), Color(0), cout << " "; //空气
if (m[i][j] == 2)
SetPos(i - K, j), Color(8), cout << "■";
if (m[i][j] >= 3 && m[i][j] < 6)
SetPos(i - K, j), Color(5), cout << "█", m[i][j]++;
if (m[i][j] == 6 && a != 5)
SetPos(i - K, j), cout << " ", m[i][j] = 1;
if (m[i][j] == 7)
SetPos(i - K, j), Color(9), cout << "~ ";
if (m[i][j] == 8)
SetPos(i - K, j), Color(10), cout << "~ ";
if (m[i][j] == 9)
SetPos(i - K, j), Color(3), cout << "◆";
if ((m[i][j] == 1 || m[i][j] == 8) && m[i - 1][j] >= 10 && m[i - 1][j] <= 30 && a != 5) {
int M = m[i][j]; //炸弹下落
m[i][j] = m[i - 1][j], m[i - 1][j] = M;
if (M == 1)
SetPos(i - K - 1, j), cout << " ";
}
if (m[i][j] == 1 && m[i - 1][j] == 9 && a != 5) {
m[i][j] = 9, m[i - 1][j] = 1, SetPos(i - K - 1, j), Color(0), cout << " "; //宝石下落
jk = 1;
}
if (m[i][j] >= 10 && m[i][j] <= 30) {
m[i][j]++; //炸弹计时
if (m[i][j] % 3 == 0)
Color(4);
else
Color(5);
SetPos(i - K, j), cout << "●";
}
if (m[i][j] == 1 && m[i - 1][j] == 7 && a != 5) {
m[i][j] = 7, m[i - 1][j] = 1, SetPos(i - K - 1, j), Color(0), cout << " "; //岩浆下落
jk = 1;
}
if (m[i][j] == 0 && m[i - 1][j] == 7 && R <= 2)
m[i][j] = m[i - 1][j], m[i - 1][j] = 1, SetPos(i - K - 1, j), cout << " "; //岩浆融解
if (m[i][j] == 7 && R > 2 && R <= 5) {
int r = rand() % 3 - 1; //岩浆扩散
if (m[i][j + r] == 1)
m[i][j + r] = m[i][j];
if (m[i][j + r] == 8)
m[i][j + r] = 2;
}
if (R < 50 && R >= 20 && m[i + 1][j + 1] == 1 && m[i + 1][j] == 8 && m[i][j] == 8)
m[i + 1][j + 1] = 8, m[i][j] = 1, SetPos(i - K, j), Color(0), cout << " ";
if (R < 80 && R >= 50 && m[i + 1][j - 1] == 1 && m[i + 1][j] == 8 && m[i][j] == 8)
m[i + 1][j - 1] = 8, m[i][j] = 1, SetPos(i - K, j), Color(0), cout << " "; //岩浆平面
if (m[i][j] == 1 && m[i - 1][j] == 8 && a != 5) {
m[i][j] = 8, m[i - 1][j] = 1, SetPos(i - K - 1, j), Color(0), cout << " "; //水下落
jk = 1;
}
if (m[i + 1][j + 1] == 1 && m[i + 1][j] == 8 && m[i][j] == 8)
m[i + 1][j + 1] = 8, m[i][j] = 1, SetPos(i - K, j), Color(0), cout << " ";
if (m[i + 1][j - 1] == 1 && m[i + 1][j] == 8 && m[i][j] == 8)
m[i + 1][j - 1] = 8, m[i][j] = 1, SetPos(i - K, j), Color(0), cout << " "; //水平面
if ((m[i + 1][j] == 8 && m[i][j] == 7) || (m[i + 1][j] == 7 && m[i][j] == 8))
m[i][j] = 2, m[i - 1][j] = 1, SetPos(i - K - 1, j), Color(0), cout << " "; //变石头
if (m[i][j] == 0 && m[i - 1][j] == 8 && R > 5 && R <= 7)
m[i][j] = m[i - 1][j], m[i - 1][j] = 1, SetPos(i - K - 1, j), cout << " "; //水融解
if (m[i][j] == 8 && R > 7 && R <= 9) {
int r = rand() % 3 - 1; //水扩散
if (m[i][j + r] == 1)
m[i][j + r] = m[i][j];
if (m[i][j + r] == 7)
m[i][j + r] = 2;
}
if (m[i][j] == 31)
SetPos(i - K, j), cout << " ", Zha(i, j);
} else if (a != 5) { //界外
if (m[i][j] >= 3 && m[i][j] < 6)
m[i][j]++;
if (m[i][j] == 6)
m[i][j] = 1;
if ((m[i][j] == 1 || (m[i][j] >= 3 && m[i][j] <= 6)) && m[i - 1][j] >= 10 && m[i - 1][j] <= 30)
m[i][j] = m[i - 1][j], m[i - 1][j] = 1; //炸弹下落
if (m[i][j] >= 10 && m[i][j] <= 30)
m[i][j]++;//炸弹计时
if (m[i][j] == 1 && m[i - 1][j] == 9)
m[i][j] = 9, m[i - 1][j] = 1; //宝石下落
if (m[i][j] == 1 && m[i - 1][j] == 7)
m[i][j] = 7, m[i - 1][j] = 1; //岩浆下落
if (m[i][j] == 1 && m[i - 1][j] == 8)
m[i][j] = 8, m[i - 1][j] = 1; //水下落
}
if (jk == 1)
jk = 0, Cout(i, j, 5);
Color(0);
}
void Map(int a);

void Wo() {
SetPos(X - K, Y), cout << " "; //清除上一次残影
if (m[X][Y] == 9)
Blood++, Score += 5, m[X][Y] = 1, system("color 2F"), Sleep(50), system("color 0F"), Map(3);
if (tX != 0 && (m[X - 1][Y] == 1 || m[X - 1][Y] == 7 || m[X - 1][Y] == 8 || m[X - 1][Y] == 9 || (m[X - 1][Y] >= 3
&& m[X - 1][Y] <= 6)))
tX--, X -= 2; //上跳
if (m[X + 1][Y] == 1 || (m[X + 1][Y] >= 3 && m[X + 1][Y] <= 6) || m[X + 1][Y] == 7 || m[X + 1][Y] == 8
|| m[X + 1][Y] == 9)
X++; //掉落
if (m[X + 1][Y] == 0 || m[X + 1][Y] == 2 || (m[X + 1][Y] >= 3 && m[X + 1][Y] <= 6))
tX = Er = 0; //跳跃次数清零
if (m[X - 1][Y] == 0 || m[X - 1][Y] == 2 || (m[X - 1][Y] >= 10 && m[X - 1][Y] <= 31))
tX = Er = 0; //跳跃次数清零
if (X <= K)
tX = Er = 0, X = K;
if (X >= K + 28)
X = K + 28, Kb = 1; //高度上下限
if (m[X][Y] == 7)
m[X - 1][Y] = m[X - 2][Y] = 1, tX += 8;
if (m[X][Y] != 1 && m[X][Y] != 8 && m[X][Y] != 9)
Blood--, m[X][Y] = 1, system("color 4F"), Sleep(50), system("color 0F"), Map(3);
if (Blood <= 0)
Win = -1;
SetPos(X - K, Y), Color(1), cout << "●";
}

void Map(int a) {
SetPos(0, 2);
cout << "生命 :" << Blood << " ";
SetPos(1, 2);
cout << "得分 :" << Score << " ";
if (a == 3)
system("cls");
for (int i = K + 28; i >= K; i--)
for (int j = 1; j <= 20; j++)
Cout(i, j, a);
for (int i = K + 33; i > K + 28; i--)
for (int j = 1; j <= 20; j++)
Cout(i, j, 4);
if (a != 3)
Wo();
}

void CircleBomb(int x, int y, int s, int ms) {
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 && j > 0 && j <= 20 && m[i + K][j] != 2 && m[i + K][j] != 9)
m[i + K][j] = 3;
}
Zb++;
B[Zb].xx = x, B[Zb].yy = y, B[Zb].Zhong = 1, B[Zb].rr = s + 1, B[Zb].mr = ms;
Sleep(30);
}

void LineBomb(int i, int j) {
for (int k = 0; j + k <= 20; k++)
if (m[i + K][j + k] != 2 && m[i + K][j + k] != 9)
m[i + K][j + k] = 3;
for (int k = 0; j + k <= 20; k++)
if (m[i + K + 1][j + k] != 2 && m[i + K + 1][j + k] != 9)
m[i + K + 1][j + k] = 3;
for (int k = 0; j - k > 0; k++)
if (m[i + K][j - k] != 2 && m[i + K][j - k] != 9)
m[i + K][j - k] = 3;
for (int k = 0; j - k > 0; k++)
if (m[i + K + 1][j - k] != 2 && m[i + K + 1][j - k] != 9)
m[i + K + 1][j - k] = 3;
}

void ZuanBomb(int i, int j) {
int k;
for (k = 0; m[i + K + k][j] != 2 && k <= 7; k++)
if (m[i + K + k][j] != 9)
m[i + K + k][j] = 3;
int k1 = rand() % 2 + 2;
Zb++;
B[Zb].xx = i + k, B[Zb].yy = j, B[Zb].Zhong = 1, B[Zb].rr = 0, B[Zb].mr = k1 * 3 / 2;
}

void TrigleBomb(int i, int j, int r, int mr) {
if (r == mr)
return;
if (r == 1)
m[i + K][j] = 3, i++;
for (int k = max(0, j - r); k <= min(20, j + r); k++)
if (m[i + K][k] != 2 && m[i + K][k] != 9)
m[i + K][k] = 3;
Zb++;
B[Zb].xx = i + 1, B[Zb].yy = j, B[Zb].Zhong = 5, B[Zb].rr = r + 1, B[Zb].mr = mr;
}

void GunBomb(int i, int j, int r, int mr) {
if (mr <= 0)
return;
Zb++;
B[Zb].xx = i, B[Zb].yy = j + 2, B[Zb].Zhong = 6, B[Zb].rr = r, B[Zb].mr = mr - 1;
Zb++;
B[Zb].xx = i, B[Zb].yy = j, B[Zb].Zhong = 1, B[Zb].rr = r - 1, B[Zb].mr = r;
}

void GunBomb2(int i, int j, int r, int mr) {
if (mr <= 0)
return;
Zb++;
B[Zb].xx = i, B[Zb].yy = j - 2, B[Zb].Zhong = 7, B[Zb].rr = r, B[Zb].mr = mr - 1;
Zb++;
B[Zb].xx = i, B[Zb].yy = j, B[Zb].Zhong = 1, B[Zb].rr = r - 1, B[Zb].mr = r;
}

void ThreeBomb(int x, int y, int s, int ms) {
for (int i = 1; i <= 3; i++) {
int Xx = rand() % (2 * s + 1) - s, Yy = rand() % (2 * s + 1) - s;
Zb++;
B[Zb].xx = Xx + x, B[Zb].yy = Yy + y, B[Zb].Zhong = 1, B[Zb].rr = 0, B[Zb].mr = ms + rand() % 3 - 1;
}
}

void Sheng(int a) {
K++;
for (int i = 1; i <= 20; i++) {
int R = rand() % max(80 - (K / 10), 30);
int Rr = rand() % 200;
if (R <= 3)
m[K + 28][i] = 2;
else if (R <= 6)
m[K + 28][i] = 7;
else if (R <= 9)
m[K + 28][i] = 8;
if (Rr == 0)
m[K + 28][i] = 9;
}
if (a != 1)
system("cls"), Map(0);
}

void Jiao() {
SetPos(0, 2);
Color(1), cout << "●", Color(7), cout << " ■ ", Color(8), cout << " ■ ", Color(4), cout << " ● ", Color(9),
cout << "~ ", Color(0), cout << " ", Color(10), cout << "~ ", Color(3), cout << " ◆";
SetPos(2, 2);
Color(0), cout << "你 泥土 石块 炸弹 岩浆 水 宝石";
SetPos(4, 1), cout << " ↑ 空格放炸弹...";
SetPos(5, 1), cout << "← →移动 ";
SetPos(6, 1), cout << " ↓ 可二段跳。";
SetPos(8, 1), cout << "炸弹种类随机,计时3秒爆炸。";
SetPos(10, 1), cout << "(一共有7种炸弹,有几率组合一起爆炸)";
SetPos(12, 1), cout << "岩浆和水有几率向左右扩散...";
SetPos(14, 1), cout << "它们相融会产生石块。";
SetPos(16, 1), cout << "岩浆和爆炸波会使你减血...";
SetPos(18, 1), cout << "岩浆还会使你上跳,宝石可以加血。";
SetPos(20, 1), cout << "画面每隔一段时间会下降...";
SetPos(22, 1), cout << "当你抵达画面底部时,画面会随你一起下降...";
SetPos(24, 1), cout << "当你被抵在画面顶部时,会持续减血。";
SetPos(26, 1), cout << "每隔一段时间分数会增加...", Color(5), cout << "200分即可通关!";
SetPos(28, 1);
Color(1);
cout << "按 y 开始游戏!";
char tt;
while (tt != 'y')
tt = _getch();
}

void Start() {
Color(5);
SetPos(2, 3);
Color(7), cout << " ■ ", Color(5), cout << "掘", Color(7), cout << " ■■■■ ";
SetPos(3, 3);
Color(7), cout << " ■■ ", Color(5), cout << " ↓", Color(7), cout << " ■■■■ ";
SetPos(4, 3);
Color(7), cout << " ■■■■ ", Color(5), cout << " ↓", Color(7), cout << " ■■■■■ ";
SetPos(5, 3);
Color(7), cout << " ■■■■■", Color(5), cout << "↓", Color(7), cout << " ■■■■■ ";
SetPos(6, 3);
Color(7), cout << " ■■■■■ ■■■", Color(5), cout << "地", Color(7), cout << "■■ ";
SetPos(7, 3);
Color(7), cout << " ■■■■■■■■■■■■ ";
Color(5);
SetPos(22, 2);
Color(1);
cout << "按 y 确定!";
SetPos(22, 10);
Color(9);
cout << " 开始游戏! ";
SetPos(24, 10);
Color(0);
cout << " 操作攻略! ";
SetPos(27, 1);
Color(3);
cout << "注意!这里 绝对不能是拼音输入法!";
SetPos(28, 5);
Color(3);
cout << "↓";
Color(0);
char tt;
int Ee = 0;
while (tt != 'y') {
tt = _getch();
if (tt == 72 && Ee != 0)
Ee--;
if (tt == 80 && Ee != 2)
Ee++;
SetPos(22, 10);
if (Ee == 0)
Color(9);
else
Color(0);
cout << " 开始游戏! ";
SetPos(24, 10);
if (Ee == 1)
Color(9);
else
Color(0);
cout << " 操作攻略! ";
}
system("color 0F");
system("cls");
Color(0);
if (Ee == 1)
Jiao();
}

int main() {
system("mode con cols=42 lines=31");
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
srand((unsigned)time(NULL));
Start();
St:
system("cls");
K = -5, T = Win = Score = 0;
X = Y = 2;
Blood = 20;
memset(m, 0, sizeof(m));
memset(B, 0, sizeof(B));
for (int i = 5; i <= 15; i++)
for (int j = 1; j <= 20; j++)
m[i][j] = 1;
for (int i = 1; i <= 10; i++)
Sheng(1);
Map(0);
while (Win == 0) {
T++;
Kb = 0;
if (Score >= 200)
Win = 1;
if (GetAsyncKeyState(VK_UP) & 0x8000 && tT == 0 && Er < 2)
tT++, tX += 4, Er++;
if ((GetAsyncKeyState(VK_UP) & 0x8000) ? 0 : 1)
tT = 0;
if (GetAsyncKeyState(VK_LEFT) & 0x8000 && Y > 1 && (m[X][Y - 1] == 1 || m[X][Y - 1] == 7 || m[X][Y - 1] == 8
|| m[X][Y - 1] == 9) && (tY == 0 || tY >= 2))
SetPos(X - K, Y), cout << " ", Y--;
if (GetAsyncKeyState(VK_RIGHT) & 0x8000 && Y < 20 && (m[X][Y + 1] == 1 || m[X][Y + 1] == 7 || m[X][Y + 1] == 8
|| m[X][Y + 1] == 9) && (tY2 == 0 || tY2 >= 2))
SetPos(X - K, Y), cout << " ", Y++;
if ((GetAsyncKeyState(VK_LEFT) & 0x8000) ? 0 : 1)
tY = 0;
if ((GetAsyncKeyState(VK_RIGHT) & 0x8000) ? 0 : 1)
tY2 = 0;
if ((GetAsyncKeyState(VK_LEFT) & 0x8000) ? 1 : 0)
tY++;
if ((GetAsyncKeyState(VK_RIGHT) & 0x8000) ? 1 : 0)
tY2++;
if (kbhit()) {
char e = _getch();
if (e == ' ' && m[X - 1][Y] != 0 && m[X - 1][Y] != 2 && (m[X + 1][Y] <= 10 || m[X + 1][Y] >= 31) && Kb == 0)
m[X][Y] = 10, X--;
}
int zb = Zb;
for (int i = zb - 10; i <= zb; i++) {
if (B[i].Zhong == 1)
CircleBomb(B[i].xx, B[i].yy, B[i].rr, B[i].mr), B[i].Zhong = 0;
if (B[i].Zhong == 2)
LineBomb(B[i].xx, B[i].yy), B[i].Zhong = 0;
if (B[i].Zhong == 3)
ThreeBomb(B[i].xx, B[i].yy, B[i].rr, B[i].mr), B[i].Zhong = 0;
if (B[i].Zhong == 4)
ZuanBomb(B[i].xx, B[i].yy), B[i].Zhong = 0;
if (B[i].Zhong == 5)
TrigleBomb(B[i].xx, B[i].yy, B[i].rr, B[i].mr), B[i].Zhong = 0;
if (B[i].Zhong == 6)
GunBomb(B[i].xx, B[i].yy, B[i].rr, B[i].mr), B[i].Zhong = 0;
if (B[i].Zhong == 7)
GunBomb2(B[i].xx, B[i].yy, B[i].rr, B[i].mr), B[i].Zhong = 0;
}
Map(1);
Sleep(40);
if (T % max(10, 40 - Score / 16) == 0 || Kb >= 1)
Sheng(0);
if (T % 20 == 0)
Score++;
}
if (Win != 0) {
if (Win > 0) {
system("color 6E"), Color(3);
SetPos(0, 2);
cout << "You! Win!!!", Sleep(1000);
}
if (Win < 0) {
system("color 7F"), Color(4);
SetPos(0, 2);
cout << "You! Die!!!", Sleep(1000);
}
SetPos(1, 2);
cout << "请输入y重新开始游戏";
A:
char e = _getch();
if (e != 'y')
goto A;
goto St;
}
}
```

标签:cout,int,Zb,SetPos,炸弹,Color,&&
From: https://www.cnblogs.com/niuzeyu1/p/17612482.html

相关文章

  • # 实验三 **数字炸弹游戏**
    实验三数字炸弹游戏一、实验目的1.了解和掌握数字炸弹游戏的原理2.熟练运用python的基本语句与关系运算符二、实验内容数字炸弹游戏流程:1、电脑随机生成炸弹数字2、打印炸弹数字范围3、自己猜一次784、缩小炸弹范围,并打印出来。1-786、循环3、4操作,直到炸弹爆炸,游戏结......
  • 著名的fork炸弹
    今天突发奇想,想试验下著名的fork炸弹是否真的可以将服务器资源耗尽崩溃,索性拿我个人服务器尝试下吧。先上代码:#!/usr/bin/envpython#encoding:utf-8"""@author:jc@contact:Hurrican@software:PyCharm@file:fork炸弹--只能运行在Linux上@create:2023/7/2010:26......
  • csapp二进制炸弹实验个人总结
    2023/7/13完成了这个实验,算是我的第一次逆向实战,对我来说很有挑战性。总结如下:1.对于汇编的熟练度,尤其是“层次”问题,mov0x8(%rsp),%rax和lea0x8(%rsp),%rax并不同;要注意某一个值本身是“地址”还是“数值”2.理解机器码工作原理后,拓宽思路,经验+寻找新的方法3.看待问题的视角......
  • P5025 SNOI2017 炸弹
    P5025SNOI2017炸弹不难看出本题是可以转化为图论模型的:建立\(n\)个点代表\(n\)个炸弹,如果第\(i\)个炸弹能直接引爆第\(j\)个炸弹,就连边\(i\toj\)。这样的图论模型很好地刻画了原题中引爆的传递性,题意中第\(i\)个炸弹能直接/间接引爆第\(j\)个炸弹直接等价于......
  • 由碳化硅,氧化锌,三硝基甲苯, 季戊四醇四硝酸酯, 三过氧化三丙酮, 环三亚甲基三硝基胺合
    由碳化硅,氧化锌,三硝基甲苯,季戊四醇四硝酸酯,三过氧化三丙酮,环三亚甲基三硝基胺合成的电压激发炸弹当直径是20mm高度是20mm圆柱体碳化硅压敏电阻器在加上10KV高压时,它的晶体就会发生爆裂,直径是20mm高度是20mm圆柱体氧化锌压敏电阻器在加上10KV高压时,它的晶体也会发生爆裂。这......
  • 用 Pulsar 开发多人小游戏(一):炸弹人游戏开发需求及难点
    我之前写过一篇文章我用消息队列做了个联机游戏用Pulsar这款消息队列实现了一个比较简陋的炸弹人游戏,结果不少读者对这个小游戏都很感兴趣,甚至在Pulsar的技术交流群......
  • 甩掉容量规划炸弹:用 AHPA 实现 Kubernetes 智能弹性伸缩
    作者:子白AHPA介绍背景Kubernetes中应用实例数设置有固定实例数、HPA和CronHPA三种策略。使用最多的是固定实例数,但是很多业务都存在波峰浪谷,如果采用固定实例数的......
  • 激光炸弹【算法竞赛进阶指南, HNOI2003】
    激光炸弹地图上有\(N\)个目标,用整数\(Xi,Yi\)表示目标在地图上的位置,每个目标都有一个价值\(Wi\)。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁......
  • 二维前缀和 P2280 激光炸弹
      #include<iostream>#include<algorithm>usingnamespacestd;ints[5005][5005],n,r;voidsov(){inti,j,ans=0;intx,y,z;cin>>n>>r;......
  • 甩掉容量规划炸弹:用 AHPA 实现 Kubernetes 智能弹性伸缩
    作者:子白AHPA介绍背景Kubernetes中应用实例数设置有固定实例数、HPA和CronHPA三种策略。使用最多的是固定实例数,但是很多业务都存在波峰波谷,如果采用固定实例数的方式......