【c++】跑酷7.0

58 篇文章 40 订阅

修复了解决闪屏的方法的BUG,

并重新使用了解决闪屏的方法

改了一些细节

#include<iostream>
#include<iomanip>
#include<string>
#include<cstdlib>
#include<ctime>
#include<windows.h>
#include<conio.h>
#include<fstream>
using namespace std;
const long long dts = 8;
long long wj1x, wj1y, wj2x, wj2y, cs = 0, dtbh, sy, runs, zgjd = 1, y_1x, y_1y, y_2x, y_2y;
bool f = 1, t1 = 1, t2 = 1, cxjs = 1;
long long csx[dts + 1] = {
	0,
	18,
	18,
	18,
	14,
	1,
	3,
	1,
	3
};
long long csy[dts + 1] = {
	0,
	1,
	1,
	1,
	1,
	1,
	1,
	1,
	37
};
string dtm[dts + 1] = {
	"空地图",
	"新手图",
	"蹦床天地",
	"信仰之跃",
	"生死双道",
	"天空跳床",
	"小心暗刺",
	"转来转去",
	"9 9 加 6"
};
string dt[dts + 1][21] = {
	{
		"                                                                            ",//
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
	},
	{
		"                                                                            =",//
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                                            =",
		"                                                          ===================",
		"                                                                            =",
		"                                                             ====           =",
		"                                                            =               =",
		"                      <      >                             =               $=",
		" ====     ===^^^^^==================-               =======                 =",
		"                                                                            ="
	},
	{
		"                                                                            ",//
		"                             =                                <             ",
		"                             =                                <             ",
		"                             =                                <         $   ",
		"                             =                                <             ",
		"                             =                                <             ",
		"                     ---                                      <             ",
		"                             =                                              ",
		"                             ======-=====-===---=----=-=----========-=======",
		"                                                                            ",
		"                                                                            ",
		"               ---                                                          ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		" ---------------------------------------------------------------------------",
		"                                                                            "
	},
	{
		"                                                                            ",//
		"                                                                            ",
		"                                                                            ",
		"  ==                                                                  ===   ",
		"  =                                                                     =   ",
		"  =                                                                     =   ",
		"  =                                                        $            =   ",
		"  =                                                                     =   ",
		"  =                                                                     = - ",
		"                                                                        =   ",
		" -==                                                                    =   ",
		"                                                                        =   ",
		"     ==                                                                 =   ",
		"                                                     ===                =-  ",
		"        ==                                                              =   ",
		"                                               ====                     =   ",
		"     ===                                                                =   ",
		"                                            ==                          =   ",
		"  ===                                  ==                                   ",
		" =                               ===                                 ======-",
		"                                                                            ",
	},
	{
		"                                                                            ",//
		"                                                                            ",
		"                                                                            ",
		"                                                                ==  ===  == ",
		"                                                        ===  ===          < ",
		"                                                  ==                      < ",
		"                                                                          < ",
		"                  ==                           ==^^^^^^^^^^^==            < ",
		"                         ======                                           < ",
		"              ==                       === =======                        < ",
		"               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^< ",
		"         ==                                                               < ",
		"                                                                          < ",
		"     ==                                                                   < ",
		"                                                 ^                         $",
		" ========>  <=== === === ==  = === = == === ==== ^ ====  === == = == = =====",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
		"                                                                            ",
	},
	{
		"                                                                            ",//
		"   <                                                                        ",
		"   <                                                                        ",
		"   <                                                                        ",
		"   <                                                                        ",
		"   <                                                                        ",
		"   <                                             --                         ",
		"   <                          ==                                            ",
		"   <                                                                        ",
		"   <           =                          --                                ",
		"   <           =                                                            ",
		"   <           =                                                            ",
		"   <           =                                                            ",
		"   <           =                                                            ",
		"   <           =                                                            ",
		"   <           =          --                                                ",
		"   <           =                                                           $",
		"               =                                                            ",
		" =====---------=^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",
		"                                                                            ",
		"                                                                            "
	},
	{
		"                                                                            ",//
		"                                                                           =",
		"                                                                           =",
		"                                                                           =",
		" ====^=====^=====^=====^=====^=====^=====^=====^=====^=====^=====^=====^== =",
		"                                                                           =",
		"                                   ==========      <>                      =",
		"                                             =           <>         <>     =",
		"   ==============================^^^^^^^^^^^^=============================^=",
		"        <                                                                  =",
		"        <             ==                                   ==              =",
		"        <            =                                    =                =",
		" ^^^    <           =                                    =                 =",
		"        <          =                                    =                  =",
		"        <         =                                    =                   =",
		"    ^^^^<        =                                    =                    =",
		"        <       =                                    =                     =",
		"        <      =                                    =                      =",
		"              =                                    =                       =",
		" ==============                               =====                       $=",
		"                                                                           ="
	},
	{
		"                                                                            ",//
		"   <                                                                       =",
		"   <                                                                       =",
		"   <                                                                       =",
		"   <                                                                       =",
		"   <               =============================                           =",
		"   <               =          =    =           = =====================     =",
		"   <               ==  ==     =   $=       ==  = =                    ==   =",
		"   <               =   =      =    =       =   = =                         =",
		"   <               =  ==  ^^^^==           =  == =                       ===",
		"   <               =   =      =       ^^^^^=   = =              ===  ===   =",
		"   <               ==  =      ===============  = =                         =",
		"   <               =   =^^                     = =           ==            =",
		"   <               = =========================== =             ===         =",
		"   <               =                             =               =         =",
		"   <    ^          ===============================               =         =",
		"   <   =>                                                        ====      =",
		"      ==>                                                                ===",
		" ====================================================================      =",
		"                                                                           =",
		"                                                                           ="
	},
	{
		"                                                                            ",//
		"                              >                   <      =              =   ",
		"                              >                   <      =              =   ",
		"        =                     >                   <      =        =     =   ",
		" ^^^^^   =                    >     ===           <      =        ==    =   ",
		"         <=                   >               = =^       =         ===  =   ",
		"         < =                   ^^^^^^^^^^^^^^^    <      =$             =   ",
		"         <  =                                     <      =            ===   ",
		"      ^^^<   =                 ==              ^^^       =^^^^^^^^==    =   ",
		"         <    =                  =          ^^^          =============  =   ",
		"         <     =                  ===    ==  <                          =   ",
		"         <     ======^^^^^^^^^^^^^   ^^^^  ^^            ================   ",
		"         <                                                                  ",
		" ^^^^    <         ==                                ==                     ",
		"         <        =                                                         ",
		"         <       =                               ==                         ",
		" ==== ^^^       =                                                           ",
		"               =                             ==                             ",
		"     ==========                     =======                                 ",
		"                                                                            ",
		"                                                                            "
	}
};
struct cdhs
{
	void out()
	{
		ofstream cda("闯关进度.binggan");
		cda << zgjd;
		return;
	}
	void in()
	{
		ifstream cda("闯关进度.binggan");
		cda >> zgjd;
		return;
	}
}cdhs;
//基础函数
void csh()
{
	f = 1, t1 = 1, t2 = 1;
	cs = 0;
	return;
}
void color(int c)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);
	return;
}
void gb()
{
	CONSOLE_CURSOR_INFO cursor;
	cursor.bVisible = FALSE;
	cursor.dwSize = sizeof(cursor);
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorInfo(handle, &cursor);
	return;
}
void gs(long long h, long long l, string z)
{
	for (long long i = 1; i <= h; i++)
	{
		cout << "\n";
	}
	for (long long i = 1; i <= l; i++)
	{
		cout << " ";
	}
	cout << z;
	return;
}
void ydgb(long long x, long long y)
{
	COORD pos = { y,x };
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
	SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
	return;
}
void out();
void in();
void lx();
void bd();
void gx();
//页面函数
void zym();
void yxym();
void smym();
void szsmym();
void wpsmym();
void yxjqym();
//模式函数
void _1run();
void _2run();
void suij();
void cg();
int main()
{
	srand(time(0));
	color(240);
	system("mode con cols=75 lines=20");
	gb();
	cdhs.in();
	while (cxjs)
	{
		zym();
		system("cls");
	}
	cdhs.out();
	return 0;
}
void zym()
{
	char s;
	system("cls");
	gs(5, 34, "跑酷");
	gs(2, 0, "");
	gs(1, 30, "0.退出");
	gs(1, 30, "1.开始游戏");
	gs(1, 30, "2.游戏说明");
	gs(1, 30, "3.游戏存档");
	s = _getch();
	while (s != '0' && s != '1' && s != '2' && s != '3')s = _getch();
	switch (s)
	{
	case '0':
		cxjs = 0;
		return;
		break;
	case '1':
		yxym();
		break;
	case '2':
		smym();
		break;
	case '3':
		cdhs.out();
		break;
	}
	return;
}
void yxym()
{
	char s;
	system("cls");
	while (1)
	{
		gs(0, 0, "0.退出");
		gs(1, 0, "1.单人模式");
		gs(1, 0, "2.双人模式");
		s = _getch();
		while (s != '0' && s != '1' && s != '2')s = _getch();
		switch (s)
		{
		case '0':
			return;
		case '1':
			_1run();
			break;
		case '2':
			_2run();
			break;
		}
	}
	return;
}
void out()
{
	for (long long i = 1; i <= 19; i++)
	{
		for (long long j = 1; j <= 75; j++)
		{
			if (i == wj1x && j == wj1y)
			{
				color(9);
				cout << "*";
			}
			else
				if (i == wj2x && j == wj2y && runs >= 2)
				{
					color(12);
					cout << "+";
				}
				else
					if (dt[dtbh][i][j] == '$')
					{
						color(7);
						cout << "$";
					}
					else
					{
						color(240);
						cout << dt[dtbh][i][j];
					}
		}
	}
	return;
}
void in()
{
	if (GetKeyState('P') < 0)
	{
		f = 0;
		sy = 0;
		system("cls");
		return;
	}
	if (GetKeyState('A') < 0 && (dt[dtbh][wj1x][wj1y - 1] == ' ' || dt[dtbh][wj1x][wj1y - 1] == '$') && wj1y - 1 > 0)
	{
		wj1y--;
	}
	if (GetKeyState('D') < 0 && (dt[dtbh][wj1x][wj1y + 1] == ' ' || dt[dtbh][wj1x][wj1y + 1] == '$') && wj1y - 1 <= 100)
	{
		wj1y++;
	}
	if (GetKeyState('W') < 0 && (dt[dtbh][wj1x - 1][wj1y] == ' ' || dt[dtbh][wj1x - 1][wj1y] == '$') && wj1x > 1 && t1)
	{
		wj1x--;
		for (long long i = 1; i <= 2; i++)
			if (dt[dtbh][wj1x - 1][wj1y] == ' ' && wj1x > 1)wj1x--;
		t1 = 0;
	}
	if (runs >= 2)
	{
		if (GetKeyState(37) < 0 && (dt[dtbh][wj2x][wj2y - 1] == ' ' || dt[dtbh][wj2x][wj2y - 1] == '$') && wj2y - 1 > 0)
		{
			wj2y--;
		}
		if (GetKeyState(39) < 0 && (dt[dtbh][wj2x][wj2y + 1] == ' ' || dt[dtbh][wj2x][wj2y + 1] == '$') && wj1y - 1 <= 100)
		{
			wj2y++;
		}
		if (GetKeyState(38) < 0 && (dt[dtbh][wj2x - 1][wj2y] == ' ' || dt[dtbh][wj2x - 1][wj2y] == '$') && wj2x > 1 && t2)
		{
			wj2x--;
			for (long long i = 1; i <= 2; i++)
				if (dt[dtbh][wj2x - 1][wj2y] == ' ' && wj2x > 1)wj2x--;
			t2 = 0;
		}
	}
	return;
}
void lx()
{
	if (dt[dtbh][wj1x + 1][wj1y] == ' ' || dt[dtbh][wj1x + 1][wj1y] == '$')wj1x++;
	else t1 = 1;
	if (dt[dtbh][wj2x + 1][wj2y] == ' ' || dt[dtbh][wj2x + 1][wj2y] == '$')wj2x++;
	else t2 = 1;
	return;
}
void bd()
{
	if (dt[dtbh][wj1x][wj1y] == '$')
	{
		f = 0;
		sy = 1;
	}
	if (dt[dtbh][wj2x][wj2y] == '$')
	{
		f = 0;
		sy = 2;
	}
	if (wj1x == 20)
	{
		wj1x = csx[dtbh]; wj1y = csy[dtbh];
	}
	if (wj2x == 20)
	{
		wj2x = csx[dtbh]; wj2y = csy[dtbh];
	}
	if (dt[dtbh][wj1x + 1][wj1y] == '^')
	{
		wj1x = csx[dtbh]; wj1y = csy[dtbh];
	}
	if (dt[dtbh][wj2x + 1][wj2y] == '^')
	{
		wj2x = csx[dtbh]; wj2y = csy[dtbh];
	}
	if (dt[dtbh][wj1x][wj1y + 1] == '<')
	{
		wj1x = csx[dtbh]; wj1y = csy[dtbh];
	}
	if (dt[dtbh][wj2x][wj2y + 1] == '<')
	{
		wj2x = csx[dtbh]; wj2y = csy[dtbh];
	}
	if (dt[dtbh][wj1x][wj1y - 1] == '>')
	{
		wj1x = csx[dtbh]; wj1y = csy[dtbh];
	}
	if (dt[dtbh][wj2x][wj2y - 1] == '>')
	{
		wj2x = csx[dtbh]; wj2y = csy[dtbh];
	}
	if (dt[dtbh][wj1x + 1][wj1y] == '-')
	{
		for (long long i = 1; i <= 10 && wj1x > 1; i++)
		{
			if (dt[dtbh][wj1x - 1][wj1y] == ' ' || dt[dtbh][wj1x - 1][wj1y] == '$')
			{
				wj1x--;
			}
			else
				break;
		}
	}
	if (dt[dtbh][wj2x + 1][wj2y] == '-')
	{
		for (long long i = 1; i <= 10 && wj2x > 1; i++)
		{
			if (dt[dtbh][wj2x - 1][wj2y] == ' ' || dt[dtbh][wj2x - 1][wj2y] == '$')
			{
				wj2x--;
			}
			else
				break;
		}
	}
	return;
}
void _1run()
{
	system("cls");
	char s;
	runs = 1;
	while (1)
	{
		cout << "0.退出\n";
		cout << "1.随机\n";
		cout << "2.闯关\n";
		s = _getch();
		while (s != '0' && s != '1' && s != '2')s = _getch();
		switch (s)
		{
		case '0':
			system("cls");
			return;
		case '1':
			suij();
			break;
		case '2':
			cg();
			break;
		}
		system("cls");
	}
	return;
}
void _2run()
{
	system("cls");
	char s;
	runs = 2;
	while (1)
	{
		cout << "0.退出\n";
		cout << "1.随机\n";
		cout << "2.闯关\n";
		s = _getch();
		while (s != '0' && s != '1' && s != '2')s = _getch();
		switch (s)
		{
		case '0':
			system("cls");
			return;
		case '1':
			suij();
			break;
		case '2':
			cg();
			break;
		}
		system("cls");
	}
	return;
}
void suij()
{
	char s;
	while (1)
	{
		csh();
		dtbh = rand() % dts + 1;
		wj1x = wj2x = csx[dtbh];
		wj1y = wj2y = csy[dtbh];
		system("cls");
		out();
		while (f)
		{
			gx();
			color(240);
			Sleep(75);
			in();
			bd();
			if (cs == 1)
				lx();
			if (cs == 1)cs = -1;
			cs++;
		}
		system("cls");
		if (runs >= 2)
		{
			if (sy == 0)
			{
				system("cls");
				return;
			}
			if (sy == 1)
			{
				color(9);
				system("cls");
				cout << "*赢了!";
				cout << "\n按Enter继续";
				char t = _getch();
				while (t != 13)t = _getch();
				color(153);
			}
			else
			{
				color(12);
				system("cls");
				cout << "+赢了!";
				cout << "\n按Enter继续";
				char t = _getch();
				while (t != 13)t = _getch();
				color(204);
			}
		}
		else
		{
			if (sy == 0)
			{
				system("cls");
				return;
			}
			else
			{
				color(9);
				system("cls");
				cout << "你赢了!!!";
				cout << "\n按Enter继续";
				char s = _getch();
				while (s != 13)s = _getch();
				color(153);
			}
		}
		color(240);
		system("cls");
		cout << "是否返回?(y/n)";
		s = _getch();
		while (s != 'y' && s != 'n')s = _getch();
		if (s == 'y')
		{
			f = 0;
			system("cls");
			return;
		}
		system("cls");
	}
	return;
}
void gx()
{
	color(240);
	ydgb(y_1x - 1, y_1y);
	cout << '\b' << " ";
	if (runs >= 2)
	{
		ydgb(y_2x - 1, y_2y);
		cout << '\b' << " ";
	}
	color(11);
	ydgb(wj1x - 1, wj1y);
	cout << '\b' << "*";
	if (runs >= 2)
	{
		color(12);
		ydgb(wj2x - 1, wj2y);
		cout << '\b' << "+";
	}
	y_1x = wj1x, y_1y = wj1y;
	if (runs >= 2)
	{
		y_2x = wj2x, y_2y = wj2y;
	}
	return;
}
void cg()
{
	csh();
	char s;
	system("cls");
	while (f)
	{
		system("cls");
		cout << "0.退出" << endl;
		for (long long i = 1; i <= dts; i++)
		{
			if (zgjd > i)
			{
				cout << i << "." << dtm[i];
				for (long long j = 1; j <= 20 - dtm[i].size(); j++)
				{
					cout << " ";
				}
				cout << "*";
			}
			else
				if (zgjd == i)
				{
					cout << i << "." << dtm[i];
					for (long long j = 1; j <= 20 - dtm[i].size(); j++)
					{
						cout << " ";
					}
					cout << "=";
				}
				else
				{
					cout << i << ".????" << "            ";
					cout << "+";
				}
			cout << endl;
		}
		s = _getch();
		while (s < '0' || s>'0' + dts)s = _getch();
		if (s == '0')
		{
			system("cls");
			return;
		}
		if (s - '0' > zgjd)
		{
			system("cls");
			cout << "你还没有解锁此关卡!\n";
			cout << "按空格继续";
			char t;
			t = _getch();
			while (t != ' ')t = _getch();
		}
		system("cls");
		dtbh = s - '0';
		wj1x = wj2x = csx[dtbh];
		wj1y = wj2y = csy[dtbh];
		out();
		while (f)
		{
			gx();
			color(240);
			Sleep(75);
			in();
			bd();
			if (cs == 1)
				lx();
			if (cs == 1)cs = -1;
			cs++;
		}
		system("cls");
		if (runs >= 2)
		{
			if (sy == 0)
			{
				system("cls");
				return;
			}
			if (sy == 1)
			{
				color(9);
				system("cls");
				cout << "*赢了!";
				cout << "\n按Enter继续";
				char t = _getch();
				while (t != 13)t = _getch();
				color(153);
			}
			else
			{
				color(12);
				system("cls");
				cout << "+赢了!";
				cout << "\n按Enter继续";
				char t = _getch();
				while (t != 13)t = _getch();
				color(204);
			}
		}
		else
		{
			if (sy == 0)
			{
				system("cls");
				return;
			}
			else
			{
				color(9);
				system("cls");
				cout << "你赢了!!!";
				cout << "\n按Enter继续";
				char s = _getch();
				while (s != 13)s = _getch();
				color(153);
			}
		}
		color(240);
		if (zgjd == dtbh)
		{
			zgjd++;
		}
		system("cls");
	}
	return;
}
void smym()
{
	char s;
	system("cls");
	cout << "游戏说明:\n";
	cout << "0.退出\n";
	cout << "1.操作说明\n";
	cout << "2.物品说明\n";
	cout << "3.游戏技巧\n";
	s = _getch();
	while (s != '0' && s != '1' && s != '2' && s != '3')s = _getch();
	switch (s)
	{
	case '0':
		system("cls");
		return;
	case '1':
		szsmym();
		break;
	case '2':
		wpsmym();
		break;
	case '3':
		yxjqym();
		break;
	}
	return;
}
void szsmym()
{
	char s;
	system("cls");
	gs(1, 0, "操作说明:");
	gs(1, 4, "玩家1:");
	gs(1, 8, "  W  ");
	gs(1, 8, "A   D");
	gs(1, 8, "移动");
	gs(1, 0, "");
	gs(1, 4, "玩家2:");
	gs(1, 8, "  ^  ");
	gs(1, 8, "<   >");
	gs(1, 8, "移动");
	gs(1, 4, "功能键:");
	gs(1, 8, "P返回主界面");
	cout << "\n\n\n按空格继续";
	s = _getch();
	while (s != ' ')s = _getch();
	system("cls");
	return;
}
void wpsmym()
{
	char s;
	system("cls");
	cout << "* 玩家1\n";
	cout << "+ 玩家2\n";
	cout << "= 砖块\n";
	cout << "$ 终点\n";
	cout << "- 蹦床\n";
	cout << "^ 上刺\n";
	cout << "< 左刺\n";
	cout << "> 右刺\n";
	cout << "按空格继续";
	s = _getch();
	while (s != ' ')s = _getch();
	system("cls");
	return;
}
void yxjqym()
{
	system("cls");
	char s;
	system("cls");
	gs(1, 4, "游戏技巧:");
	gs(1, 8, "1.延迟起跳:");
	gs(1, 12, "如果上方有物品,跳起来会挡住");
	gs(1, 12, "可以先走过去,等上方无遮挡物时按跳键");
	gs(1, 12, "这样就可以跳的远了");
	cout << "\n按空格继续";
	s = _getch();
	while (s != ' ')s = _getch();
	system("cls");
	return;
}

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值