【Yuexingfei_qwq的原创游戏】
好的其实标题里的Yuexingfei_qwq指的是我。
不定时持续更新ing……
有bug及时回复或私信我哈……
我不会搞.gif的运行图qwq
更新日志:
2025.4.9
将“乌龟对对碰”的随机改得比较人性化了。
2025.5.18
添加“抽卡”和“色块对决”。
本文同步发表在以下Blog:
洛谷:https://www.luogu.com.cn/article/a0nqm3my(看不到的话可以看https://www.luogu.me/article/a0nqm3my,记得每次点进去的时候都按一下“更新文章内容”按键)
CSDN:https://blog.csdn.net/yuexingfei_111/article/details/146573222?spm=1011.2415.3001.5331
博客园:https://www.cnblogs.com/yxf2013/p/18802908
“.h”文件(自编头文件)
game_1.h(常用游戏函数):
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <algorithm>
#include <conio.h>
#include <math.h>
#define _cl system("cls")
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _PI 3.1415926535897932384626
#define _ge getch()
#define _Get(x) GetAsyncKeyState('x')
#define _KE(x) ((GetAsyncKeyState(x) & 0x8000) ? 1:0)
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a
using namespace std;
typedef long long ll;
typedef string str;
using ull = unsigned long long;
inline ll x_y(ll x, ll y, ll p = (1LL << 60)) {//x的y次方模p
int ans_1 = 1;
while (y) {
if (y & 1) {
(ans_1 *= x) %= p;
}
(x *= x) %= p;
y >>= 1;
}
return ans_1;
}
inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {//逐字输出
for (auto i : s) {
if (t == "cin") {
cout << i;
} else {
putchar(i);
}
_sl(y);
}
}
inline void setcolor(int color) {//设置颜色
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
}
inline void wait(int d = 100) {
_sl(d);
_ge;
}
inline char get(str s) {
char ch[114514];
int l = 0;
for (auto i : s) {
ch[++l] = i;
}
while (true) {
char x = getchar();
for (int i = 1; i <= l; i++) {
if (x == ch[i]) {
return x;
}
}
Sleep_write("Error:输入无效\n");
_sl(2000);
_pa;
}
}
抽奖
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <conio.h>
#include <string>
#include <string.h>
#include <math.h>
#define w(x) while(x)
#define cl system("cls")
#define Sl(x) Sleep(x)
#define f(i, a, b) for (int i = a; i <= b; i++)
using namespace std;
int a[10][10], money = 20, h1, h2;
void init() {
srand(time(0));
f(i, 1, 3) {
f(j, 1, 3) {
a[i][j] = rand() % 10 + 1;
}
}
}
void start() {
puts("来抽奖吧!!!");
puts("yuexingfei出品,必属精品!");
puts("请按任意键开始游戏...");
getch();
cl;
puts ("Loading......");
Sl(2000);
cl;
}
void out() {
cl;
int r = rand() % 3 + 1, l = rand() % 3 + 1;
h1 = r, h2 = l;
f(i, 1, 3) {
f(j, 1, 3) {
if (i == r && j == l) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
} else {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}
printf ("%d", a[i][j]);
if (j != 3) {
printf ("\t");
}
}
printf ("\n");
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}
int main() {
init();
start();
w(1) {
cl;
if (money < 4) {
puts("你的钱不够抽了!");
break;
}
int x;
while (1) {
printf ("你现在有%d元,抽一次奖4元。\n请问本次你要旋转几次?(输入123456789重置转盘)\n", money);
scanf ("%d", &x);
if (x <= 0 || (x > 1e7 && x != 123456789)) {
cout << "Error:输入错误" << endl;
} else {
break;
}
}
if (x == 123456789) {
init();
} else {
for (int i = 1; i <= x; i++) {
out();
int t;
if (i == x) {
t = 3000;
} else {
if (i == x - 1) {
t = 2000;
} else {
if (i == x - 2) {
t = 1000;
} else {
if (i == x - 3) {
t = 500;
} else {
t = 10;
}
}
}
}
Sl(t);
}
money = money - 4 + a[h1][h2];
printf ("恭喜获得了%d元!\n", a[h1][h2]);
Sl(2500);
}
}
return 0;
}
躲避铁砧
#include <bits/stdc++.h>
#include <iostream>
#include <windows.h>
#include <cmath>
#include <stdlib.h>
#include <cstdio>
#include <stdio.h>
#include <cstdlib>
#include <algorithm>
#include <time.h>
using namespace std;
int r = -1, b = -1, rf = 3, bf = 3;
int n, m;
int a[10];
void init() {
memset(a, 0, sizeof(a));
}
void out() {
system ("cls");
printf ("地图 : \n*******************\n");
for (int i = 0; i < 10; i++) {
if (a[i] == 0) {
if (i == r) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
printf ("i ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
} else {
if (i == b) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
printf ("i ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
} else {
printf ("/ ");
}
}
} else {
if (a[i] == 1) {
if (i == r) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("* ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
rf--;
}
if (i == b) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("* ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
bf--;
}
if (i != b && i != r) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("# ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}
}
}
}
printf ("\n*******************\n");
printf ("红生命 : %d\n蓝生命 : %d\n", rf, bf);
}//"#" : 有铁砧但没人; "*" : 有铁砧且有人; "/" : 空; "i" : 人 (对应颜色)
void ran() {
n = rand() % 5 + 1;
printf ("落下%d个铁砧\n", n);
for (int i = 1; i <= n; i++) {
while (a[m] != 0) {
m = rand() % 10;
}
a[m] = 1;
}
}
int main() {
srand(time(0));
init();
while (1) {
out();
printf ("红方选择位置(1~10) : \n");
scanf ("%d", &r);
r--;
printf ("蓝方选择位置(1~10) : \n");
scanf ("%d", &b);
b--;
out();
printf ("ran...\n");
Sleep(1000);
ran();
Sleep(1000);
out();
Sleep(2500);
init();
if (a[r] == 1)
rf--;
if (a[b] == 1)
bf--;
if (rf == 0 || bf == 0)
break;
}
if (rf > bf)
printf ("红赢了!\n");
if (rf < bf)
printf ("蓝赢了!\n");
if (rf == bf)
printf ("平局!\n");
return 0;
}
MC党福利
起床战争
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
char a[50][50] = {"OOOOOOOOOOOOOOOOOOOO",
"OA O",
"O H O O",
"O OOOOO O",
"O O R O",
"O WO",
"OOOOOOOOOOOOOOOOOOOO",
};
struct Player {
int shengming, gongji, fangyu;
};
Player P1, P2;
bool Aw = true, Ww = true;
int x = 2, y = 2, p = 4, q = 17, n = 1, m = 1, c = 5, b = 18, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30;
void out() {
system("cls");
for (int i = 0; i <= 7; i++) {
for (int j = 0; j <= 20; j++) {
printf ("%c", a[i][j]);
}
switch (i) {
case 0:
printf (" H:玩家1(WASD移动)");
break;
case 1:
printf (" A:H的床");
break;
case 2:
printf (" R:玩家2(IJKL移动)");
break;
case 3:
printf (" W:R的床");
break;
case 4:
printf (" O:墙壁");
break;
case 5:
printf (" N:增加攻击");
break;
case 6:
printf (" F:增加防御");
break;
case 7:
printf (" S:增加生命");
break;
}
printf ("\n");
}
printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
if (Aw) {
printf ("H床:YES\n");
} else {
printf ("H床:NO\n");
}
if (Ww) {
printf ("R床:YES\n");
} else {
printf ("R床:NO\n");
}
}
void SetFont(int size) {
CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof cfi;
cfi.nFont = 0;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = size;//设置字体大小
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL; //字体粗细
wcscpy_s(cfi.FaceName, L"宋体");//设置字体
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFO consoleCurrentFont;
GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}
void xuan() {
for (int i = 1; i <= 2; i++) {
if (i == 1) {
printf ("请H选择!(输入前面的序号)\n");
} else {
printf ("请R选择!(输入前面的序号)\n");
}
printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
int d;
scanf ("%d", &d);
switch (d) {
case 1:
if (i == 1) {
P1.shengming = 200;
P1.gongji = 50;
P1.fangyu = 50;
} else {
P2.shengming = 200;
P2.gongji = 50;
P2.fangyu = 50;
}
break;
case 2:
if (i == 1) {
P1.shengming = 150;
P1.gongji = 40;
P1.fangyu = 80;
} else {
P2.shengming = 150;
P2.gongji = 40;
P2.fangyu = 80;
}
break;
case 3:
if (i == 1) {
P1.shengming = 250;
P1.gongji = 40;
P1.fangyu = 40;
} else {
P2.shengming = 250;
P2.gongji = 40;
P2.fangyu = 40;
}
break;
case 4:
if (i == 1) {
P1.shengming = 130;
P1.gongji = 45;
P1.fangyu = 85;
} else {
P2.shengming = 130;
P2.gongji = 45;
P2.fangyu = 85;
}
break;
case 5:
if (i == 1) {
P1.shengming = 135;
P1.gongji = 65;
P1.fangyu = 40;
} else {
P2.shengming = 135;
P2.gongji = 65;
P2.fangyu = 40;
}
break;
}
system("cls");
}
}
int zhan() {
system("cls");
printf ("交战中......\n");
Sleep(2500);
int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
while (1) {
if (P2g - P1f > 0) {
P1s = P1s - (P2g - P1f);
}
if (P1g - P2f > 0) {
P2s = P2s - (P1g - P2f);
}
if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
printf ("无法交战!\n");
Sleep(1000);
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
return 100;
}
if (P1s <= 0 && P2s > 0) {
printf ("H狗带了!\n");
Sleep(5000);
if (Aw) {
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
if (p == x && q == y) {
p = 5, q = 9;
a[p][q] = 'R';
}
return 99;
} else {
return 1;
}
}
if (P2s <= 0 && P1s > 0) {
printf ("R狗带了!\n");
Sleep(5000);
if (Ww) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
if (p == x && q == y) {
x = 1, y = 9;
a[x][y] = 'H';
}
return 99;
} else {
return 2;
}
}
if (P2s <= 0 && P1s <= 0) {
printf ("都狗带了!\n");
Sleep(5000);
if (Ww && Aw) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
return 99;
}
if (Ww && !Aw) {
return 2;
}
if (!Ww && Aw) {
return 1;
}
if (!Ww && !Aw) {
return 3;
}
}
}
}
void win(int g) {
if (g == 1) {
printf("\'R\' 赢了!\n");
Sleep(5000);
system("pause");
} else {
if (g == 2) {
printf("\'H\' 赢了!\n");
Sleep(5000);
system("pause");
} else {
printf("平局!\n");
Sleep(5000);
system("pause");
}
}
}
void rans(char cha) {
int f = rand() % 2;
a[sx][sy] = cha;
sx = 35, sy = 35;
switch (f) {
case 0:
sx = 5, sy = 1;
break;
case 1:
sx = 1, sy = 18;
break;
}
a[sx][sy] = 'S';
}
void rang(char cha) {
int ff = rand() % 3;
a[gx][gy] = cha;
gx = 35, gy = 35;
switch (ff) {
case 0:
gx = 2, gy = 15;
break;
case 1:
gx = 2, gy = 8;
break;
case 2:
gx = 4, gy = 10;
break;
}
a[gx][gy] = 'N';
}
void ranf(char cha) {
int fff = rand() % 3;
a[fx][fy] = cha;
fx = 35, fy = 35;
switch (fff) {
case 0:
fx = 2, fy = 10;
break;
case 1:
fx = 4, fy = 4;
break;
case 2:
fx = 4, fy = 8;
break;
}
a[fx][fy] = 'F';
}
int main() {
system("title 起床战争");
SetFont(25);
srand(time(NULL));
system("color 0a");
xuan();
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
CursorInfo.bVisible = false; //隐藏控制台光标
SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
out();
ranf(' ');
rang(' ');
rans(' ');
while (1) {
if (GetAsyncKeyState('S')) {
if (a[x + 1][y] != 'O') {
a[x][y] = ' ';
x++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('D')) {
if (a[x][y + 1] != 'O') {
a[x][y] = ' ';
y++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('A')) {
if (a[x][y - 1] != 'O') {
a[x][y] = ' ';
y--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('W')) {
if (a[x - 1][y] != 'O') {
a[x][y] = ' ';
x--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('K')) {
if (a[p + 1][q] != 'O') {
a[p][q] = ' ';
p++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('L')) {
if (a[p][q + 1] != 'O') {
a[p][q] = ' ';
q++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('J')) {
if (a[p][q - 1] != 'O') {
a[p][q] = ' ';
q--;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('I')) {
if (a[p - 1][q] != 'O') {
a[p][q] = ' ';
p--;
a[p][q] = 'R';
}
}
if (x == p && y == q) {
int jie = zhan();
if (jie == 1) {
win(1);
break;
} else {
if (jie == 2) {
win(2);
break;
} else {
if (jie < 99) {
win(3);
break;
}
}
}
}
if (x == c && y == b) {
a[c][b] = ' ';
c = 48, b = 49;
Ww = false;
}
if (p == n && q == m) {
a[n][m] = ' ';
n = 39, m = 35;
Aw = false;
}
if (c == p && b == q && Ww) {
a[c][b] = 'R';
while (1) {
if (!(c == p && b == q))
a[c][b] = 'W';
break;
}
} else {
a[c][b] = 'W';
}
if (n == x && m == y && Aw) {
a[n][m] = 'H';
while (1) {
if (!(n == x && m == y))
a[n][m] = 'A';
break;
}
} else {
a[n][m] = 'A';
}
if (sx == x && sy == y) {
P1.shengming += 5;
Sleep(10);
rans('H');
}
if (sx == p && sy == q) {
P2.shengming += 5;
Sleep(10);
rans('R');
}
if (gx == x && gy == y) {
P1.gongji += 5;
rang('H');
}
if (gx == p && gy == q) {
P2.gongji += 5;
rang('R');
}
if (fx == x && fy == y) {
P1.fangyu += 5;
ranf('H');
}
if (fx == p && fy == q) {
P2.fangyu += 5;
ranf('R');
}
out();
}
return 0;
}
水晶战争
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
char a[50][50] = {"OOOOOOOOOOOOOOOOOOOO",
"OA O",
"O H O O",
"O OOOOO O",
"O O R O",
"O WO",
"OOOOOOOOOOOOOOOOOOOO",
};
struct Player {
int shengming, gongji, fangyu;
};
Player P1, P2;
bool Aw = true, Ww = true, Z = false;
int x = 2, y = 2, p = 4, q = 17, n = 1, m = 1, c = 5, b = 18, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30, A = 1000, W = 1000;
void out() {
system("cls");
for (int i = 0; i <= 7; i++) {
for (int j = 0; j <= 20; j++) {
printf ("%c", a[i][j]);
}
switch (i) {
case 0:
printf (" H:玩家1(WASD移动)");
break;
case 1:
printf (" A:H的水晶");
break;
case 2:
printf (" R:玩家2(IJKL移动)");
break;
case 3:
printf (" W:R的水晶");
break;
case 4:
printf (" O:墙壁");
break;
case 5:
printf (" N:增加攻击");
break;
case 6:
printf (" F:增加防御");
break;
case 7:
printf (" S:增加生命(也可增加水晶血量)");
break;
}
printf ("\n");
}
printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
if (Aw) {
printf ("H水晶:YES 血量:%d\n", A);
} else {
printf ("H水晶:NO\n");
}
if (Ww) {
printf ("R水晶:YES 血量:%d\n", W);
} else {
printf ("R水晶:NO\n");
}
}
void SetFont(int size) {
CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof cfi;
cfi.nFont = 0;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = size;//设置字体大小
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL; //字体粗细
wcscpy_s(cfi.FaceName, L"宋体");//设置字体
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFO consoleCurrentFont;
GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}
void xuan() {
for (int i = 1; i <= 2; i++) {
if (i == 1) {
printf ("请H选择你的职业!(输入前面的序号)\n");
} else {
printf ("请R选择你的职业!(输入前面的序号)\n");
}
printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
int d;
scanf ("%d", &d);
switch (d) {
case 1:
if (i == 1) {
P1.shengming = 200;
P1.gongji = 50;
P1.fangyu = 50;
} else {
P2.shengming = 200;
P2.gongji = 50;
P2.fangyu = 50;
}
break;
case 2:
if (i == 1) {
P1.shengming = 150;
P1.gongji = 40;
P1.fangyu = 80;
} else {
P2.shengming = 150;
P2.gongji = 40;
P2.fangyu = 80;
}
break;
case 3:
if (i == 1) {
P1.shengming = 250;
P1.gongji = 40;
P1.fangyu = 40;
} else {
P2.shengming = 250;
P2.gongji = 40;
P2.fangyu = 40;
}
break;
case 4:
if (i == 1) {
P1.shengming = 130;
P1.gongji = 45;
P1.fangyu = 85;
} else {
P2.shengming = 130;
P2.gongji = 45;
P2.fangyu = 85;
}
break;
case 5:
if (i == 1) {
P1.shengming = 135;
P1.gongji = 65;
P1.fangyu = 40;
} else {
P2.shengming = 135;
P2.gongji = 65;
P2.fangyu = 40;
}
break;
}
system("cls");
}
}
int zhan() {//这个函数我现在再倒回来看都觉得不是我的实力能写得出来的
Z = true;
system("cls");
printf ("交战中......\n");
Sleep(2500);
int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
while (1) {
if (P2g - P1f > 0) {
P1s = P1s - (P2g - P1f);
}
if (P1g - P2f > 0) {
P2s = P2s - (P1g - P2f);
}
if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
printf ("无法交战!\n");
Sleep(1000);
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
Z = false;
return 100;
}
if (P1s <= 0 && P2s > 0) {
printf ("H狗带了!\n");
Sleep(5000);
if (Aw) {
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
if (p == x && q == y) {
p = 5, q = 9;
a[p][q] = 'R';
}
Z = false;
return 99;
} else {
Z = false;
return 1;
}
}
if (P2s <= 0 && P1s > 0) {
printf ("R狗带了!\n");
Sleep(5000);
if (Ww) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
if (p == x && q == y) {
x = 1, y = 9;
a[x][y] = 'H';
}
Z = false;
return 99;
} else {
Z = false;
return 2;
}
}
if (P2s <= 0 && P1s <= 0) {
printf ("都狗带了!\n");
Sleep(5000);
if (Ww && Aw) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
Z = false;
return 99;
}
if (Ww && !Aw) {
Z = false;
return 2;
}
if (!Ww && Aw) {
Z = false;
return 1;
}
if (!Ww && !Aw) {
Z = false;
return 3;
}
}
}
}
void win(int g) {
if (g == 1) {
printf("\'R\' 赢了!\n");
Sleep(5000);
system("pause");
} else {
if (g == 2) {
printf("\'H\' 赢了!\n");
Sleep(5000);
system("pause");
} else {
printf("平局!\n");
Sleep(5000);
system("pause");
}
}
}
void rans(char cha) {
int f = rand() % 2;
a[sx][sy] = cha;
sx = 35, sy = 35;
switch (f) {
case 0:
sx = 5, sy = 1;
break;
case 1:
sx = 1, sy = 18;
break;
}
a[sx][sy] = 'S';
}
void rang(char cha) {
int ff = rand() % 3;
a[gx][gy] = cha;
gx = 35, gy = 35;
switch (ff) {
case 0:
gx = 2, gy = 15;
break;
case 1:
gx = 2, gy = 8;
break;
case 2:
gx = 4, gy = 10;
break;
}
a[gx][gy] = 'N';
}
void ranf(char cha) {
int fff = rand() % 3;
a[fx][fy] = cha;
fx = 35, fy = 35;
switch (fff) {
case 0:
fx = 2, fy = 10;
break;
case 1:
fx = 4, fy = 4;
break;
case 2:
fx = 4, fy = 8;
break;
}
a[fx][fy] = 'F';
}
int main() {
system("title 水晶战争");
SetFont(25);
srand(time(NULL));
system("color 0a");
xuan();
out();
ranf(' ');
rang(' ');
rans(' ');
while (1) {
if (GetAsyncKeyState('S')) {
if (a[x + 1][y] != 'O') {
a[x][y] = ' ';
x++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('D')) {
if (a[x][y + 1] != 'O') {
a[x][y] = ' ';
y++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('A')) {
if (a[x][y - 1] != 'O') {
a[x][y] = ' ';
y--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('W')) {
if (a[x - 1][y] != 'O') {
a[x][y] = ' ';
x--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('K')) {
if (a[p + 1][q] != 'O') {
a[p][q] = ' ';
p++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('L')) {
if (a[p][q + 1] != 'O') {
a[p][q] = ' ';
q++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('J')) {
if (a[p][q - 1] != 'O') {
a[p][q] = ' ';
q--;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('I')) {
if (a[p - 1][q] != 'O') {
a[p][q] = ' ';
p--;
a[p][q] = 'R';
}
}
if (x == p && y == q) {
int jie = zhan();
if (jie == 1) {
win(1);
break;
} else {
if (jie == 2) {
win(2);
break;
} else {
if (jie < 99) {
win(3);
break;
}
}
}
}
if (x == c && y == b && !Z) {
W -= P1.gongji;
Sleep(500);
if (W <= 0) {
a[c][b] = ' ';
c = 48, b = 49;
Ww = false;
}
}
if (p == n && q == m && !Z) {
A -= P2.gongji;
Sleep(500);
if (A <= 0) {
a[n][m] = ' ';
n = 48, m = 49;
Aw = false;
}
}
if (c == p && b == q && Ww) {
a[c][b] = 'R';
while (1) {
if (!(c == p && b == q))
a[c][b] = 'W';
break;
}
} else {
a[c][b] = 'W';
}
if (n == x && m == y && Aw) {
a[n][m] = 'H';
while (1) {
if (!(n == x && m == y))
a[n][m] = 'A';
break;
}
} else {
a[n][m] = 'A';
}
if (sx == x && sy == y) {
P1.shengming += 5;
A += 2;
Sleep(10);
rans('H');
}
if (sx == p && sy == q) {
P2.shengming += 5;
W += 2;
Sleep(10);
rans('R');
}
if (gx == x && gy == y) {
P1.gongji += 5;
rang('H');
}
if (gx == p && gy == q) {
P2.gongji += 5;
rang('R');
}
if (fx == x && fy == y) {
P1.fangyu += 5;
ranf('H');
}
if (fx == p && fy == q) {
P2.fangyu += 5;
ranf('R');
}
out();
}
return 0;
}
攻守战
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <conio.h>
#include <string>
#include <string.h>
#include <math.h>
#define w(x) while(x)
#define cl system("cls")
#define Sl(x) Sleep(x)
using namespace std;
char a[50][50] = {"OOOOOOOOOOOOOOOOOOOOOOOOO",
"O WO",
"O O O",
"OH OOOOO R WO",
"O O O",
"O WO",
"OOOOOOOOOOOOOOOOOOOOOOOOO",
};
struct Player {
int shengming, gongji, fangyu;
};
Player P1, P2;
bool W1 = true, W2 = true, W3 = true;
int x = 3, y = 1, p = 3, q = 21, n = 1, m = 23, c = 3, b = 23, f = 5, j = 23, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30;
int ttt;
int t = 100000;
void out() {
cl;
for (int i = 0; i <= 7; i++) {
for (int j = 0; j <= 24; j++) {
printf ("%c", a[i][j]);
}
printf (" ");
switch (i) {
case 0:
printf ("H:玩家1(WASD移动)");
break;
case 1:
printf ("R:玩家2(IJKL移动)");
break;
case 2:
printf ("W:R的床");
break;
case 3:
printf ("O:墙壁");
break;
case 4:
printf ("N:增加攻击");
break;
case 5:
printf ("F:增加防御");
break;
case 6:
printf ("S:增加生命");
break;
}
printf ("\n");
}
printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
if (W1) {
printf ("床W1:YES\n");
} else {
printf ("床W1:NO\n");
}
if (W2) {
printf ("床W2:YES\n");
} else {
printf ("床W2:NO\n");
}
if (W3) {
printf ("床W3:YES\n");
} else {
printf ("床W3:NO\n");
}
printf ("剩余时间:%dms\n", t - (int)clock() + ttt);
}
void SetFont(int size) {
CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof cfi;
cfi.nFont = 0;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = size;//设置字体大小
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL; //字体粗细
wcscpy_s(cfi.FaceName, L"宋体");//设置字体
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFO consoleCurrentFont;
GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}
void xuan() {
for (int i = 1; i <= 2; i++) {
if (i == 1) {
printf ("请H选择职业!(输入前面的序号)\n");
} else {
printf ("请R选择职业!(输入前面的序号)\n");
}
printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
int d;
scanf ("%d", &d);
switch (d) {
case 1:
if (i == 1) {
P1.shengming = 200;
P1.gongji = 50;
P1.fangyu = 50;
} else {
P2.shengming = 200;
P2.gongji = 50;
P2.fangyu = 50;
}
break;
case 2:
if (i == 1) {
P1.shengming = 150;
P1.gongji = 40;
P1.fangyu = 80;
} else {
P2.shengming = 150;
P2.gongji = 40;
P2.fangyu = 80;
}
break;
case 3:
if (i == 1) {
P1.shengming = 250;
P1.gongji = 40;
P1.fangyu = 40;
} else {
P2.shengming = 250;
P2.gongji = 40;
P2.fangyu = 40;
}
break;
case 4:
if (i == 1) {
P1.shengming = 130;
P1.gongji = 45;
P1.fangyu = 85;
} else {
P2.shengming = 130;
P2.gongji = 45;
P2.fangyu = 85;
}
break;
case 5:
if (i == 1) {
P1.shengming = 135;
P1.gongji = 65;
P1.fangyu = 40;
} else {
P2.shengming = 135;
P2.gongji = 65;
P2.fangyu = 40;
}
break;
}
system("cls");
}
}
int zhan() {
system("cls");
printf ("交战中......\n");
Sleep(2500);
int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
while (1) {
if (P2g - P1f > 0) {
P1s = P1s - (P2g - P1f);
}
if (P1g - P2f > 0) {
P2s = P2s - (P1g - P2f);
}
if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
printf ("无法交战!\n");
Sl(1000);
a[p][q] = ' ';
p = 3, q = 21;
a[p][q] = 'R';
a[x][y] = ' ';
x = 3, y = 1;
a[x][y] = 'H';
return 100;
}
if (P1s <= 0 && P2s > 0) {
printf ("H狗带了!\n");
Sl(3000);
a[x][y] = ' ';
x = 3, y = 1;
a[x][y] = 'H';
}
if (P2s <= 0 && P1s > 0) {
printf ("R狗带了!\n");
Sl(3000);
if (W1 || W2 || W3) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
if (p == x && q == y) {
x = 3, y = 9;
a[x][y] = 'H';
}
return 99;
} else {
return 2;
}
}
if (P2s <= 0 && P1s <= 0) {
printf ("都狗带了!\n");
Sl(3000);
if (W1 || W2 || W3) {
a[x][y] = ' ';
x = 3, y = 1;
a[x][y] = 'H';
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
if (p == x && q == y) {
a[x][y] = ' ';
x = 3, y = 9;
a[x][y] = 'H';
}
return 99;
} else {
return 2;
}
}
}
}
void win(int g) {
if (g == 1) {
printf("R赢了!\n");
Sl(3000);
system("pause");
} else {
printf("H赢了!\n");
Sl(3000);
system("pause");
}
}
void rans(char cha) {
int f = rand() % 2;
a[sx][sy] = cha;
sx = 35, sy = 35;
switch (f) {
case 0:
sx = 5, sy = 1;
break;
case 1:
sx = 1, sy = 18;
break;
}
a[sx][sy] = 'S';
}
void rang(char cha) {
int ff = rand() % 3;
a[gx][gy] = cha;
gx = 35, gy = 35;
switch (ff) {
case 0:
gx = 2, gy = 15;
break;
case 1:
gx = 2, gy = 8;
break;
case 2:
gx = 4, gy = 10;
break;
}
a[gx][gy] = 'N';
}
void ranf(char cha) {
int fff = rand() % 3;
a[fx][fy] = cha;
fx = 35, fy = 35;
switch (fff) {
case 0:
fx = 2, fy = 10;
break;
case 1:
fx = 4, fy = 4;
break;
case 2:
fx = 4, fy = 8;
break;
}
a[fx][fy] = 'F';
}
void Start() {
puts("欢迎来玩攻守战!!!");
Sl(1000);
puts("yuexingfei出品,必属精品!");
Sl(1000);
puts("请按任意键开始游戏...");
getch();
cl;
puts ("Loading......");
Sl(2000);
cl;
int o = 0;
for (int i = 1; i <= 200; i++) {
printf ("已加载%d个文件,进度%d", i, o);
cout << "%\n";
if (i % 2 == 0) {
o++;
}
Sl(1);
if (rand() % 15 == 9) {
Sl(4);
}
cl;
}
}
void SetConsoleWindowSize( SHORT width, SHORT height ) {
HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SMALL_RECT wrt = { 0, 0, width - 1, height - 1 };
SetConsoleWindowInfo( hStdOutput, TRUE, &wrt );
COORD coord = { width, height };
SetConsoleScreenBufferSize( hStdOutput, coord );
}
int main() {
system("title 攻守战");
SetFont(25);
SetConsoleWindowSize(53, 25);
srand(time(NULL));
system("color 0a");
Start();
cl;
printf ("规则:\n1.有时间限制(100s)\n2.攻方在规定时间内破坏守方的三个床就算赢\n3.守方要在规定时间内守住三个床,只要规定时间结束后还有床没有被攻方破坏就算赢\n");
system("pause");
cl;
xuan();
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
CursorInfo.bVisible = false; //隐藏控制台光标
SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
ttt = clock();
out();
ranf(' ');
rang(' ');
rans(' ');
w(1) {
if (GetAsyncKeyState('S')) {
if (a[x + 1][y] != 'O') {
a[x][y] = ' ';
x++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('D')) {
if (a[x][y + 1] != 'O') {
a[x][y] = ' ';
y++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('A')) {
if (a[x][y - 1] != 'O') {
a[x][y] = ' ';
y--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('W')) {
if (a[x - 1][y] != 'O') {
a[x][y] = ' ';
x--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('K')) {
if (a[p + 1][q] != 'O') {
a[p][q] = ' ';
p++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('L')) {
if (a[p][q + 1] != 'O') {
a[p][q] = ' ';
q++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('J')) {
if (a[p][q - 1] != 'O') {
a[p][q] = ' ';
q--;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('I')) {
if (a[p - 1][q] != 'O') {
a[p][q] = ' ';
p--;
a[p][q] = 'R';
}
}
if (clock() - ttt >= 100000) {
if (W1 || W2 || W3) {
win(2);
} else {
win(1);
}
break;
}
if (x == p && y == q) {
int jie = zhan();
if (jie == 2) {
win(2);
break;
}
}
if (x == n && y == m) {
W1 = false;
n = 48, m = 49;
}
if (x == c && y == b) {
W2 = false;
c = 48, b = 49;
}
if (x == f && y == j) {
W3 = false;
f = 48, j = 49;
}
if (p == n && q == m && W1) {
a[n][m] = 'R';
while (1) {
if (!(p == n && q == m))
a[n][m] = 'W';
break;
}
} else {
a[n][m] = 'W';
}
if (p == c && q == b && W2) {
a[c][b] = 'R';
while (1) {
if (!(p == c && q == b))
a[c][b] = 'W';
break;
}
} else {
a[c][b] = 'W';
}
if (p == f && q == j && W3) {
a[f][j] = 'R';
while (1) {
if (!(p == f && q == j))
a[f][j] = 'W';
break;
}
} else {
a[f][j] = 'W';
}
if (sx == x && sy == y) {
P1.shengming += 5;
Sleep(10);
rans('H');
}
if (sx == p && sy == q) {
P2.shengming += 5;
Sleep(10);
rans('R');
}
if (gx == x && gy == y) {
P1.gongji += 5;
rang('H');
}
if (gx == p && gy == q) {
P2.gongji += 5;
rang('R');
}
if (fx == x && fy == y) {
P1.fangyu += 5;
ranf('H');
}
if (fx == p && fy == q) {
P2.fangyu += 5;
ranf('R');
}
out();
}
return 0;
}
画图
turtle版
#include <turtle.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#define _cl system("cls")
#define _pa system("pause")
#define Get(x) GetAsyncKeyState(x)
#define inf 1e9
using namespace std;
typedef long long ll;
typedef string str;
inline void Sleep_write(const string &x, const int &y = 10) {
for (int i = 0; i < (int)x.length(); i++) {
putchar(x[i]);
ege::api_sleep(y);
}
}
inline void wait(const int &d = 100) {
ege::api_sleep(d);
getchar();
}
inline void welcome(void) {
Sleep_write("画图turtle版\n");
wait();
Sleep_write("作者:Yuexingfei_qwq\n");
wait();
Sleep_write("版权归Yuexingfei_qwq所有,恶意搬运者将会受到惩罚\n");
wait();
Sleep_write("开发者联系方式(洛谷):https://luogu.com.cn/user/1125939,用户名Yuexingfei_qwq||https://luogu.com.cn/user/1423517,用户名Mengchen_Yxf2013_qwq(Yuexingfei_qwq小号)\n");
wait();
Sleep_write("操控turtle时请使用英文输入法\n");
wait();
Sleep_write("出现bug时,请按下P键解除\n");
wait();
Sleep_write("使用教程在代码和代码末尾里的注释中都有,请自行查看\n");
wait();
_pa;
_cl;
}
inline char get(str s) {
char ch[114514];
int l = 0;
for (auto i : s) {
ch[++l] = i;
}
while (true) {
str t;
cin >> t;
for (int i = 1; i <= l; i++) {
if (t[0] == ch[i]) {
return t[0];
}
}
Sleep_write("Error:输入无效\n");
ege::api_sleep(1000);
_pa;
}
}
inline void init(void) {
char ch;
Sleep_write("是否设置画板大小?(Y/N)\n");
ch = tolower(get("YyNn"));
int n, m;
if (ch == 'y') {
Sleep_write("请输入画板的长和宽\n");
cin >> n >> m;
} else {
n = 800, m = 600;
}
_cl;
Sleep_write("是否设置turtle初始坐标?(Y/N)\n");
ch = tolower(get("YyNn"));
int x = inf, y = -inf;
if (ch == 'y') {
Sleep_write("请输入turtle初始坐标\n");
cin >> x >> y;
}
_cl;
Sleep_write("是否设置画布标题?(Y/N)\n");
ch = tolower(get("YyNn"));
char s[1919810];
int f = 0;
if (ch == 'y') {
f = 1;
Sleep_write("请输入画布标题\n");
cin >> s;
}
_cl;
initWorld(n, m);
if (x != inf && y != -inf) {
setOrigin(x, y);
}
if (f) {
setCaption(s);
}
}
int fo = 10, an = 30, ps = 1;//fo:步数 an:角度 ps:画笔粗细
int panc = 0, bakc = 15;//笔颜色和背景颜色
int isjisu = 0, sudu = 100;//1急速 0非
inline void SetPen(void) {
if (panc == 0) {
setPenColor(ege::BLACK);
}
if (panc == 1) {
setPenColor(ege::BLUE);
}
if (panc == 2) {
setPenColor(ege::GREEN);
}
if (panc == 3) {
setPenColor(ege::CYAN);
}
if (panc == 4) {
setPenColor(ege::RED);
}
if (panc == 5) {
setPenColor(ege::MAGENTA);
}
if (panc == 6) {
setPenColor(ege::BROWN);
}
if (panc == 7) {
setPenColor(ege::LIGHTGRAY);
}
if (panc == 8) {
setPenColor(ege::DARKGRAY);
}
if (panc == 9) {
setPenColor(ege::LIGHTBLUE);
}
if (panc == 10) {
setPenColor(ege::LIGHTGREEN);
}
if (panc == 11) {
setPenColor(ege::LIGHTCYAN);
}
if (panc == 12) {
setPenColor(ege::LIGHTRED);
}
if (panc == 13) {
setPenColor(ege::LIGHTMAGENTA);
}
if (panc == 14) {
setPenColor(ege::YELLOW);
}
if (panc == 15) {
setPenColor(ege::WHITE);
}
}
inline void SetBack(void) {
if (bakc == 0) {
setBackgroundColor(ege::BLACK);
}
if (bakc == 1) {
setBackgroundColor(ege::BLUE);
}
if (bakc == 2) {
setBackgroundColor(ege::GREEN);
}
if (bakc == 3) {
setBackgroundColor(ege::CYAN);
}
if (bakc == 4) {
setBackgroundColor(ege::RED);
}
if (bakc == 5) {
setBackgroundColor(ege::MAGENTA);
}
if (bakc == 6) {
setBackgroundColor(ege::BROWN);
}
if (bakc == 7) {
setBackgroundColor(ege::LIGHTGRAY);
}
if (bakc == 8) {
setBackgroundColor(ege::DARKGRAY);
}
if (bakc == 9) {
setBackgroundColor(ege::LIGHTBLUE);
}
if (bakc == 10) {
setBackgroundColor(ege::LIGHTGREEN);
}
if (bakc == 11) {
setBackgroundColor(ege::LIGHTCYAN);
}
if (bakc == 12) {
setBackgroundColor(ege::LIGHTRED);
}
if (bakc == 13) {
setBackgroundColor(ege::LIGHTMAGENTA);
}
if (bakc == 14) {
setBackgroundColor(ege::YELLOW);
}
if (bakc == 15) {
setBackgroundColor(ege::WHITE);
}
}
signed main(void) {
welcome();
init();
while (ege::is_run()) {
if (Get('P')) {//debug
setImmediate(1);
lt(360);
setImmediate(0);
setSpeed(sudu);
}
if (Get('W')) {//前进
fd(fo);
}
if (Get('S')) {//后退
bk(fo);
}
if (Get('A')) {//左转
lt(an);
}
if (Get('D')) {//右转
rt(an);
}
if (Get('Q')) {//落笔
pd();
}
if (Get('E')) {//抬笔
pu();
}
if (Get('R')) {//重置
clear();
}
if (Get('F')) {//回到起始点
home();
}
if (Get('Z')) {//画笔粗细+1
ps += 1;
setPenSize(ps);
}
if (Get('X')) {//画笔粗细-1
ps -= 1;
ps = std::max(1, ps);
setPenSize(ps);
}
if (Get('T')) {//速度+1
sudu += 1;
setSpeed(sudu);
}
if (Get('G')) {//速度-1
sudu -= 1;
sudu = std::max(1, sudu);
setSpeed(sudu);
}
if (Get('V')) {//隐藏
hide();
}
if (Get('Y')) {//显示
show();
}
if (Get('U')) {//旋转角度+1
an += 1;
an = std::min(an, 360);
}
if (Get('J')) {//旋转角度-1
an -= 1;
an = std::max(an, 0);
}
if (Get('N')) {//步数+1
fo += 10;
}
if (Get('M')) {//步数-1
fo -= 10;
fo = std::max(fo, 1);
}
if (Get('C')) {//将画笔颜色改为下一个
(panc += 1) %= 16;
SetPen();
}
if (Get('H')) {//将背景颜色改为下一个
(bakc += 1) %= 16;
SetBack();
}
if (Get('B')) {//设置是否急速
isjisu = 1 - isjisu;
if (isjisu) {
setImmediate(isjisu);
} else {
setSpeed(sudu);
}
}
}
pause();
return 0;
}
/*
操作指令
initWorld(int width, int height, double scale = 1.0):生成画布,设置画布大小(第三个参数为放大倍数,前两个参数均会乘上它;没填时默认为1.0)
setOrigin(int x, int y):设置乌龟起始点
setCaption(const char* title):改变画布标题(参数为一个string,需用双引号,而不是char)
W:fd(double step):前进step步
S:bk(double step):后退step步
A:lt(double step):左转step°
D:rt(double step):右转step°
Q:pd():落笔
E:pu():抬笔
R:clear():重置
F:home():乌龟移到起始点
Z+X-:setPenSize(int size):设置画笔粗细(默认值为1)(在参数较大时画出来的斜线可能会出现不均匀的情况) √
C:setPenColor(ege::color_t color):改变画笔颜色
ege::BLACK:黑色(默认颜色)
ege::BLUE:蓝色
ege::GREEN:绿色
ege::CYAN:青色
ege::RED:红色
ege::MAGENTA:紫色
ege::BROWN:棕色
ege::YELLOW:黄色
ege::WHITE:白色
ege::DARKGRAY:深灰色
ege::LIGHTGRAY:浅灰色
ege::LIGHTBLUE:浅蓝色
ege::LIGHTGREEN:浅绿色
ege::LIGHTCYAN:浅青色(类似天蓝色或淡蓝色)
ege::LIGHTRED:淡红色
ege::LIGHTMAGENTA:淡紫色(类似粉色)
注意事项:传参时参数应当为"ege::"+对应颜色的英文,颜色英文需全用大写
T+G-:setSpeed(int speed):调速度(默认100)
V:hide():隐藏乌龟
Y:show():显示乌龟
H:setBackgroundColor(ege::color_t color):改变背景颜色(详见setPenColor函数)
B:setImmediate(int isImmediate):参数为0时普通速度,否则为超快速度
U+J-:调节乌龟旋转角度(默认30°)
N+M-:调节乌龟走路步数(默认10步)
pause():等待直到画布被关闭
(由于输入输出、兼容性等问题,仅使用turtle.h中的部分操作指令)
*/
字符版
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <conio.h>
#include <string>
#include <string.h>
#include <math.h>
using namespace std;
int x = 1, y = 1;
int pen = 1;
string s[102][102];
string color = "white";
string ch = "@";
string dfs_color = " ", dfs_ch = " ";
bool f = 0, b[102][102], yd = 0;
string a[102][102];
int l, h;
inline void color1(string g) {
if (g == "white") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
} else {
if (g == "red") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
} else {
if (g == "yellow") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
} else {
if (g == "green") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
} else {
if (g == "indego") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN);
} else {
if (g == "pink") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED);
} else {
if (g == "blue") {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
} else {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
}
}
}
}
}
}
}
inline void out() {
system("cls");
for (int i = 0; i < l; i++) {
for (int j = 0; j < h; j++) {
if (a[i][j] == "+") {
if (f == 1) {
color1(dfs_color);
printf ("%s", dfs_ch.c_str());
} else {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("+");
}
} else {
color1(s[i][j]);
printf ("%s", a[i][j].c_str());
}
}
printf ("\n");
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("X:%d Y:%d\n", x, y);
}
inline void SetConsoleWindowSize(SHORT width, SHORT height) {
HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SMALL_RECT wrt = {0, 0, width - 1, height - 1};
SetConsoleWindowInfo(hStdOutput, TRUE, &wrt);
COORD coord = {width, height};
SetConsoleScreenBufferSize(hStdOutput, coord);
}
inline void q() {
for (int i = 1; i < l - 1; i++) {
for (int j = 1; j < h - 1; j++) {
a[i][j] = " ";
}
}
a[x][y] = "+";
}
inline void init() {
for (int i = 0; i < l; i++) {
for (int j = 0; j < h; j++) {
b[i][j] = 0;
}
}
}
inline void dfs(const int &x, const int &y) {
b[x][y] = 1;
s[x][y] = color, a[x][y] = ch;
if (a[x - 1][y] == dfs_ch && s[x - 1][y] == dfs_color && !b[x - 1][y]) {
dfs(x - 1, y);
}
if (a[x + 1][y] == dfs_ch && s[x + 1][y] == dfs_color && !b[x + 1][y]) {
dfs(x + 1, y);
}
if (a[x][y - 1] == dfs_ch && s[x][y - 1] == dfs_color && !b[x][y - 1]) {
dfs(x, y - 1);
}
if (a[x][y + 1] == dfs_ch && s[x][y + 1] == dfs_color && !b[x][y + 1]) {
dfs(x, y + 1);
}
}
int main() {
cout << "教程在代码末尾的注释里\n";
system("pause");
system("cls");
h = 32, l = 12;
for (int i = 0; i < l; i++) {
for (int j = 0; j < h; j++) {
if (i == 0 || j == 0 || i == l - 1 || j == h - 1) {
a[i][j] = "O";
} else {
a[i][j] = " ";
}
s[i][j] = "white";
}
}
a[x][y] = "+";
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
cursorInfo.bVisible = FALSE;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
SetConsoleWindowSize(32, 14);
system("title 画图");
while (1) {
out();
if (GetAsyncKeyState('S')) {
if (a[x + 1][y] != "O" && !f) {
if (!yd) {
if (pen) {
a[x][y] = ch;
} else {
a[x][y] = " ";
}
s[x][y] = color;
}
if (yd) {
a[x][y] = dfs_ch;
s[x][y] = dfs_color;
}
dfs_ch = a[x + 1][y];
dfs_color = s[x + 1][y];
x++;
a[x][y] = "+";
}
}
if (GetAsyncKeyState('D')) {
if (a[x][y + 1] != "O" && !f) {
if (!yd) {
if (pen) {
a[x][y] = ch;
} else {
a[x][y] = " ";
}
s[x][y] = color;
}
if (yd) {
a[x][y] = dfs_ch;
s[x][y] = dfs_color;
}
dfs_ch = a[x][y + 1];
dfs_color = s[x][y + 1];
y++;
a[x][y] = "+";
}
}
if (GetAsyncKeyState('A')) {
if (a[x][y - 1] != "O" && !f) {
if (!yd) {
if (pen) {
a[x][y] = ch;
} else {
a[x][y] = " ";
}
s[x][y] = color;
}
if (yd) {
a[x][y] = dfs_ch;
s[x][y] = dfs_color;
}
dfs_ch = a[x][y - 1];
dfs_color = s[x][y - 1];
y--;
a[x][y] = "+";
}
}
if (GetAsyncKeyState('W')) {
if (a[x - 1][y] != "O" && !f) {
if (!yd) {
if (pen) {
a[x][y] = ch;
} else {
a[x][y] = " ";
}
s[x][y] = color;
}
if (yd) {
a[x][y] = dfs_ch;
s[x][y] = dfs_color;
}
dfs_ch = a[x - 1][y];
dfs_color = s[x - 1][y];
x--;
a[x][y] = "+";
}
}
if (GetAsyncKeyState('1')) {
pen = 1;
}
if (GetAsyncKeyState('2')) {
pen = 0;
}
if (GetAsyncKeyState('3')) {
color = "white";
}
if (GetAsyncKeyState('4')) {
color = "red";
}
if (GetAsyncKeyState('5')) {
color = "yellow";
}
if (GetAsyncKeyState('6')) {
color = "green";
}
if (GetAsyncKeyState('7')) {
color = "indego";
}
if (GetAsyncKeyState('8')) {
color = "pink";
}
if (GetAsyncKeyState('9')) {
color = "blue";
}
if (GetAsyncKeyState('0')) {
color = "grey";
}
if (GetAsyncKeyState('Y')) {
ch = "@";
}
if (GetAsyncKeyState('U')) {
ch = "#";
}
if (GetAsyncKeyState('I')) {
ch = "%";
}
if (GetAsyncKeyState('O')) {
ch = "^";
}
if (GetAsyncKeyState('P')) {
ch = "&";
}
if (GetAsyncKeyState('H')) {
ch = "*";
}
if (GetAsyncKeyState('J')) {
ch = "/";
}
if (GetAsyncKeyState('K')) {
ch = "-";
}
if (GetAsyncKeyState('L')) {
ch = ".";
}
if (GetAsyncKeyState('M')) {
q();
}
if (GetAsyncKeyState('N')) {
f = 1;
}
if (GetAsyncKeyState('B')) {
f = 0;
}
if (GetAsyncKeyState('Z')) {
for (int i = 0; i < l; i++) {
for (int j = 0; j < h; j++) {
if (a[i][j] != "O") {
s[i][j] = color, a[i][j] = ch;
}
}
}
dfs_ch = ch;
dfs_color = color;
a[x][y] = "+";
}
if (GetAsyncKeyState('X')) {
init();
dfs(x, y);
dfs_ch = ch;
dfs_color = color;
a[x][y] = "+";
}
if (GetAsyncKeyState('Q')) {
yd = 1;
}
if (GetAsyncKeyState('E')) {
yd = 0;
}
}
return 0;
}
/*
操作方法如下:(按下键盘上的按钮操作;O代表边缘,画笔移动时碰到O就不能继续移动了;+代表鼠标)
w:鼠标向上移动
a:鼠标向左移动
s:鼠标向下移动
d:鼠标向右移动
1:鼠标设成画笔
2:鼠标设成橡皮
3:画笔颜色设为白色
4:画笔颜色设为红色
5:画笔颜色设为黄色
6:画笔颜色设为绿色
7:画笔颜色设为靛青
8:画笔颜色设为粉色
9:画笔颜色设为蓝色
0:画笔颜色设为灰色
y:画出图案设为@
u:画出图案设为#
i:画出图案设为%
o:画出图案设为^
p:画出图案设为&
h:画出图案设为*
j:画出图案设为/
k:画出图案设为-
l:画出图案设为.
m:清屏
n:开启观察者模式(见文末)
b:关闭观察者模式(见文末)
q:抬笔
e:落笔
特殊规则:
1.开始时,鼠标默认为画笔,画出图案为@
2.在画笔模式下,鼠标每移动一次,它原所在的格子为画出的图案
3.在橡皮模式下,鼠标每移动一次,它原所在的格子为空格
观察者模式:在该模式下,鼠标不会被显示,也不能移动,但可以改变颜色、图案、鼠标模式等。
*/
乌龟对对碰
其实下面两个的画面都一样,只不过是一个要用 "game_1.h"(在文章开头的“ ‘.h’文件(自编头文件) ” 里) 一个不用。
复杂版(需使用 "game_1.h"):
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <winuser.h>
#define el "\n"
#define sp " "
#define fi first
#define se second
#define inf 1e18
#define r0 return 0
#define int long long
#define F(i, a, b, c) for (int i = a; i <= b; i += c)
#define debug printf ("bug is in here\n")
#define TheEnd continue
#define base(s) s = sp + s
#define lcm(a, b) a / __gcd(a, b) * b
#define setp(x) fixed << setprecision(x)
#define GAME_1
using namespace std;
typedef long long ll;
typedef string str;
using ull = unsigned long long;
#ifndef GAME_1
#define _cl system("cls")
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _ge getch()
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a
inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {
for (auto i : s) {
if (t == "cin") {
cout << i;
} else {
putchar(i);
}
_sl(y);
}
}
inline void setcolor(int color) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
}
#else
#include "game_1.h"
#endif
char s[5][5];
int bag = 9, prebag, cnt;
str c = "RBCOYGPpWS";
std::vector<std::bitset<5>> iswish(5), isthree(5);
char w;
struct Info {
inline bool reset() {
F(i, 0, 4, 1) {
isthree[i].reset();
}
r0;
}
inline bool set(int x, char op, bool f) {
if (op == 'x' || op == 'r') {
F(i, 1, 3, 1) {
isthree[x][i] = f;
}
}
if (op == 'y' || op == 'c') {
F(i, 1, 3, 1) {
isthree[i][x] = f;
}
}
if (op == 'd' || op == 'l') {
if (x == 1) {
F(i, 1, 3, 1) {
isthree[i][i] = f;
}
} else {
F(i, 1, 3, 1) {
isthree[i][3 - i + 1] = f;
}
}
}
r0;
}
inline bool judge(int x, char op, bool f) {
if (op == 'x' || op == 'r') {
F(i, 1, 3, 1) {
if (isthree[x][i] != f) {
r0;
}
}
return 1;
}
if (op == 'y' || op == 'c') {
F(i, 1, 3, 1) {
if (isthree[i][x] != f) {
r0;
}
}
return 1;
}
if (op == 'd' || op == 'l') {
if (x == 1) {
F(i, 1, 3, 1) {
if (isthree[i][i] != f) {
r0;
}
}
return 1;
} else {
F(i, 1, 3, 1) {
if (isthree[i][3 - i + 1] != f) {
r0;
}
}
return 1;
}
}
r0;
}
} op;
inline bool color(char c, str s = "Yuexingfei_qwq.", bool isSleep = 0) {
if (s == "Yuexingfei_qwq.") {
s = "";
s += c;
}
switch (c) {
case 'R':
setcolor(4);
break;
case 'O':
setcolor(6);
break;
case 'Y':
setcolor(14);
break;
case 'G':
setcolor(10);
break;
case 'C':
setcolor(11);
break;
case 'B':
setcolor(1);
break;
case 'P':
setcolor(5);
break;
case 'p':
setcolor(13);
break;
case 'W':
setcolor(12);
break;
case 'S':
setcolor(3);
break;
}
if (isSleep) {
Sleep_write(s);
} else {
cout << s;
}
setcolor(7);
r0;
}
inline bool out(void) {
_cl;
cout << "许愿+1 对碰+1 三连+5 清台+5" << el;
color('R', "R:红色 ");
color('W', "W:西瓜红 ");
color('O', "O:橙色 ");
color('Y', "Y:黄色 ");
color('G', "G:绿色 ");
color('C', "C:青色 ");
color('S', "S:天蓝 ");
color('B', "B:蓝色 ");
color('P', "P:紫色 ");
color('p', "p:粉色\n");
cout << "-------------" << el;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
cout << "| ";
color(s[i][j]);
cout << sp;
}
cout << "|" << el;
cout << "-------------" << el;
}
cout << "已收集乌龟数:" << cnt << el;
cout << "剩余可拆袋数:" << bag << el;
cout << "幸运色:";
color(w);
cout << el;
r0;
}
std::unordered_map<char, int> tot;
inline bool check(void) {
if (!bag) {
r0;
}
std::unordered_set<char> st;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (!isdigit(s[i][j])) {
st.insert(s[i][j]);
}
}
}
return !(st.size() == 9 && st.find(w) == st.end());
}
inline bool check2(void) {
std::unordered_set<char> st;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (!isdigit(s[i][j])) {
st.insert(s[i][j]);
}
}
}
return !(st.size() == 9 && st.find(w) == st.end()) && prebag <= 2;
}
inline char ran(void) {
int r = _ra(0, 9);
return c[r];
}
inline bool isequ(char a, char b, char c) {
return a == b && b == c;
}
inline char mygetchar(void) {
str s;
cin >> s;
return s[0];
}
std::vector<std::pair<int, int>> v;
inline bool start(void) {
Sleep_write("乌龟对对碰\n");
_sl(200);
Sleep_write("作者:");
color('C', "Yuexingfei_qwq\n", 1);
Sleep_write("不了解的可以看这:https://baike.baidu.com/item/乌龟对对碰\n");
_sl(200);
while (1) {
Sleep_write("是否启动网站“https://baike.baidu.com/item/乌龟对对碰”?Y/N\n");
str s;
cin >> s;
if (s == "Y" || s == "y") {
system("start https://baike.baidu.com/item/乌龟对对碰");
break;
} else {
if (s == "N" || s == "n") {
break;
} else {
Sleep_write("无效输入\n");
_sl(900);
_cl;
}
}
}
_pa;
_cl;
Sleep_write("在这里,你初始有9个可拆袋,当游戏无法继续进行后,你能得到你现在得到的总乌龟数\n");
_sl(200);
_pa;
r0;
}
signed main(void) {
_sr;
system("title 乌龟对对碰");
#ifndef DEBUG
start();
#endif
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
s[i][j] = ((i - 1) * 3 + j) + '0';
}
}
while (1) {
_cl;
Sleep_write("请选择幸运色(输入颜色对应的字母):\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
w = mygetchar();
if (c.find(w) == string::npos) {
Sleep_write("输入无效\n");
_sl(1500);
} else {
break;
}
}
while (check()) {
prebag = bag;
out();
Sleep_write("按下任意键拆袋\n");
_ge;
bool f = 1;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (bag == 0) {
f = 0;
break;
}
if (isdigit(s[i][j])) {
bag--;
if (check2()) {
int now = rand() % 3;
if (now == 1) {
s[i][j] = ran();
} else {
if (!now) {
s[i][j] = w;
} else {
bool flag = 0;
F(k, 0, 9, 1) {
if (tot[::c[k]] == 1) {
s[i][j] = ::c[k];
flag = 1;
}
}
if (!flag) {
s[i][j] = ran();
}
}
}
} else {
s[i][j] = ran();
}
tot[s[i][j]]++;
iswish[i][j] = 0;
out();
_sl(500);
}
}
if (!f) {
break;
}
}
out();
//优先级:许愿 > 三连 > 对碰 > 清台
int cnt = 0;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (!iswish[i][j] && s[i][j] == w) {
cnt++;
iswish[i][j] = 1;
}
}
}
if (cnt) {
Sleep_write("许愿+");
cout << cnt << el;
_sl(1500);
bag += cnt;
out();
_sl(500);
}
cnt = 0;
v.clear();
op.reset();
if (isequ(s[1][1], s[1][2], s[1][3]) && op.judge(1, 'x', 0)) {
cnt++;
op.set(1, 'x', 1);
}
if (isequ(s[2][1], s[2][2], s[2][3]) && op.judge(2, 'x', 0)) {
cnt++;
op.set(2, 'x', 1);
}
if (isequ(s[3][1], s[3][2], s[3][3]) && op.judge(3, 'x', 0)) {
cnt++;
op.set(3, 'x', 1);
}
//x
if (isequ(s[1][1], s[2][1], s[3][1]) && op.judge(1, 'y', 0)) {
cnt++;
op.set(1, 'y', 1);
}
if (isequ(s[1][2], s[2][2], s[3][2]) && op.judge(2, 'y', 0)) {
cnt++;
op.set(2, 'y', 1);
}
if (isequ(s[1][3], s[2][3], s[3][3]) && op.judge(3, 'y', 0)) {
cnt++;
op.set(3, 'y', 1);
}
//y
if (isequ(s[1][1], s[2][2], s[3][3]) && op.judge(1, 'l', 0)) {
cnt++;
op.set(1, 'd', 1);
}
if (isequ(s[1][3], s[2][2], s[3][1]) && op.judge(2, 'l', 0)) {
cnt++;
op.set(2, 'd', 1);
}
//l
if (cnt) {
Sleep_write("三连+");
cout << cnt << el;
::cnt += cnt * 3;
bag += cnt * 5;
_sl(1500);
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (isthree[i][j]) {
tot[s[i][j]]--;
s[i][j] = (i - 1) * 3 + j + '0';
}
}
}
out();
_sl(500);
}
cnt = 0;
F(k, 0, 9, 1) {
while (tot[::c[k]] > 1) {
cnt++;
tot[::c[k]] -= 2;
int now = 0;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (s[i][j] == ::c[k]) {
now++;
s[i][j] = (i - 1) * 3 + j + '0';
if (now >= 2) {
break;
}
}
}
if (now >= 2) {
break;
}
}
}
}
if (cnt) {
Sleep_write("对碰+");
cout << cnt << el;
bag += cnt;
::cnt += cnt * 2;
_sl(1500);
out();
_sl(500);
}
cnt = 0;
F(i, 0, 9, 1) {
cnt += tot[c[i]];
}
if (!cnt) {
Sleep_write("全场清台+1\n");
bag += 5;
_sl(1500);
out();
_sl(500);
}
}
Sleep_write("无袋可拆!\n");
_sl(1500);
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
s[i][j] = ((i - 1) * 3 + j) + '0';
}
}
F(i, 0, 9, 1) {
cnt += tot[c[i]];
}
out();
Sleep_write("你收集了");
cout << cnt;
Sleep_write("个乌龟!\n");
_sl(1000);
_pa;
_cl;
system("ipconfig");
_sl(500);
MessageBoxA(0, "已发货~", "获取到你的地址!", 0);
r0;
}
/*
-------------
| 1 | 2 | 3 |
-------------
| 4 | 5 | 6 |
-------------
| 7 | 8 | 9 |
-------------
red:4 R
orange:6 O
yellow:14 Y
green:10 G
cyan:11 C
blue:1 B
purple:5 P
pink:13 p
watermalon:12 W
sky:3 S
*/
纯享版(无需其他文件):
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <winuser.h>
#define el "\n"
#define sp " "
#define fi first
#define se second
#define inf 1e18
#define r0 return 0
#define int long long
#define F(i, a, b, c) for (int i = a; i <= b; i += c)
#define debug printf ("bug is in here\n")
#define TheEnd continue
#define base(s) s = sp + s
#define lcm(a, b) a / __gcd(a, b) * b
#define setp(x) fixed << setprecision(x)
//#define GAME_1
using namespace std;
typedef long long ll;
typedef string str;
using ull = unsigned long long;
#ifndef GAME_1
#define _cl system("cls")
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _ge getch()
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a
inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {
for (auto i : s) {
if (t == "cin") {
cout << i;
} else {
putchar(i);
}
_sl(y);
}
}
inline void setcolor(int color) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
}
#else
#include "game_1.h"
#endif
char s[5][5];
int bag = 9, prebag, cnt;
str c = "RBCOYGPpWS";
std::vector<std::bitset<5>> iswish(5), isthree(5);
char w;
struct Info {
inline bool reset() {
F(i, 0, 4, 1) {
isthree[i].reset();
}
r0;
}
inline bool set(int x, char op, bool f) {
if (op == 'x' || op == 'r') {
F(i, 1, 3, 1) {
isthree[x][i] = f;
}
}
if (op == 'y' || op == 'c') {
F(i, 1, 3, 1) {
isthree[i][x] = f;
}
}
if (op == 'd' || op == 'l') {
if (x == 1) {
F(i, 1, 3, 1) {
isthree[i][i] = f;
}
} else {
F(i, 1, 3, 1) {
isthree[i][3 - i + 1] = f;
}
}
}
r0;
}
inline bool judge(int x, char op, bool f) {
if (op == 'x' || op == 'r') {
F(i, 1, 3, 1) {
if (isthree[x][i] != f) {
r0;
}
}
return 1;
}
if (op == 'y' || op == 'c') {
F(i, 1, 3, 1) {
if (isthree[i][x] != f) {
r0;
}
}
return 1;
}
if (op == 'd' || op == 'l') {
if (x == 1) {
F(i, 1, 3, 1) {
if (isthree[i][i] != f) {
r0;
}
}
return 1;
} else {
F(i, 1, 3, 1) {
if (isthree[i][3 - i + 1] != f) {
r0;
}
}
return 1;
}
}
r0;
}
} op;
inline bool color(char c, str s = "Yuexingfei_qwq.", bool isSleep = 0) {
if (s == "Yuexingfei_qwq.") {
s = "";
s += c;
}
switch (c) {
case 'R':
setcolor(4);
break;
case 'O':
setcolor(6);
break;
case 'Y':
setcolor(14);
break;
case 'G':
setcolor(10);
break;
case 'C':
setcolor(11);
break;
case 'B':
setcolor(1);
break;
case 'P':
setcolor(5);
break;
case 'p':
setcolor(13);
break;
case 'W':
setcolor(12);
break;
case 'S':
setcolor(3);
break;
}
if (isSleep) {
Sleep_write(s);
} else {
cout << s;
}
setcolor(7);
r0;
}
inline bool out(void) {
_cl;
cout << "许愿+1 对碰+1 三连+5 清台+5" << el;
color('R', "R:红色 ");
color('W', "W:西瓜红 ");
color('O', "O:橙色 ");
color('Y', "Y:黄色 ");
color('G', "G:绿色 ");
color('C', "C:青色 ");
color('S', "S:天蓝 ");
color('B', "B:蓝色 ");
color('P', "P:紫色 ");
color('p', "p:粉色\n");
cout << "-------------" << el;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
cout << "| ";
color(s[i][j]);
cout << sp;
}
cout << "|" << el;
cout << "-------------" << el;
}
cout << "已收集乌龟数:" << cnt << el;
cout << "剩余可拆袋数:" << bag << el;
cout << "幸运色:";
color(w);
cout << el;
r0;
}
std::unordered_map<char, int> tot;
inline bool check(void) {
if (!bag) {
r0;
}
std::unordered_set<char> st;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (!isdigit(s[i][j])) {
st.insert(s[i][j]);
}
}
}
return !(st.size() == 9 && st.find(w) == st.end());
}
inline bool check2(void) {
std::unordered_set<char> st;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (!isdigit(s[i][j])) {
st.insert(s[i][j]);
}
}
}
return !(st.size() == 9 && st.find(w) == st.end()) && prebag <= 2;
}
inline char ran(void) {
int r = _ra(0, 9);
return c[r];
}
inline bool isequ(char a, char b, char c) {
return a == b && b == c;
}
inline char mygetchar(void) {
str s;
cin >> s;
return s[0];
}
std::vector<std::pair<int, int>> v;
inline bool start(void) {
Sleep_write("乌龟对对碰\n");
_sl(200);
Sleep_write("作者:");
color('C', "Yuexingfei_qwq\n", 1);
Sleep_write("不了解的可以看这:https://baike.baidu.com/item/乌龟对对碰\n");
_sl(200);
while (1) {
Sleep_write("是否启动网站“https://baike.baidu.com/item/乌龟对对碰”?Y/N\n");
str s;
cin >> s;
if (s == "Y" || s == "y") {
system("start https://baike.baidu.com/item/乌龟对对碰");
break;
} else {
if (s == "N" || s == "n") {
break;
} else {
Sleep_write("无效输入\n");
_sl(900);
_cl;
}
}
}
_pa;
_cl;
Sleep_write("在这里,你初始有9个可拆袋,当游戏无法继续进行后,你能得到你现在得到的总乌龟数\n");
_sl(200);
_pa;
r0;
}
signed main(void) {
_sr;
system("title 乌龟对对碰");
#ifndef DEBUG
start();
#endif
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
s[i][j] = ((i - 1) * 3 + j) + '0';
}
}
while (1) {
_cl;
Sleep_write("请选择幸运色(输入颜色对应的字母):\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
w = mygetchar();
if (c.find(w) == string::npos) {
Sleep_write("输入无效\n");
_sl(1500);
} else {
break;
}
}
while (check()) {
prebag = bag;
out();
Sleep_write("按下任意键拆袋\n");
_ge;
bool f = 1;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (bag == 0) {
f = 0;
break;
}
if (isdigit(s[i][j])) {
bag--;
if (check2()) {
int now = rand() % 3;
if (now == 1) {
s[i][j] = ran();
} else {
if (!now) {
s[i][j] = w;
} else {
bool flag = 0;
F(k, 0, 9, 1) {
if (tot[::c[k]] == 1) {
s[i][j] = ::c[k];
flag = 1;
}
}
if (!flag) {
s[i][j] = ran();
}
}
}
} else {
s[i][j] = ran();
}
tot[s[i][j]]++;
iswish[i][j] = 0;
out();
_sl(500);
}
}
if (!f) {
break;
}
}
out();
//优先级:许愿 > 三连 > 对碰 > 清台
int cnt = 0;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (!iswish[i][j] && s[i][j] == w) {
cnt++;
iswish[i][j] = 1;
}
}
}
if (cnt) {
Sleep_write("许愿+");
cout << cnt << el;
_sl(1500);
bag += cnt;
out();
_sl(500);
}
cnt = 0;
v.clear();
op.reset();
if (isequ(s[1][1], s[1][2], s[1][3]) && op.judge(1, 'x', 0)) {
cnt++;
op.set(1, 'x', 1);
}
if (isequ(s[2][1], s[2][2], s[2][3]) && op.judge(2, 'x', 0)) {
cnt++;
op.set(2, 'x', 1);
}
if (isequ(s[3][1], s[3][2], s[3][3]) && op.judge(3, 'x', 0)) {
cnt++;
op.set(3, 'x', 1);
}
//x
if (isequ(s[1][1], s[2][1], s[3][1]) && op.judge(1, 'y', 0)) {
cnt++;
op.set(1, 'y', 1);
}
if (isequ(s[1][2], s[2][2], s[3][2]) && op.judge(2, 'y', 0)) {
cnt++;
op.set(2, 'y', 1);
}
if (isequ(s[1][3], s[2][3], s[3][3]) && op.judge(3, 'y', 0)) {
cnt++;
op.set(3, 'y', 1);
}
//y
if (isequ(s[1][1], s[2][2], s[3][3]) && op.judge(1, 'l', 0)) {
cnt++;
op.set(1, 'd', 1);
}
if (isequ(s[1][3], s[2][2], s[3][1]) && op.judge(2, 'l', 0)) {
cnt++;
op.set(2, 'd', 1);
}
//l
if (cnt) {
Sleep_write("三连+");
cout << cnt << el;
::cnt += cnt * 3;
bag += cnt * 5;
_sl(1500);
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (isthree[i][j]) {
tot[s[i][j]]--;
s[i][j] = (i - 1) * 3 + j + '0';
}
}
}
out();
_sl(500);
}
cnt = 0;
F(k, 0, 9, 1) {
while (tot[::c[k]] > 1) {
cnt++;
tot[::c[k]] -= 2;
int now = 0;
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
if (s[i][j] == ::c[k]) {
now++;
s[i][j] = (i - 1) * 3 + j + '0';
if (now >= 2) {
break;
}
}
}
if (now >= 2) {
break;
}
}
}
}
if (cnt) {
Sleep_write("对碰+");
cout << cnt << el;
bag += cnt;
::cnt += cnt * 2;
_sl(1500);
out();
_sl(500);
}
cnt = 0;
F(i, 0, 9, 1) {
cnt += tot[c[i]];
}
if (!cnt) {
Sleep_write("全场清台+1\n");
bag += 5;
_sl(1500);
out();
_sl(500);
}
}
Sleep_write("无袋可拆!\n");
_sl(1500);
F(i, 1, 3, 1) {
F(j, 1, 3, 1) {
s[i][j] = ((i - 1) * 3 + j) + '0';
}
}
F(i, 0, 9, 1) {
cnt += tot[c[i]];
}
out();
Sleep_write("你收集了");
cout << cnt;
Sleep_write("个乌龟!\n");
_sl(1000);
_pa;
_cl;
system("ipconfig");
_sl(500);
MessageBoxA(0, "已发货~", "获取到你的地址!", 0);
r0;
}
/*
-------------
| 1 | 2 | 3 |
-------------
| 4 | 5 | 6 |
-------------
| 7 | 8 | 9 |
-------------
red:4 R
orange:6 O
yellow:14 Y
green:10 G
cyan:11 C
blue:1 B
purple:5 P
pink:13 p
watermalon:12 W
sky:3 S
*/
绿黄斗
其实是借鉴了 这题 的想法。
新手教程
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
using namespace std;
int main() {
printf ("欢迎来到绿黄斗世界!\n");
Sleep(1000);
printf("在正式开始玩前,先来练习一下吧!");
Sleep(1000);
system("cls");
while (1) {
printf("操作输入\"1\":换兵\n");
Sleep(1000);
printf("效果:把 \"输入的第一个数\" 号兵营的 \"输入的第三个数\" 个兵放到 \"输入的第二个数”\"号兵营\n");
Sleep(2000);
printf("地图:\n*****************************\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("9 10 5 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("3 6 6 9 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("2 6 5");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****************************\n请绿操作!\n");
Sleep(2000);
printf ("试着把绿队2号兵营的6个兵移到3号兵营吧!\n");
printf("提示:要先输入数字1,表示你要换兵哦!\n");
int a, b, c, d;
scanf ("%d%d%d%d", &a, &b, &c, &d);
if (a == 1 && b == 2 && c == 3 && d == 6)
break;
else {
printf("输入错误!");
Sleep(1000);
system("cls");
}
}
system("cls");
printf("地图:\n*****************************\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("9 4 11 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("3 6 6 9 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("2 6 5");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****************************\n");
Sleep(2500);
printf ("很好!\n");
system("cls");
while (1) {
printf("操作输入\"2\":进攻\n");
Sleep(1000);
printf("效果:让本队最靠近敌方(包括无人领地)的兵营进攻\n");
Sleep(2000);
printf("分三种情况:\n一:我多敌少,夺得一格地盘,消耗兵力为对方兵力\n");
printf("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("5 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("3");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****\n请绿操作!\n");
Sleep(2000);
printf("请输入\"2\"进攻!\n");
int x;
scanf ("%d", &x);
if (x == 2) {
break;
} else {
printf("输入错误!");
Sleep(1000);
system("cls");
}
}
printf("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("2 0");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****\n");
Sleep(1000);
printf ("很好!\n");
Sleep(1000);
system("cls");
while (1) {
printf("二:敌多我少,地盘不变,本兵营兵力归零,对方兵力消耗为我方兵力\n");
printf("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("2 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("5");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****\n请绿操作!\n");
Sleep(2000);
printf("请输入\"2\"进攻!\n");
int x;
scanf ("%d", &x);
if (x == 2) {
break;
} else {
printf("输入错误!");
Sleep(1000);
system("cls");
}
}
printf("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("0 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("3");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****\n");
Sleep(1000);
printf ("很好!\n");
Sleep(1000);
system("cls");
while (1) {
printf("三:敌我相等,地盘不变,双方兵力都归零\n");
printf("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("11 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("11");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****\n请绿操作!\n");
Sleep(2000);
printf("请输入\"2\"进攻!\n");
int x;
scanf ("%d", &x);
if (x == 2) {
break;
} else {
printf("输入错误!");
Sleep(1000);
system("cls");
}
}
printf("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf ("0 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
printf ("0");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
printf ("\n*****\n");
Sleep(1000);
printf ("很好!\n");
Sleep(1000);
system("cls");
printf("输入别的数字不操作,谁先占领所有地盘,谁就赢了!\n");
Sleep(3000);
printf("恭喜你,完成了新手教程,快去正式版玩吧!\n祝游玩愉快!");
Sleep(3000);
return 0;
}
正式游戏
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
using namespace std;
struct Info {
int num, di; //di:地盘 (1:绿 | 2:黄 | 0:无)
} a[11];
int y = 3, g = 3, w = 4, opt;//y:黄色地盘 | g:绿色地盘 | w:无人地盘
void init() {
for (int i = 1; i <= 10; i++) {
a[i].num = rand() % 6 + 1;
}
a[1].di = a[2].di = a[3].di = 1;
a[4].di = a[5].di = a[6].di = a[7].di = 0;
a[8].di = a[9].di = a[10].di = 2;
}
void out() {
printf ("地图:\n***************************************\n");
for (int i = 1; i <= 10; i++) {
switch (a[i].di) {
case 1:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
break;
case 2:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
break;
default:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
break;
}
printf ("%d ", a[i].num);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}
printf ("\n***************************************\n");
}
void tian() {
Sleep(1000);
printf ("天降神兵!\n");
Sleep(1500);
system("cls");
int cl = rand() % 10 + 1;
out();
printf ("降在总第%d个兵营,加三个兵!", cl);
Sleep(1000);
a[cl].num += 3;
}
void f1(int n, int m, int l) {//f:绿
a[n].num -= l;
a[m].num += l;
}
void f2() {
if (a[g + 1].di == 0) {
if (a[g].num > a[g + 1].num) {
a[g].num -= a[g + 1].num;
a[g + 1].num = 0;
a[g + 1].di = 1;
g++;
w--;
} else {
if (a[g].num < a[g + 1].num) {
a[g + 1].num -= a[g].num;
a[g].num = 0;
} else {
a[g].num = 0;
a[g + 1].num = 0;
}
}
} else {
if (a[g].num > a[g + 1].num) {
a[g].num -= a[g + 1].num;
a[g + 1].num = 0;
a[g + 1].di = 1;
g++;
y--;
} else {
if (a[g].num < a[g + 1].num) {
a[g + 1].num -= a[g].num;
a[g].num = 0;
} else {
a[g].num = 0;
a[g + 1].num = 0;
}
}
}
}
void g1(int n, int m, int l) {//g:黄
n = n + g + w;
m = m + g + w;
a[n].num -= l;
a[m].num += l;
}
void g2() {
if (a[g + w].di == 0) {
if (a[g + w + 1].num > a[g + w].num) {
a[g + w + 1].num -= a[g + w].num;
a[g + w].num = 0;
a[g + w].di = 2;
y++;
w--;
} else {
if (a[g + w + 1].num < a[g + w].num) {
a[g + w].num -= a[g].num;
a[g + w + 1].num = 0;
} else {
a[g + w + 1].num = 0;
a[g + w].num = 0;
}
}
} else {
if (a[g + w + 1].num > a[g + w].num) {
a[g + w + 1].num -= a[g + w].num;
a[g + w].num = 0;
a[g + w].di = 2;
y++;
g--;
} else {
if (a[g + w + 1].num < a[g + w].num) {
a[g + w].num -= a[g].num;
a[g + w + 1].num = 0;
} else {
a[g + w + 1].num = 0;
a[g + w].num = 0;
}
}
}
}
int main() {
srand(time(0));
init();
while (1) {
if (rand() % 5 == 2)
tian();
system("cls");
out();
printf ("请绿操作!\n");
scanf ("%d", &opt);
switch (opt) {
case 1://移兵
int n, m, l;
scanf("%d%d%d", &n, &m, &l);
f1(n, m, l);
break;
case 2://攻击
f2();
break;
}
system("cls");
out();
printf ("请黄操作!\n");
scanf ("%d", &opt);
switch (opt) {
case 1://移兵
int n, m, l;
scanf("%d%d%d", &n, &m, &l);
g1(n, m, l);
break;
case 2://攻击
g2();
break;
system("cls");
out();
}
//判断
if (g == 10) {
printf ("绿赢了!\n");
break;
} else {
if (y == 10) {
printf ("黄赢了!\n");
break;
}
}
}
return 0;
}//移兵:输入兵营号为本队从左到右的第几个
/*
0 * * * \ \ \ \ + + +
*/
边界之争(绿黄斗的完整版)
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#define pa system("pause")
using namespace std;
struct Info {
int num, di; //di:地盘 (1:绿 | 2:黄 | 0:无)
} a[6];
int y = 2, g = 2, w = 1, opt;//y:黄色地盘 | g:绿色地盘 | w:无人地盘
bool err1, err2;
inline int write(const string _Str) {
for (int i = 0; i < (int)_Str.size(); i++) {
putchar(_Str[i]);
Sleep(50);
}
return EOF;
}
void init() {
for (int i = 1; i <= 5; i++) {
a[i].num = rand() % 6 + 1;
}
a[1].di = a[2].di = 1;
a[3].di = 0;
a[4].di = a[5].di = 2;
}
void out() {
system("cls");
printf ("地图:\n**************\n");
for (int i = 1; i <= 5; i++) {
switch (a[i].di) {
case 1:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
break;
case 2:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
break;
default:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
break;
}
if (a[i].num < 0)
a[i].num = 0;
printf ("%d ", a[i].num);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}
printf ("\n**************\n");
}
void tian() {
Sleep(1000);
write ("天降神兵!\n");
Sleep(1500);
system("cls");
int cl = rand() % 5 + 1;
out();
printf ("降在总第%d个兵营,加三个兵!", cl);
Sleep(1000);
a[cl].num += 3;
}
void f1(int n, int l, int m) {//f:绿
a[n].num -= l;
a[m].num += l;
}
void f2() {
if (a[g + 1].di == 0) {
if (a[g].num > a[g + 1].num) {
a[g].num -= a[g + 1].num;
a[g + 1].num = a[g].num;
a[g].num = 0;
a[g + 1].di = 1;
g++;
w--;
} else {
if (a[g].num < a[g + 1].num) {
a[g + 1].num -= a[g].num;
a[g].num = a[g + 1].num;
a[g + 1].num = 0;
a[g].di = 0;
g--;
w++;
} else {
a[g].num = 0;
a[g + 1].num = 0;
}
}
} else {
if (a[g].num > a[g + 1].num) {
a[g].num -= a[g + 1].num;
a[g + 1].num = a[g].num;
a[g].num = 0;
a[g + 1].di = 1;
g++;
y--;
} else {
if (a[g].num < a[g + 1].num) {
a[g + 1].num -= a[g].num;
a[g].num = a[g + 1].num;
a[g + 1].num = 0;
a[g].di = 2;
g--;
y++;
} else {
a[g].num = 0;
a[g + 1].num = 0;
}
}
}
}
void g1(int n, int l, int m) {//g:黄
n = n + g + w;
m = m + g + w;
a[n].num -= l;
a[m].num += l;
}
void g2() {
if (a[g + w].di == 0) {
if (a[g + w + 1].num > a[g + w].num) {
a[g + w + 1].num -= a[g + w].num;
a[g + w].num = a[g + w + 1].num;
a[g + w + 1].num = 0;
a[g + w].di = 2;
y++;
w--;
} else {
if (a[g + w + 1].num < a[g + w].num) {
a[g + w].num -= a[g + w + 1].num;
a[g + w].num = a[g + w + 1].num;
a[g + w + 1].num = 0;
a[g + w + 1].di = 0;
y--;
w++;
} else {
a[g + w + 1].num = 0;
a[g + w].num = 0;
}
}
} else {
if (a[g + w + 1].num > a[g + w].num) {
a[g + w + 1].num -= a[g + w].num;
a[g + w].num = a[g + w + 1].num;
a[g + w + 1].num = 0;
a[g + w].di = 2;
y++;
g--;
} else {
if (a[g + w + 1].num < a[g + w].num) {
a[g + w].num -= a[g + w + 1].num;
a[g + w].num = a[g + w + 1].num;
a[g + w + 1].num = 0;
a[g + w + 1].di = 1;
y--;
g++;
} else {
a[g + w + 1].num = 0;
a[g + w].num = 0;
}
}
}
}
void welcome() {
MessageBox(NULL, TEXT("边 界 之 争"), TEXT("进入"), MB_OK);
MessageBox(NULL, TEXT("本游戏需要两个人互相对抗"), TEXT("提示"), MB_OK);
write("你好,勇士们!欢迎来到边界之争!\n");
Sleep(1000);
write("作者:yuexingfei\n");
Sleep(1000);
pa;
}
void xin() {
write (" 新");
Sleep(1000);
write (" 手");
Sleep(1000);
write (" 教");
Sleep(1000);
write (" 程\n");
Sleep(1000);
}
void zheng() {
system("cls");
write (" 正");
Sleep(1000);
write (" 式");
Sleep(1000);
write (" 游");
Sleep(1000);
write (" 戏\n");
Sleep(1000);
system("cls");
}
bool erro1(int n, int l, int m) {
if (n > g || m > g || a[n].num < l ) {
err1 = false;
return false;
}
return true;
}
bool erro2(int n, int l, int m) {
if (g + w > n + g + w || g + w > m + g + w || a[n + g + w].num < l ) {
err2 = false;
return false;
}
return true;
}
int main() {
system("title 边界之争");
system("color 17");
welcome();
char c;
while (1) {
write ("是否跳过新手教程?(y/n)\n");
scanf ("%c", &c);
if (c == 'n' || c == 'N' || c == 'y' || c == 'Y')
break;
else
write ("输入错误!\n");
Sleep(1500);
system("cls");
}
system("color 07");
//新手教程
if (c == 'n' || c == 'N') {
system("cls");
xin();
write ("一:布局\n");
Sleep(1000);
write ("共5个地盘,初始绿、黄双方各2个地盘,中间的无人领地1个地盘\n");
Sleep(1000);
write ("兵营号为本队从左到右数的第几个兵营,数字代表本兵营的兵力,颜色代表阵营(绿色为绿队,灰色为无人领地,黄色为黄队)\n");
pa;
system("cls");
write ("二:输入类型\n");
Sleep(1000);
write ("输入1:换兵\n");
Sleep(1000);
write ("输入2:进攻\n");
Sleep(1000);
write ("输入其他数字:不操作\n");
Sleep(1000);
write ("提示:要先输入表示操作类型的数字哦~\n");
pa;
system("cls");
write ("三:操作输入\n");
while (1) {
write("操作输入\"1\":换兵\n");
Sleep(1000);
write ("首先,输入1表示你要换兵;其次,输入需要调动的兵营号;然后,输入想要调动的兵力的数量;最后,输入要调往的兵营号。\n");
Sleep(2000);
write("地图:\n**************\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("9 5 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("6 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
write ("6 5");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n**************\n请绿操作!\n\n");
Sleep(2000);
write ("试着在绿队1号兵营中抽出6个兵移到2号兵营吧!\n");
write("提示:要先输入数字1,表示你要换兵哦!\n");
int a, b, c, d;
scanf ("%d%d%d%d", &a, &b, &c, &d);
if (a == 1 && b == 1 && c == 6 && d == 2)
break;
else {
write("输入错误!");
Sleep(1000);
system("cls");
}
}
system("cls");
write("地图:\n**************\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("3 11 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("6 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
write ("6 5");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n**************\n");
Sleep(1002);
write ("很好!\n");
Sleep(2500);
system("cls");
while (1) {
write("操作输入\"2\":进攻\n");
Sleep(1000);
write("效果:让本队最靠近敌方(包括无人领地)的兵营进攻\n");
Sleep(2000);
write("分三种情况:\n一:我多敌少,夺得一格地盘,消耗兵力为对方兵力\n");
write("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("5 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("3");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n*****\n请绿操作!\n\n");
Sleep(2000);
write("请输入\"2\"进攻!\n");
int x;
scanf ("%d", &x);
if (x == 2) {
break;
} else {
write("输入错误!");
Sleep(1000);
system("cls");
}
}
write("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("2 0");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n*****\n");
Sleep(1000);
write ("很好!\n");
Sleep(1000);
system("cls");
while (1) {
write("二:敌多我少,失去一格地盘,本兵营兵力归零,对方兵力消耗为我方兵力\n");
write("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("2 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("5");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n*****\n请绿操作!\n\n");
Sleep(2000);
write("请输入\"2\"进攻!\n");
int x;
scanf ("%d", &x);
if (x == 2) {
break;
} else {
write("输入错误!");
Sleep(1000);
system("cls");
}
}
write("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("0 3");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n*****\n");
Sleep(1000);
write ("很好!\n");
Sleep(1000);
system("cls");
while (1) {
write("三:敌我相等,地盘不变,双方兵力都归零\n");
write("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("11 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("11");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n*****\n请绿操作!\n\n");
Sleep(2000);
write("请输入\"2\"进攻!\n");
int x;
scanf ("%d", &x);
if (x == 2) {
break;
} else {
write("输入错误!");
Sleep(1000);
system("cls");
}
}
write("地图:\n*****\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
write ("0 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
write ("0");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
write ("\n*****\n");
Sleep(1000);
write ("很好!\n");
Sleep(1000);
system("cls");
write ("四:获胜条件\n");
Sleep(1000);
write("谁先占领所有地盘,谁就赢了!\n");
Sleep(3000);
system("cls");
write("恭喜你,完成了新手教程!\n祝游玩愉快!\n");
system("pause");
}
//正式
system("cls");
zheng();
srand(time(0));
init();
while (1) {
int t = rand() % 4;
if (t == 1)
tian();
while (1) {
err1 = true;
out();
write ("请绿操作!\n");
scanf ("%d", &opt);
switch (opt) {
case 1://移兵
int n, m, l;
scanf("%d%d%d", &n, &l, &m);
if (erro1(n, l, m))
f1(n, l, m);
break;
case 2://攻击
f2();
break;
}
if (!err1) {
write ("操作错误!\n");
Sleep(1000);
} else
break;
}
//判断1
if (g == 5) {
out();
Sleep(1000);
system("cls");
MessageBox(NULL, TEXT("恭喜绿胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
break;
} else {
if (y == 5) {
out();
Sleep(1000);
system("cls");
MessageBox(NULL, TEXT("恭喜黄胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
break;
}
}
system("cls");
while (1) {
err2 = true;
out();
write ("请黄操作!\n");
scanf ("%d", &opt);
switch (opt) {
case 1://移兵
int n, m, l;
scanf("%d%d%d", &n, &l, &m);
if (erro2(n, l, m))
g1(n, l, m);
break;
case 2://攻击
g2();
break;
}
if (!err2) {
write ("操作错误!\n");
Sleep(1000);
} else
break;
}
//判断2
if (g == 5) {
out();
Sleep(1000);
system("cls");
MessageBox(NULL, TEXT("恭喜绿胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
break;
} else {
if (y == 5) {
out();
Sleep(1000);
system("cls");
MessageBox(NULL, TEXT("恭喜黄胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
break;
}
}
}
system("pause");
return 0;
}
色块对决(目前最长游戏……1707行)
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#define el "\n"
#define sp " "
#define fi first
#define se second
#define inf 1e18
#define r0 return 0
#define int long long
#define F(i, a, b, c) for (int i = a; i <= b; i += c)
#define debug printf ("bug is in here\n")
#define TheEnd continue
#define base(s) s = sp + s
#define lcm(a, b) a / __gcd(a, b) * b
#define setp(x) fixed << setprecision(x)
#define getmid(l, r) l + (r - l) / 2
using namespace std;
typedef long long ll;
typedef string str;
using ull = unsigned long long;
#ifndef GAME1
#define _cl { \
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); \
COORD coord = {0, 0}; \
DWORD count; \
CONSOLE_SCREEN_BUFFER_INFO csbi; \
GetConsoleScreenBufferInfo(hStdOut, &csbi); \
DWORD cellCount = csbi.dwSize.X * csbi.dwSize.Y; \
FillConsoleOutputCharacter(hStdOut, ' ', cellCount, coord, &count); \
FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, coord, &count); \
SetConsoleCursorPosition(hStdOut, coord); \
}
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _PI 3.1415926535897932384626
#define _ge getch()
#define _Get(x) GetAsyncKeyState('x')
#define _KE(x) ((GetAsyncKeyState(x) & 0x8000) ? 1:0)
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a
inline ll x_y(ll x, ll y, ll p = (1LL << 60)) {
int ans_1 = 1;
while (y) {
if (y & 1) {
(ans_1 *= x) %= p;
}
(x *= x) %= p;
y >>= 1;
}
return ans_1;
}
inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {
for (auto i : s) {
if (t == "cout") {
cout << i;
} else {
putchar(i);
}
_sl(y);
}
}
inline void setcolor(int color) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
}
inline void wait(int d = 50) {
_sl(d);
_ge;
}
inline char get(str s, bool f = 0) {
char ch[114514];
int l = 0;
for (auto i : s) {
ch[++l] = i;
}
while (true) {
char x = getchar();
if (x == ' ' || x == '\n') {
TheEnd;
}
if (f) {
return x;
}
for (int i = 1; i <= l; i++) {
if (x == ch[i]) {
return x;
}
}
Sleep_write("Error:输入无效\n");
_sl(500);
//_pa;
}
}
#endif
inline bool color(char c, str s = "Yuexingfei_qwq.", bool isSleep = 0) {
if (s == "Yuexingfei_qwq.") {
s = "";
s += c;
}
switch (c) {
case 'R':
setcolor(4);
break;
case 'O':
setcolor(6);
break;
case 'Y':
setcolor(14);
break;
case 'G':
setcolor(10);
break;
case 'C':
setcolor(11);
break;
case 'B':
setcolor(1);
break;
case 'P':
setcolor(5);
break;
case 'p':
setcolor(13);
break;
case 'W':
setcolor(12);
break;
case 'S':
setcolor(3);
break;
}
if (isSleep) {
Sleep_write(s);
} else {
cout << s;
}
setcolor(7);
r0;
}
str s[100];
std::bitset<20> die;
std::vector<std::pair<int, char>> final;
str co = "RBCOYGPpWS";
int id[20];
char mapcolor[20][100];
int lava[20];
inline int getid(char s) {
switch (s) {
case 'R':
return 1;
break;
case 'W':
return 2;
break;
case 'O':
return 3;
break;
case 'Y':
return 4;
break;
case 'G':
return 5;
break;
case 'C':
return 6;
break;
case 'S':
return 7;
break;
case 'B':
return 8;
break;
case 'P':
return 9;
break;
case 'p':
return 10;
break;
}
return EOF;
}
inline char getcol(int x) {
switch (x) {
case 1:
return 'R';
break;
case 2:
return 'W';
break;
case 3:
return 'O';
break;
case 4:
return 'Y';
break;
case 5:
return 'G';
break;
case 6:
return 'C';
break;
case 7:
return 'S';
break;
case 8:
return 'B';
break;
case 9:
return 'P';
break;
case 10:
return 'p';
break;
}
return EOF;
}
inline bool reset(void) {
s[0] = s[11] = "#################################################################################";
s[1] = s[2] = s[3] = s[4] = s[5] = s[6] = s[7] = s[8] = s[9] = s[10] = "# *#";
F(i, 1, 10, 1) {
id[i] = 1;
}
r0;
}
inline bool reset2(void) {
s[0] = s[11] = "#################################################################################";
s[1] = s[2] = s[3] = s[4] = s[5] = s[6] = s[7] = s[8] = s[9] = s[10] = "#XXX........................................................................#";
F(i, 1, 10, 1) {
id[i] = 25;
lava[i] = 7;
}
F(i, 1, 10, 1) {
F(j, 4, 75, 1) {
mapcolor[i][j] = getcol(rand() % 10 + 1);
}
}
r0;
}
inline void ran(int x) {
F(j, 4, 74, 1) {
F(i, 1, 10, 1) {
mapcolor[i][j] = mapcolor[i][j + 1];
}
}
F(i, 1, 10, 1) {
mapcolor[i][75] = getcol(rand() % 10 + 1);
if (rand() % 8 <= 2) {
lava[i]--;
} else {
if (rand() % 10 == 0) {
lava[i]++;
}
lava[i]++;
}
if (x <= 6) {
lava[i] += rand() % 2;
}
if (x <= 3) {
lava[i] += rand() % 3;
}
lava[i] = std::max(lava[i], 3LL);
lava[i] = std::min(lava[i], 72LL);
}
}
char skin[20] = {0, 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i'};
inline bool show(bool x) {
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO c;
GetConsoleCursorInfo(hOut, &c);
c.bVisible = x;
SetConsoleCursorInfo(hOut, &c);
r0;
}
inline bool out(void) {
_cl;
F(i, 0, 11, 1) {
F(j, 0, 76, 1) {
bool f = 0;
F(k, 0, 9, 1) {
if (die[getid(co[k])] && i == getid(co[k]) && j == 1) {
color(co[k], "D");
f = 1;
break;
}
if (die[getid(co[k])] && j == 75 && i == getid(co[k])) {
color(co[k], "*");
f = 1;
break;
}
if (getid(co[k]) == i && id[getid(co[k])] == j) {
str sk = "";
sk += skin[getid(co[k])];
color(co[k], sk);
f = 1;
}
}
if (f == 0) {
if (s[i][j] == '*') {
color('R', "*");
} else {
cout << s[i][j];
}
}
}
cout << el;
}
r0;
}
inline bool out2(void) {
_cl;
F(i, 0, 11, 1) {
F(j, 0, 76, 1) {
bool f = 0;
F(k, 0, 9, 1) {
if (j <= lava[i] && j && i && i != 11) {
color('R', "X");
f = 1;
break;
}
if (getid(co[k]) == i && id[getid(co[k])] == j) {
str sk = "";
sk += skin[getid(co[k])];
color(co[k], sk);
f = 1;
}
}
if (f == 0) {
if (s[i][j] == '*') {
color('R', "*");
} else {
if (s[i][j] == '.') {
color(mapcolor[i][j], ".");
} else {
cout << s[i][j];
}
}
}
}
cout << el;
}
r0;
}
inline bool iswin(void) {
F(i, 1, 10, 1) {
if (die[i]) {
TheEnd;
}
if (id[i] != 75) {
r0;
}
}
return 1;
}
std::vector<std::pair<int, char>> v;
std::vector<int> rk;
int dif, last;
signed main(void) {
srand(time(NULL));
char c;
int cnt = 0;
int round = 3;
int tot[20] = {0};
int remain;
std::vector<std::pair<char, str>> bro;
goto menu;
menu:
show(1);
_cl;
cout << "------色块对决 The Color Race------" << el;
cout << "1.赌注模式\n2.比赛模式\n3.生存模式\n4.设置皮肤\n5.退出\n作者:";
color('C', "Yuexingfei_qwq\n");
c = get("12345");
_cl;
if (c == '1') {
goto wager;
} else {
if (c == '2') {
cout << "1.普通模式\n2.锦标赛模式\n3.淘汰赛模式" << el;
c = get("123");
_cl;
if (c == '1') {
goto race;
} else {
if (c == '2') {
goto title;
} else {
goto knockout;
}
}
} else {
if (c == '3') {
goto survival;
} else {
if (c == '4') {
goto setskin;
} else {
goto to_the_end;
}
}
}
}
wager:
Sleep_write("请输入你想赌的色块:\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
c = get("RWOYGCSBPp");
Sleep_write("是否设置成“有几率回退”?(Y/N)\n");
dif = (tolower(get("YNyn")) == 'y' ? 1 : 0);
reset();
show(0);
out();
Sleep_write("3……\n");
_sl(1000);
out();
Sleep_write("2……\n");
_sl(1000);
out();
Sleep_write("1……\n");
_sl(1000);
out();
Sleep_write("GO!\n");
_sl(500);
v.clear();
cnt = 0;
while (!iswin()) {
F(i, 1, 10, 1) {
if (id[i] == 75) {
TheEnd;
}
if (dif == 1) {
if (rand() % 4 == 1) {
id[i]--;
}
}
id[i] += rand() % 3;
/*
if (getid(c) == i) {
id[i] += 3;
}
*/
//作弊代码
id[i] = std::min(id[i], 75LL);
id[i] = std::max(id[i], 1LL);
}
out();
cout << "你赌的色块是:";
switch (c) {
case 'R':
color('R', "R(红色)\n");
break;
case 'W':
color('W', "W(西瓜红)\n");
break;
case 'O':
color('O', "O(橙色)\n");
break;
case 'Y':
color('Y', "Y(黄色)\n");
break;
case 'G':
color('G', "G(绿色)\n");
break;
case 'C':
color('C', "C(青色)\n");
break;
case 'S':
color('S', "S(天蓝)\n");
break;
case 'B':
color('B', "B(蓝色)\n");
break;
case 'P':
color('P', "P(紫色)\n");
break;
case 'p':
color('p', "p(粉色)\n");
break;
}
rk.clear();
F(i, 1, 10, 1) {
if (id[i] == 75) {
bool find = 0;
for (auto j : v) {
if (j.se == getcol(i)) {
find = 1;
break;
}
}
if (!find) {
rk.push_back(i);
}
}
}
if (!rk.empty()) {
cnt++;
for (auto i : rk) {
v.push_back({cnt, getcol(i)});
}
}
cnt = v.size();
F(i, 1, 10, 1) {
bool is = 0;
if (id[i] == 75) {
bool find = 0;
for (auto j : v) {
if (j.se == getcol(i)) {
find = 1;
break;
}
}
if (!find) {
if (!is) {
cnt++;
is = 1;
}
v.push_back({cnt, getcol(i)});
}
}
}
for (auto i : v) {
cout << "rk" << i.fi << ": ";
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
if (i.se == c) {
cout << "<-你的色块";
}
cout << el;
}
_sl((rand() % 3) * 100);
}
cnt = 0;
for (auto i : v) {
if (i.se == c) {
cnt = i.fi;
break;
}
}
if (cnt == 1) {
Sleep_write("太棒了!你的色块喜获金牌!!!\n");
} else {
if (cnt <= 3) {
Sleep_write("恭喜你!你的色块进入了前三名!\n");
} else {
if (cnt <= 6) {
Sleep_write("你的色块表现不错,但还需要努力!\n");
} else {
Sleep_write("很遗憾,你的色块排名较后。再试一次吧!\n");
}
}
}
_sl(1000);
_pa;
goto menu;
race:
Sleep_write("请选择难度:\n");
color('B', "1.有手就行\n");
color('Y', "2.简单\n");
color('O', "3.普通\n");
color('R', "4.困难(有几率往回退)\n");
dif = get("1234") - '1' + 1;
Sleep_write("请选择你想要操控的色块:\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
c = get("RWOYGCSBPp");
show(0);
reset();
out();
Sleep_write("3……\n");
_sl(1000);
out();
Sleep_write("2……\n");
_sl(1000);
out();
Sleep_write("1……\n");
_sl(1000);
out();
Sleep_write("GO!\n");
_sl(500);
v.clear();
cnt = 0;
while (!iswin()) {
F(i, 1, 10, 1) {
if (id[i] == 75) {
TheEnd;
}
if (dif == 1) {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)]++;
}
} else {
id[i] += rand() % 2;
}
} else {
if (dif == 2) {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 3;
}
} else {
id[i] += rand() % 2;
}
} else {
if (dif == 3) {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 3;
}
} else {
id[i] += rand() % 3;
}
} else {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 4 - 1;
}
} else {
id[i] += rand() % 4 - 1;
}
}
}
}
id[i] = std::min(id[i], 75LL);
id[i] = std::max(id[i], 1LL);
}
out();
cout << "你操控的色块是:";
switch (c) {
case 'R':
color('R', "R(红色)\n");
break;
case 'W':
color('W', "W(西瓜红)\n");
break;
case 'O':
color('O', "O(橙色)\n");
break;
case 'Y':
color('Y', "Y(黄色)\n");
break;
case 'G':
color('G', "G(绿色)\n");
break;
case 'C':
color('C', "C(青色)\n");
break;
case 'S':
color('S', "S(天蓝)\n");
break;
case 'B':
color('B', "B(蓝色)\n");
break;
case 'P':
color('P', "P(紫色)\n");
break;
case 'p':
color('p', "p(粉色)\n");
break;
}
cout << "你选择的难度是:";
switch (dif) {
case 1:
color('B', "1.有手就行");
break;
case 2:
color('Y', "2.简单");
break;
case 3:
color('O', "3.普通");
break;
default:
color('R', "4.困难(有几率往回退)");
break;
}
cout << "\n按下D键让你的色块冲向终点!" << el;
rk.clear();
F(i, 1, 10, 1) {
if (id[i] == 75) {
bool find = 0;
for (auto j : v) {
if (j.se == getcol(i)) {
find = 1;
break;
}
}
if (!find) {
rk.push_back(i);
}
}
}
if (!rk.empty()) {
cnt++;
for (auto i : rk) {
v.push_back({cnt, getcol(i)});
}
}
cnt = v.size();
F(i, 1, 10, 1) {
bool is = 0;
if (id[i] == 75) {
bool find = 0;
for (auto j : v) {
if (j.se == getcol(i)) {
find = 1;
break;
}
}
if (!find) {
if (!is) {
cnt++;
is = 1;
}
v.push_back({cnt, getcol(i)});
}
}
}
for (auto i : v) {
cout << "rk" << i.fi << ": ";
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
if (i.se == c) {
cout << "<-你";
}
cout << el;
}
_sl(200 / (dif + rand() % 2));
}
cnt = 0;
for (auto i : v) {
if (i.se == c) {
cnt = i.fi;
break;
}
}
if (cnt == 1) {
Sleep_write("太棒了!你的色块喜获金牌!!!\n");
} else {
if (cnt <= 3) {
Sleep_write("恭喜你!你的色块进入了前三名!\n");
} else {
if (cnt <= 6) {
Sleep_write("你的色块表现不错,但还需要努力!\n");
} else {
Sleep_write("很遗憾,你的色块排名较后。再试一次吧!\n");
}
}
}
_sl(1000);
_pa;
goto menu;
title:
round = 3;
memset(tot, 0, sizeof tot);
Sleep_write("锦标赛模式\n请选择比赛轮数(1~5轮):\n");
round = get("12345") - '0';
Sleep_write("请选择你的色块:\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
c = get("RWOYGCSBPp");
Sleep_write("请选择难度:\n");
color('B', "1.有手就行\n");
color('Y', "2.简单\n");
color('O', "3.普通\n");
color('R', "4.困难(有几率往回退)\n");
dif = get("1234") - '1' + 1;
show(0);
F(i, 1, round, 1) {
_cl;
cout << "----- 第 " << i << " 轮比赛 -----" << el;
Sleep_write("准备开始...\n");
_sl(1000);
reset();
v.clear();
cnt = 0;
out();
Sleep_write("3……\n");
_sl(1000);
out();
Sleep_write("2……\n");
_sl(1000);
out();
Sleep_write("1……\n");
_sl(1000);
out();
Sleep_write("GO!\n");
_sl(500);
while (!iswin()) {
F(j, 1, 10, 1) {
if (id[j] == 75) {
TheEnd;
}
if (dif == 1) {
if (getid(c) == j) {
if (_KE('D')) {
id[getid(c)]++;
}
} else {
id[j] += rand() % 2;
}
} else {
if (dif == 2) {
if (getid(c) == j) {
if (_KE('D')) {
id[getid(c)] += rand() % 3;
}
} else {
id[j] += rand() % 2;
}
} else {
if (dif == 3) {
if (getid(c) == j) {
if (_KE('D')) {
id[getid(c)] += rand() % 3;
}
} else {
id[j] += rand() % 3;
}
} else {
if (getid(c) == j) {
if (_KE('D')) {
id[getid(c)] += rand() % 4 - 1;
}
} else {
id[j] += rand() % 4 - 1;
}
}
}
}
id[j] = std::min(id[j], 75LL);
id[j] = std::max(id[j], 1LL);
}
out();
cout << "----- 第 " << i << " / " << round << " 轮 -----\n";
cout << "你(";
color(c, string(1, c));
cout << ")的当前积分: " << tot[getid(c)] << "分\n";
cout << "你选择的难度是:";
switch (dif) {
case 1:
color('B', "1.有手就行");
break;
case 2:
color('Y', "2.简单");
break;
case 3:
color('O', "3.普通");
break;
default:
color('R', "4.困难(有几率往回退)");
break;
}
cout << "\n按下D键让你的色块冲向终点!" << el;
rk.clear();
F(j, 1, 10, 1) {
if (id[j] == 75) {
bool find = 0;
for (auto k : v) {
if (k.se == getcol(j)) {
find = 1;
break;
}
}
if (!find) {
rk.push_back(j);
}
}
}
cnt = v.size();
if (!rk.empty()) {
cnt++;
for (auto j : rk) {
v.push_back({cnt, getcol(j)});
}
}
for (auto j : v) {
cout << "rk" << j.fi << ": ";
switch (j.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
if (j.se == c) {
cout << " <-你";
}
cout << el;
}
_sl(200 / (dif + rand() % 2));
}
for (auto i : v) {
int p = 0;
switch (i.fi) {
case 1:
p = 10;
break;
case 2:
p = 7;
break;
case 3:
p = 5;
break;
case 4:
p = 3;
break;
case 5:
p = 2;
break;
default:
p = 1;
break;
}
tot[getid(i.se)] += p;
}
_cl;
cout << "第 " << i << " 轮比赛结果:\n";
for (auto j : v) {
cout << "rk" << j.fi << ": ";
switch (j.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
cout << " (" << tot[getid(j.se)] << "分)";
if (c == j.se) {
cout << " <-你";
}
cout << el;
}
_pa;
_cl;
cout << "目前积分排名:\n";
v.clear();
F(i, 1, 10, 1) {
if (tot[i] > 0) {
v.push_back({tot[i], getcol(i)});
}
}
std::sort(v.begin(), v.end(), std::greater<std::pair<int, char>>());
cnt = 0, last = -1;
rk.clear();
rk.push_back(0);
for (auto i : v) {
if (i.fi != last) {
last = i.fi;
rk[0] = cnt;
rk[0]++;
}
cnt++;
cout << "rk" << rk[0] << ". ";
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
cout << ": " << i.fi << "分";
if (i.se == c) {
cout << " <-你";
}
cout << el;
}
_pa;
if (i < round) {
Sleep_write("\n准备下一轮比赛...\n");
_sl(3500);
}
}
_cl;
cout << "----- 锦标赛最终结果 -----\n";
final.clear();
F(i, 1, 10, 1) {
if (tot[i] > 0) {
final.push_back({tot[i], getcol(i)});
}
}
std::sort(final.begin(), final.end(), std::greater<std::pair<int, char>>());
cnt = 0, last = -1;
rk.clear();
rk.push_back(0);
for (auto i : final) {
if (i.fi != last) {
last = i.fi;
rk[0] = cnt;
rk[0]++;
}
cnt++;
cout << "rk" << rk[0] << ". ";
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
cout << ": " << i.fi << "分";
if (i.se == c) {
cout << " <-你";
}
if (cnt == 1) {
cout << " ……冠军!";
} else {
if (cnt == 2) {
cout << " ……亚军!";
} else {
if (cnt == 3) {
cout << " ……季军!";
}
}
}
cout << el;
}
cnt = 0;
for (auto i : final) {
if (i.se == c) {
cnt = i.fi;
break;
}
}
if (cnt <= 4) {
cout << "很遗憾,你的色块没有获得名次。继续努力吧!";
cout << el;
_sl(1000);
}
Sleep_write("\n锦标赛结束!\n");
_sl(1000);
_pa;
goto menu;
knockout:
die.reset();
Sleep_write("淘汰赛模式\n请选择难度:\n");
color('B', "1.有手就行\n");
color('Y', "2.简单\n");
color('O', "3.普通\n");
color('R', "4.困难(有几率往回退)\n");
dif = get("1234") - '1' + 1;
Sleep_write("请选择你想要操控的色块:\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
c = get("RWOYGCSBPp");
remain = 10;
round = 1;
show(0);
while (remain >= 1) {
_cl;
cout << "----- 淘汰赛第 " << round << " 轮 -----\n";
cout << "剩余选手: " << remain << "人\n";
Sleep_write("准备开始...\n");
_sl(2000);
reset();
v.clear();
cnt = 0;
out();
Sleep_write("3……\n");
_sl(1000);
out();
Sleep_write("2……\n");
_sl(1000);
out();
Sleep_write("1……\n");
_sl(1000);
out();
Sleep_write("GO!\n");
_sl(500);
while (!iswin()) {
F(i, 1, 10, 1) {
if (die[i] || id[i] == 75) {
TheEnd;
}
if (dif == 1) {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)]++;
}
} else {
id[i] += rand() % 2;
}
} else {
if (dif == 2) {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 3;
}
} else {
id[i] += rand() % 2;
}
} else {
if (dif == 3) {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 3;
}
} else {
id[i] += rand() % 3;
}
} else {
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 4 - 1;
}
} else {
id[i] += rand() % 4 - 1;
}
}
}
}
id[i] = std::min(id[i], 75LL);
id[i] = std::max(id[i], 1LL);
}
out();
cout << "----- 淘汰赛第 " << round << " 轮 -----\n";
cout << "剩余选手: " << remain << "人\n";
cout << "你操控的色块是:";
color(c, string(1, c));
cout << " (按下D键让你的色块冲向终点!)\n";
cout << "难度: ";
switch (dif) {
case 1:
color('B', "有手就行");
break;
case 2:
color('Y', "简单");
break;
case 3:
color('O', "普通");
break;
case 4:
color('R', "困难(有几率往回退)");
break;
}
cout << "\n地图上的D代表已淘汰的色块\n";
rk.clear();
F(i, 1, 10, 1) {
if (!die[i] && id[i] == 75) {
bool find = 0;
for (auto j : v) {
if (j.se == getcol(i)) {
find = 1;
break;
}
}
if (!find) {
rk.push_back(i);
}
}
}
cnt = v.size();
if (!rk.empty()) {
cnt++;
for (auto i : rk) {
v.push_back({cnt, getcol(i)});
}
}
for (auto i : v) {
cout << "rk" << i.fi << ": ";
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
if (i.se == c) {
cout << " <-你";
}
cout << el;
}
_sl(200 / (dif + rand() % 2));
}
_sl(2000);
int q = 0;
for (int i = v.size() - 1; i; i--) {
q++;
if (v[i].fi != v[i - 1].fi) {
break;
}
}
if (q == remain - 1) {
q = 0;
}
std::vector<char> vec;
for (int i = v.size() - 1; i >= 0 && q; i--) {
vec.push_back(v[i].se);
q--;
}
for (auto j : vec) {
die[getid(j)] = 1;
remain--;
}
_cl;
cout << "----- 第 " << round << " 轮结果 -----\n";
cout << "本轮晋级选手:\n";
cnt = 0;
for (auto i : v) {
if (!die[getid(i.se)]) {
cout << ++cnt << ". ";
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
if (i.se == c) {
cout << " <-你";
}
cout << el;
}
}
cout << "\n本轮淘汰选手:";
if (vec.size() == 0) {
cout << "无" << el;
TheEnd;
}
for (auto j : vec) {
color(j, string(1, j));
cout << sp;
}
cout << el;
if (die[getid(c)]) {
Sleep_write("\n很遗憾,你被淘汰了!\n");
_sl(2000);
_pa;
goto menu;
}
if (remain == 1) {
_cl;
cout << "----- 淘汰赛冠军 -----\n";
for (int i = 1; i <= 10; i++) {
if (!die[i]) {
color(getcol(i), string(1, getcol(i)));
if (getcol(i) == c) {
cout << " <- 恭喜你获得冠军!";
} else {
cout << " 获得冠军!";
}
cout << el;
break;
}
}
_sl(2000);
_pa;
goto menu;
}
round++;
Sleep_write("\n准备下一轮比赛...\n");
_sl(3000);
}
goto menu;
survival:
_cl;
bro.clear();
Sleep_write("请选择你想要操控的色块:\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
c = get("RWOYGCSBPp");
_cl;
show(0);
reset2();
v.clear();
die.reset();
out2();
Sleep_write("3……\n");
_sl(1000);
out2();
Sleep_write("2……\n");
_sl(1000);
out2();
Sleep_write("1……\n");
_sl(1000);
out2();
Sleep_write("GO!\n");
_sl(500);
cnt = 0;
while (10 - v.size() > 1) {
out2();
cout << "剩余选手: " << 10 - v.size() << "人\n";
cout << "你操控的色块是:";
color(c, string(1, c));
cout << "\n按下D键让你的色块向前(后)冲!\n碰到岩浆(X)就淘汰了!\n";
cout << "已淘汰选手:";
if (v.empty()) {
cout << "无" << el;
} else {
cout << el;
for (auto i : v) {
cout << i.fi << "." << sp;
switch (i.se) {
case 'R':
color('R', "R(红色)");
break;
case 'W':
color('W', "W(西瓜红)");
break;
case 'O':
color('O', "O(橙色)");
break;
case 'Y':
color('Y', "Y(黄色)");
break;
case 'G':
color('G', "G(绿色)");
break;
case 'C':
color('C', "C(青色)");
break;
case 'S':
color('S', "S(天蓝)");
break;
case 'B':
color('B', "B(蓝色)");
break;
case 'P':
color('P', "P(紫色)");
break;
case 'p':
color('p', "p(粉色)");
break;
}
str c;
for (auto j : bro) {
if (j.fi == i.se) {
c = j.se;
break;
}
}
cout << c;
cout << el;
}
}
if (die[getid(c)]) {
Sleep_write("很遗憾,你被淘汰了。下次继续努力!\n");
_sl(2000);
_pa;
goto menu;
}
F(i, 1, 10, 1) {
if (die[i] || id[i] == 75) {
TheEnd;
}
if (getid(c) == i) {
if (_KE('D')) {
id[getid(c)] += rand() % 4 - 1;
}
} else {
id[i] += rand() % 4 - 1;
}
id[i] = std::min(id[i], 75LL);
}
ran(10 - v.size());
F(i, 1, 10, 1) {
if (id[i] <= lava[i] && !die[i]) {
die[i] = 1;
v.push_back({++cnt, getcol(i)});
str strnum[] = {"被岩浆灼烧而死。", "试图在岩浆里游泳。", "浴火焚身。", "彻底红温。", "放弃了挣扎。"};
bro.push_back({getcol(i), strnum[rand() % 5]});
}
}
_sl(200);
F(i, 1, 10, 1) {
if (!die[id[i]]) {
if (rand() % 3 == 0) {
id[i]--;
if (rand() % 3 == 0) {
id[i]--;
}
}
}
}
}
if (!die[getid(c)]) {
Sleep_write("恭喜你,成为了唯一的幸存者!\n", 20);
_sl(2000);
_pa;
}
goto menu;
setskin:
_cl;
Sleep_write("请选择你想设置皮肤的色块(输入1退出):\n");
color('R', "R:红色\n");
color('W', "W:西瓜红\n");
color('O', "O:橙色\n");
color('Y', "Y:黄色\n");
color('G', "G:绿色\n");
color('C', "C:青色\n");
color('S', "S:天蓝\n");
color('B', "B:蓝色\n");
color('P', "P:紫色\n");
color('p', "p:粉色\n");
c = get("RWOYGCSBPp1");
if (c == '1') {
goto menu;
} else {
Sleep_write("当前色块的皮肤为:");
str tt = "";
tt += skin[getid(c)];
color(c, tt);
cout << el;
Sleep_write("输入更换方式:\n1.设置为默认皮肤(\"i\")\n2.设置为颜色代号(");
cout << c;
Sleep_write(")\n3.自定义\n4.不更换\n");
char t = get("1234");
if (t == '1') {
skin[getid(c)] = 'i';
Sleep_write("设置成功!\n");
_sl(1000);
} else {
if (t == '2') {
skin[getid(c)] = c;
Sleep_write("设置成功!\n");
_sl(1000);
} else {
if (t == '3') {
Sleep_write("请输入你想设置的皮肤(只能是一个字符):\n");
char ttt = get("", 1);
skin[getid(c)] = ttt;
Sleep_write("设置成功!\n");
_sl(1000);
} else {
goto setskin;
}
}
}
goto setskin;
}
to_the_end:
Sleep_write("感谢游玩!");
exit(0);
}
//Yuexingfei_qwq is a flying-wind
抽卡(目前第二长代码……923行)
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#define pa system("pause")
#define cl system("cls")
#define wh while (1)
#define int long long
using namespace std;
long double money = 100.0;
int N = 0;
int R = 0;
int SR = 0;
int SSR = 0;
int TR = 0;
int TGR = 0;
int HR = 0;
int UR = 0;
int LSR = 0;
int CR = 0;
int SGR = 0;
int SC = 0;
int tot = 0;
int ci = 2;
string ka;
int zhangshu;
int ten_eig = 0, fiv_fou = 0;
int cicnt = 0;
const string s[13] = {"", "N", "R", "SR", "SSR", "TR", "TGR", "HR", "UR", "LSR", "CR", "SGR", "SC"};
int a[13] = {0};
int ma[13] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
const double jia[13] = {0, 0.5, 1, 3, 5, 5, 7, 10, 15, 20, 30, 50, 300};
const double xian[13] = {0, 0.2, 0.4, 0.6, 1, 2, 5, 3, 7, 20, 50, 100, 1000};
struct shuxing {
bool f = false;
int cishu = 0, shangxian = 15;
double qian = 0.5;
} latiao, xiaoyang, huogai, suanniu;
inline void init(void) {
suanniu.qian = 1;
suanniu.shangxian = 12;
}
inline void Sleep_write(const string &x, const int &y = 10, char c = 'y') {
for (int i = 0; i < (int)x.length(); i++) {
putchar(x[i]);
Sleep(y);
}
if (c != 'n') {
putchar('\n');
}
Sleep(500);
}
inline char get(string s) {
char ch[114514];
int l = 0;
for (auto i : s) {
ch[++l] = i;
}
while (true) {
char x = getch();
for (int i = 1; i <= l; i++) {
if (x == ch[i]) {
return x;
}
}
Sleep_write("Error:输入无效\n");
Sleep(100);
}
}
signed main() {
init();
int q, f;
Sleep_write("一天,你运气爆棚,捡到了100块钱\n你高兴极了,作为贫穷的高质量市民,你决定拿来买卡\n开始吧!\n提示:\n游戏中卡的等级仅为部分(不算限定卡等特殊卡),\n卡的概率以小马宝莉的卡为标准");
system("pause");
goto zhu;
cla:
goto zhu1;
ti:
system("cls");
Sleep_write("等级顺序:(从小到大)", 2);
for (int i = 1; i <= 12; i++) {
cout << s[i] << " ";
}
cout << endl;
Sleep_write("市场价格:(单位:元)", 2);
for (int i = 1; i <= 12; i++) {
cout << s[i] << ":";
printf ("%.1f\n", jia[i]);
}
printf ("\n");
Sleep_write("同学羡慕值:(单位:点,2点 = 1元,初始一种卡最多可以炫耀3次,可以买小样增加炫耀次数)", 2);
for (int i = 1; i <= 12; i++) {
cout << s[i] << ":";
printf ("%.1f\n", xian[i]);
}
printf ("\n");
Sleep_write ("辣条可以增加蹭卡成功率,小卖部有15包货\n小样可以增加卡的炫耀次数,小卖部有15根货\n一包活该可以只用4元买一个五元包,小卖部有15包货\n一包酸妞可以只用8元买一个十元包,小卖部有10包货\n", 5);
system("pause");
goto zhu;
ge:
system("cls");
printf ("你的钱:%.1Lf\n", money);
for (int i = 1; i <= 12; i++) {
cout << s[i] << ":";
if (s[i] == "N") {
printf ("%lld", N);
} else {
if (s[i] == "R") {
printf ("%lld", R);
} else {
if (s[i] == "SR") {
printf ("%lld", SR);
} else {
if (s[i] == "SSR") {
printf ("%lld", SSR);
} else {
if (s[i] == "TR") {
printf ("%lld", TR);
} else {
if (s[i] == "TGR") {
printf ("%lld", TGR);
} else {
if (s[i] == "HR") {
printf ("%lld", HR);
} else {
if (s[i] == "UR") {
printf ("%lld", UR);
} else {
if (s[i] == "LSR") {
printf ("%lld", LSR);
} else {
if (s[i] == "SGR") {
printf ("%lld", SGR);
} else {
if (s[i] == "CR") {
printf ("%lld ", CR);
} else {
printf ("%lld", SC);
}
}
}
}
}
}
}
}
}
}
}
printf ("\n");
}
printf ("卡的总数:%lld\n", tot);
printf ("技能“用4元买一包5元包的次数”:%lld\n", fiv_fou);
printf ("技能“用8元买一包10元包的次数”:%lld\n", ten_eig);
system("pause");
goto zhu;
shop:
system("cls");
printf ("欢迎来到童年小卖部~~~\n你要买什么?\n1.2元包\n2.5元包\n3.10元包\n4.辣条(0.5元,技能:蹭卡成功几率增加)\n5.小样(0.5元,技能:炫耀次数增加)\n6.活该(0.5元,技能:用4元买一包5元包的次数+1)\n7.酸妞(1元,技能:用8元买一包10元包的次数+1)\n8.退出\n你的钱:%.1Lf\n", money);
q = getch();
switch (q) {
case '1':
cout << endl;
if (money >= 2) {
money -= 2;
N += 2;
printf ("你获得了2张N卡、");
f = rand() % 15 + 1;
if (f <= 8) {
R += 2;
SR++;
printf ("2张R卡、1张SR卡!");
} else {
printf ("1张R卡、1张SR卡、");
R++, SR++;
f = rand() % 5 + 1;
if (f == 1) {
f = rand() % 5 + 1;
if (f == 1) {
CR++;
printf ("1张CR卡!!!!!");
} else {
printf ("1张UR卡!");
UR++;
}
} else {
printf ("1张SSR卡!");
SSR++;
}
}
printf ("\n");
Sleep(500);
} else {
Sleep_write("你买不起!");
}
system("pause");
break;
case '2':
cout << endl;
if (fiv_fou && money >= 4) {
puts("是否要使用技能:“用4元买一包5元包”?(Y/N)");
puts("技能剩余使用次数:");
cout << fiv_fou << endl;
char input = tolower(get("YyNn"));
if (input == 'y') {
R += 4;
money -= 4;
fiv_fou--;
printf ("你获得了4张R卡、");
f = rand() % 7 + 1;
if (f == 5) {
TGR++;
printf ("1张TGR卡、");
} else {
TR++;
printf ("1张TR卡、");
}
f = rand() % 10 + 1;
if (f <= 5) {
printf ("1张SR卡!");
SR++;
} else {
if (f <= 8) {
printf ("1张SSR卡!");
SSR++;
} else {
printf ("1张UR卡!");
UR++;
}
}
printf ("\n");
Sleep(500);
} else {
if (money >= 5) {
R += 4;
money -= 5;
printf ("你获得了4张R卡、");
f = rand() % 7 + 1;
if (f == 5) {
TGR++;
printf ("1张TGR卡、");
} else {
TR++;
printf ("1张TR卡、");
}
f = rand() % 10 + 1;
if (f <= 5) {
printf ("1张SR卡!");
SR++;
} else {
if (f <= 8) {
printf ("1张SSR卡!");
SSR++;
} else {
printf ("1张UR卡!");
UR++;
}
}
printf ("\n");
Sleep(500);
} else {
Sleep_write("你好像不能不用卡…\n");
}
}
} else {
if (money >= 5) {
R += 4;
money -= 5;
printf ("你获得了4张R卡、");
f = rand() % 7 + 1;
if (f == 5) {
TGR++;
printf ("1张TGR卡、");
} else {
TR++;
printf ("1张TR卡、");
}
f = rand() % 10 + 1;
if (f <= 5) {
printf ("1张SR卡!");
SR++;
} else {
if (f <= 8) {
printf ("1张SSR卡!");
SSR++;
} else {
printf ("1张UR卡!");
UR++;
}
}
printf ("\n");
Sleep(500);
} else {
Sleep_write("你买不起!");
}
}
system("pause");
break;
case '3':
cout << endl;
if (ten_eig && money >= 8) {
puts("是否要使用技能:“用8元买一包10元包”?(Y/N)");
puts("技能剩余使用次数:");
cout << ten_eig << endl;
char input = tolower(get("YyNn"));
if (input == 'y') {
money -= 8;
R += 3;
ten_eig--;
SR++;
HR++;
printf ("你获得了3张R卡、1张SR卡、一张HR卡、");
f = rand() % 18 + 1;
if (f <= 5) {
f = rand() % 5 + 1;
if (f == 1) {
f = rand() % 5 + 1;
if (f == 1) {
printf ("1张SC卡!!!!!!!!!!!!");
SC++;
} else {
printf ("1张SGR卡!!!!!");
SGR++;
}
} else {
printf ("1张LSR卡!!!!!");
LSR++;
}
} else {
f = rand() % 5 + 1;
if (f == 1) {
printf ("1张UR卡!");
UR++;
} else {
printf ("1张SSR卡!");
SSR++;
}
}
printf ("\n");
Sleep(500);
} else {
if (money >= 10) {
money -= 10;
R += 3;
SR++;
HR++;
printf ("你获得了3张R卡、1张SR卡、一张HR卡、");
f = rand() % 18 + 1;
if (f <= 5) {
f = rand() % 5 + 1;
if (f == 1) {
f = rand() % 5 + 1;
if (f == 1) {
printf ("1张SC卡!!!!!!!!!!!!");
SC++;
} else {
printf ("1张SGR卡!!!!!");
SGR++;
}
} else {
printf ("1张LSR卡!!!!!");
LSR++;
}
} else {
f = rand() % 5 + 1;
if (f == 1) {
printf ("1张UR卡!");
UR++;
} else {
printf ("1张SSR卡!");
SSR++;
}
}
printf ("\n");
Sleep(500);
} else {
Sleep_write("你好像不能不用卡…");
}
}
} else {
if (money >= 10) {
money -= 10;
R += 3;
SR++;
HR++;
printf ("你获得了3张R卡、1张SR卡、一张HR卡、");
f = rand() % 18 + 1;
if (f <= 5) {
f = rand() % 5 + 1;
if (f == 1) {
f = rand() % 5 + 1;
if (f == 1) {
printf ("1张SC卡!!!!!!!!!!!!");
SC++;
} else {
printf ("1张SGR卡!!!!!");
SGR++;
}
} else {
printf ("1张LSR卡!!!!!");
LSR++;
}
} else {
f = rand() % 5 + 1;
if (f == 1) {
printf ("1张UR卡!");
UR++;
} else {
printf ("1张SSR卡!");
SSR++;
}
}
printf ("\n");
Sleep(500);
} else {
Sleep_write("你买不起!");
}
}
system("pause");
break;
case '4':
cout << endl;
if (latiao.cishu >= latiao.shangxian) {
Sleep_write("没货了…");
break;
}
if (ci <= 1) {
Sleep_write("不能再加了!");
break;
}
latiao.cishu++;
Sleep_write("你吃下了辣条!");
Sleep_write("发动技能:蹭卡成功几率增加!");
money -= latiao.qian;
ci -= (ci <= 3 ? (ci - 1) : 2 + rand() % 3);
system("pause");
break;
case '5':
cout << endl;
if (xiaoyang.cishu >= xiaoyang.shangxian) {
Sleep_write("没货了…");
break;
}
xiaoyang.cishu++;
Sleep_write("你吃下了小样!");
Sleep_write("发动技能:炫耀次数增加!");
money -= xiaoyang.qian;
for (int i = 0; i <= 12; i++) {
ma[i] += 1;
}
system("pause");
break;
case '6':
cout << endl;
if (huogai.cishu >= huogai.shangxian) {
Sleep_write("没货了…");
break;
}
huogai.cishu++;
Sleep_write("你吃下了活该!");
Sleep_write("发动技能:用4元买一包5元包的次数+1!");
money -= huogai.qian;
fiv_fou++;
system("pause");
break;
case '7':
cout << endl;
if (suanniu.cishu >= suanniu.shangxian) {
Sleep_write("没货了…");
break;
}
suanniu.cishu++;
Sleep_write("你吃下了酸妞!");
Sleep_write("发动技能:用8元买一包10元包的次数+1!");
money -= suanniu.qian;
ten_eig++;
system("pause");
break;
case '8':
goto zhu;
break;
default:
goto shop;
break;
}
goto shop;
zhu:
tot = N + R + SR + SSR + TR + TGR + HR + UR + LSR + CR + SGR + SC;
system("cls");
printf ("1.买卡\n2.卖卡\n3.去班级\n4.退出\n5.说明\n6.查看个人信息\n");
q = getch();
switch (q) {
case '1':
goto shop;
break;
case '2':
goto mai;
break;
case '3':
goto cla;
break;
case '4':
return 0;
case '5':
goto ti;
break;
case '6':
goto ge;
break;
default:
goto zhu;
break;
}
mai:
wh {
cl;
Sleep_write("欢迎来到黑市~~~");
Sleep_write("你的情况如下:");
printf ("你的钱:%.1Lf\n", money);
for (int i = 1; i <= 12; i++) {
cout << s[i] << ":";
if (s[i] == "N") {
printf ("%lld", N);
} else {
if (s[i] == "R") {
printf ("%lld", R);
} else {
if (s[i] == "SR") {
printf ("%lld", SR);
} else {
if (s[i] == "SSR") {
printf ("%lld", SSR);
} else {
if (s[i] == "TR") {
printf ("%lld", TR);
} else {
if (s[i] == "TGR") {
printf ("%lld", TGR);
} else {
if (s[i] == "HR") {
printf ("%lld", HR);
} else {
if (s[i] == "UR") {
printf ("%lld", UR);
} else {
if (s[i] == "LSR") {
printf ("%lld", LSR);
} else {
if (s[i] == "SGR") {
printf ("%lld", SGR);
} else {
if (s[i] == "CR") {
printf ("%lld ", CR);
} else {
printf ("%lld", SC);
}
}
}
}
}
}
}
}
}
}
}
printf ("\n");
}
Sleep_write("输入1退出。");
printf ("你要卖什么卡?\n");
cin >> ka;
if (ka == "1") {
break;
}
printf("你要售卖的卡一张");
if (ka == "N") {
printf ("%.1f", jia[1]);
} else {
if (ka == "R") {
printf ("%.1f", jia[2]);
} else {
if (ka == "SR") {
printf ("%.1f", jia[3]);
} else {
if (ka == "SSR") {
printf ("%.1f", jia[4]);
} else {
if (ka == "TR") {
printf ("%.1f", jia[5]);
} else {
if (ka == "TGR") {
printf ("%.1f", jia[6]);
} else {
if (ka == "HR") {
printf ("%.1f", jia[7]);
} else {
if (ka == "UR") {
printf ("%.1f", jia[8]);
} else {
if (ka == "LSR") {
printf ("%.1f", jia[9]);
} else {
if (ka == "SGR") {
printf ("%.1f", jia[10]);
} else {
if (ka == "CR") {
printf ("%.1f ", jia[11]);
} else {
printf ("%.1f", jia[12]);
}
}
}
}
}
}
}
}
}
}
}
printf("元,确定售卖吗?(Y/N)\n");
char ch = tolower(get("YyNn"));
if (ch == 'n') {
goto mai;
}
printf ("卖多少张?\n");
cin >> zhangshu;
int x;
if (ka == "N") {
x = N;
}
if (ka == "R") {
x = R;
}
if (ka == "SR") {
x = SR;
}
if (ka == "SSR") {
x = SSR;
}
if (ka == "TR") {
x = TR;
}
if (ka == "TGR") {
x = TGR;
}
if (ka == "HR") {
x = HR;
}
if (ka == "UR") {
x = UR;
}
if (ka == "LSR") {
x = LSR;
}
if (ka == "CR") {
x = CR;
}
if (ka == "SGR") {
x = SGR;
}
if (ka == "SC") {
x = SC;
}
if (x < zhangshu) {
Sleep_write("你没那么多卡!");
} else {
if (ka == "N") {
N -= zhangshu;
money += zhangshu * 0.5;
}
if (ka == "R") {
R -= zhangshu;
money += zhangshu * 1;
}
if (ka == "SR") {
SR -= zhangshu;
money += zhangshu * 3;
}
if (ka == "SSR") {
SSR -= zhangshu;
money += zhangshu * 5;
}
if (ka == "TR") {
TR -= zhangshu;
money += zhangshu * 5;
}
if (ka == "TGR") {
TGR -= zhangshu;
money += zhangshu * 7;
}
if (ka == "HR") {
HR -= zhangshu;
money += zhangshu * 10;
}
if (ka == "UR") {
UR -= zhangshu;
money += zhangshu * 15;
}
if (ka == "LSR") {
LSR -= zhangshu;
money += zhangshu * 20;
}
if (ka == "CR") {
CR -= zhangshu;
money += zhangshu * 30;
}
if (ka == "SGR") {
SGR -= zhangshu;
money += zhangshu * 50;
}
if (ka == "SC") {
SC -= zhangshu;
money += zhangshu * 300;
}
Sleep_write("售卖成功!");
pa;
}
}
goto zhu;
ceng:
f = rand() % ci;
if (f > (ci <= 5 ? 1 : ci / (rand() % 4 + 2) + rand() % 3 - 1)) {
Sleep_write ("蹭卡失败!");
} else {
printf ("蹭到了3张N卡");
N += 3;
f = rand() % 6;
if (f) {
printf ("、%lld张R卡", f);
R += f;
}
f = rand() % 5;
if (f) {
printf ("、%lld张SR卡", f);
}
SR += f;
f = rand() % 3;
if (f) {
printf ("、%lld张SSR卡", f);
}
SSR += f;
if ((rand() % 10) == 1) {
printf ("、2张UR");
UR += 2;
}
if ((rand() % 10) == 1) {
printf ("、1张TR");
TR++;
}
if ((rand() % 15) == 1) {
printf ("、1张HR");
HR++;
ci++;
}
if ((rand() % 35) == 1) {
printf ("、1张LSR!!!");
LSR++;
ci += 2;
}
Sleep_write("!");
if (ci == 2) {
ci++;
} else {
cicnt++;
if (ci <= 5) {
if (cicnt == 3) {
ci++;
cicnt = 0;
}
} else {
if (cicnt == 2) {
ci++;
cicnt = 0;
}
}
}
}
system("pause");
goto zhu1;
xuan:
cl;
puts("要炫耀哪种卡?");
puts("你的情况如下:");
for (int i = 1; i <= 12; i++) {
cout << s[i] << ":";
if (s[i] == "N") {
printf ("%lld", N);
} else {
if (s[i] == "R") {
printf ("%lld", R);
} else {
if (s[i] == "SR") {
printf ("%lld", SR);
} else {
if (s[i] == "SSR") {
printf ("%lld", SSR);
} else {
if (s[i] == "TR") {
printf ("%lld", TR);
} else {
if (s[i] == "TGR") {
printf ("%lld", TGR);
} else {
if (s[i] == "HR") {
printf ("%lld", HR);
} else {
if (s[i] == "UR") {
printf ("%lld", UR);
} else {
if (s[i] == "LSR") {
printf ("%lld", LSR);
} else {
if (s[i] == "SGR") {
printf ("%lld", SGR);
} else {
if (s[i] == "CR") {
printf ("%lld ", CR);
} else {
printf ("%lld", SC);
}
}
}
}
}
}
}
}
}
}
}
printf (",还可以炫耀%lld次\n", ma[i] - a[i]);
}
puts("输入1退出。");
cin >> ka;
if (ka == "1") {
goto zhu1;
}
int y;
for (int i = 1; i <= 12; i++) {
if (s[i] == ka) {
y = i;
break;
}
}
if (a[y] == ma[y]) {
Sleep_write("不能再炫耀这种卡了!");
} else {
int n;
if (ka == "N") {
n = N;
}
if (ka == "R") {
n = R;
}
if (ka == "SR") {
n = SR;
}
if (ka == "SSR") {
n = SSR;
}
if (ka == "TR") {
n = TR;
}
if (ka == "TGR") {
n = TGR;
}
if (ka == "HR") {
n = HR;
}
if (ka == "UR") {
n = UR;
}
if (ka == "LSR") {
n = LSR;
}
if (ka == "CR") {
n = CR;
}
if (ka == "SGR") {
n = SGR;
}
if (ka == "SC") {
n = SC;
}
if (n == 0) {
Sleep_write("你没有这种卡!");
} else {
n *= xian[y];
a[y]++;
printf ("共获得了%lld点羡慕值!", n);
money += n * 0.5;
}
}
pa;
goto zhu1;
zhu1:
system("cls");
puts("你踏入了 6 班...");
puts("1.蹭卡");
puts("2.炫耀");
puts("3.返回");
q = getch();
if (q == '1') {
goto ceng;
} else {
if (q == '2') {
goto xuan;
} else {
if (q == '3') {
goto zhu;
} else {
goto zhu1;
}
}
}
}