C语言实现大富翁

#define _CRT_SECURE_NO_WARNINGS 1
#define __STDC_WANT_LIB_EXT1_ 1
#include<stdio.h>
#include<time.h>
#include<windows.h>

//空白-0   ■-1    │-2     ┬ -3   — -4  ┌ -5  ┐-6  ├ -7  ┤-8    

typedef struct line
{
	int p1_row;
	int p1_col;
	int p2_row;
	int p2_col;
	struct line* next;
}line;
void board_display(int dice, int turn, int remind);
void board_ini();
void judge();
void player_steps(int dice, int player);
int board[43][43];
line* move_p1(int dice, line* node1);
line* move_p2(int dice, line* node2);
line* cre_line();
void reward(int turn);
void Tesla();
enum step { s1 = 15, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24 };
enum remind { di_play = 1, di_num };
void menu();
struct player
{
	int asset;
	int steps;
	int secretary;
	int loan;
	int land;
	int black_market;
	int T_share;
	int contact;
	int tex;
	double Tesla;
};
struct player p1, p2;
int main()
{
	//初始化资产
	p1.asset = p2.asset = 10000;
	p1.steps = p2.steps = 1;
	p1.tex = p2.tex = 1;
	p1.black_market = p1.land = p1.loan = p1.secretary = p1.Tesla = p1.T_share = p1.contact = 0;
	p2.black_market = p2.land = p2.loan = p2.secretary = p2.Tesla = p2.T_share = p2.contact = 0;
	board_ini();
	int dice = 0;
	int psteps = 0;
	line* head1 = cre_line();//创建玩家1移动路线,并返回头节点
	line* head2 = cre_line();//创建玩家2移动路线,并返回头节点
	head1 = move_p1(dice, head1);
	head2 = move_p2(dice, head2);
	menu();
	for (int i = 0; i < 100; i++)
	{
		srand((unsigned)time(NULL));
		Tesla();//更新股票行情;
		board_display(dice, i % 2 + 1, 0);
		getch();
		dice = rand() % 6 + 1;
		board_display(dice, i % 2 + 1, 1);
		getch();
		if (i % 2 + 1 == 1)
			head1 = move_p1(dice, head1);
		else
			head2 = move_p2(dice, head2);
		player_steps(dice, i % 2 + 1);//记录玩家所在格子
		//奖惩函数
		reward(i % 2 + 1);
		judge();
	}
	return 0;
}

void player_steps(int dice, int turn)
{
	if (turn == 1)
		p1.steps = (p1.steps + dice) % 24;
	if (turn == 2)
		p2.steps = (p2.steps + dice) % 24;
}
void reward(int turn)
{
	switch (turn == 1 ? p1.steps : p2.steps)
	{
	case 1:;
		break;
	case 2:
	{
		system("cls");
		if (turn == 1)
		{
			if (p1.secretary == 0)
			{
				printf("\n\n\n\n										  玩家%d资产+1000", turn);
				p1.asset += 1000;
			}
			else
			{
				printf("\n\n\n\n										  玩家%d资产+1500", turn);
				p1.asset += (1000 * 1.5);
			}

		}
		else
		{
			if (p2.secretary == 0)
			{
				printf("\n\n\n\n										  玩家%d资产+1000", turn);
				p2.asset += 1000;
			}
			else
			{
				printf("\n\n\n\n										  玩家%d资产+1500", turn);
				p2.asset += (1000 * 1.5);
			}
		}
		getch();
	}
	break;
	case 3:
	{
		system("cls");
		printf("\n\n\n\n										  路遇劫匪,玩家%d资产-2000", turn);
		if (turn == 1)
			p1.asset -= 2000;
		else
			p2.asset -= 2000;
		getch();
	}
	break;
	case 4:
	{
		system("cls");
		printf("\n\n\n\n										  是否卖出地皮?(Y/N)");
		int a = getch();
		if (a == 'N') {}
		else if (a == 'Y')
		{
			if ((turn == 1 ? p1.land : p2.land) == 0)
			{
				system("cls");
				printf("\n\n\n\n										  你名下没有地皮(任意键继续)");
				getch();
			}
			else
			{
				if (turn == 1)
				{

					p1.asset = 2000 * p1.land + p1.asset;
					p1.land = 0;
				}
				else
				{
					p2.asset = 2000 * p1.land + p1.asset;
					p2.land = 0;
				}
			}
		}
	}
	break;
	case 5:
	{
		system("cls");
		printf("\n\n\n\n										  是否卖出Tesla股票?(股情:%5.2lf)(Y/N)", p1.Tesla);
		int a = getch();
		if (a == 'N') {}
		else
		{
			if ((turn == 1 ? p1.T_share : p2.T_share) == 0)
			{
				printf("\n\n\n\n										  你没有Tesla股票(任意键继续)");
				getch();
			}
			else
			{
				if (turn == 1)
				{
					p1.asset = p1.asset + (p1.T_share * p1.Tesla);
					p1.T_share = 0;
				}
				else
				{
					p2.asset = p2.asset + (p2.T_share * p2.Tesla);
					p2.T_share = 0;
				}
			}
		}
	}
	break;
	case 6:
	{
		system("cls");
		printf("\n\n\n\n										  玩家%d获得人脉,黑市交易将不会被泄漏", turn);
		getch();
		if (turn == 1)
			p1.contact += 1;
		else
			p2.contact += 1;
	}
	break;
	case 7:
	{
		system("cls");
		printf("\n\n\n\n										  玩家%d获得地皮", turn);
		getch();
		if (turn == 1)
			p1.land += 1;
		else
			p2.land += 1;
	}
	break;
	case 8:
	{
		system("cls");
		printf("\n\n\n\n										  是否贷款?(Y/N)");
		int a = getch();
		if (a == 'N') {}
		else
		{
			int money = 0;
			if (turn == 1)
			{
				system("cls");
				printf("\n\n\n\n										  玩家1贷款金额:");
				scanf("%d", &money);
				getchar();
				p1.asset += money;
				p1.loan += money;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										  玩家2贷款金额:");
				scanf("%d", &money);
				getchar();
				p2.asset += money;
				p2.loan += money;
			}
		}
	}
	break;
	case 9:
	{
		system("cls");
		printf("\n\n\n\n										  是否进行黑市交易?(Y/N)");
		int a = getch();
		if (a == 'N') {}
		else
		{
			if (turn == 1)
			{
				p1.asset += 3000;
				p1.black_market += 1;
			}
			else
			{
				p2.asset += 3000;
				p2.black_market += 1;
			}
		}
	}
	break;
	case 10:
	{
		system("cls");
		if (turn == 1)
		{
			if (p1.secretary == 0)
			{
				p1.asset += 1000;
				printf("\n\n\n\n										  玩家%d生意火爆,资产+1000", turn);
			}
			else
			{
				p1.asset += (1000 * 1.5);
				printf("\n\n\n\n										  玩家%d生意火爆,资产+1500", turn);
			}
		}
		else
		{
			if (p2.secretary == 0)
			{
				p2.asset += 1000;
				printf("\n\n\n\n										  玩家%d生意火爆,资产+1000", turn);
			}
			else
			{
				p2.asset += (1000 * 1.5);
				printf("\n\n\n\n										  玩家%d生意火爆,资产+1500", turn);
			}
		}
		getch();
	}
	break;
	case 11:
	{
		system("cls");
		printf("\n\n\n\n										  玩家%d:你是否逃税?", turn);
		char a = getch();
		if (a == 'Y')
		{
			turn == 1 ? (p1.tex = 0) : (p2.tex = 0);
		}
		else
		{
			system("cls");
			printf("\n\n\n\n										  玩家%d纳税20%%", turn);
			getch();
			turn == 1 ? (p1.tex += (p1.asset * 0.2)) : (p2.tex += (p2.asset * 0.2));
			turn == 1 ? (p1.asset = p1.asset * 0.8) : (p2.asset = p2.asset * 0.8);
		}
	}
	break;
	case 12:
	{
		system("cls");
		printf("\n\n\n\n										  玩家%d获得极品秘书,此后普通收益和金矿收益提高50%%", turn);
		turn == 1 ? (p1.secretary += 1) : (p2.secretary += 1);
		getch();
	}
	break;
	case 13:
	{
		system("cls");
		printf("\n\n\n\n										  玩家%d获得地皮", turn);
		if (turn == 1)
			p1.land++;
		else
			p2.land++;
		getch();
	}
	break;
	case 14:
	{
		if (turn == 1)
		{
			if (p1.black_market == 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d未涉及黑市交易", turn);
			}
			if (p1.black_market != 0 && p1.contact != 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d使用人脉躲过了打黑行动", turn);
				p1.contact--;
			}
			if (p1.black_market != 0 && p1.contact == 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d黑市交易暴露,资产-5000", turn);
				p1.asset -= 5000;
				p1.black_market = 0;
			}
		}
		else
		{
			if (p2.black_market == 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d未涉及黑市交易", turn);
			}
			if (p2.black_market != 0 && p2.contact != 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d使用人脉躲过了打黑行动", turn);
				p2.contact--;
			}
			if (p2.black_market != 0 && p2.contact == 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d黑市交易暴露,资产-5000", turn);
				p2.asset -= 5000;
				p2.black_market = 0;
			}
		}
		getch();
	}
	break;
	case 15:
	{
		if (turn == 1)
		{
			if (p1.loan)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d还贷%lf元", turn, p1.loan * 1.5);
				p1.asset = p1.asset - p1.loan * 1.5;
				p1.loan = 0;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d未贷款", turn);
			}
		}
		else
		{
			if (p2.loan)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d还贷%lf元", turn, p2.loan * 1.5);
				p2.asset = p2.asset - p2.loan * 1.5;
				p2.loan = 0;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d未贷款", turn);
			}
		}
		getch();
	}
	break;
	case 16:
	{
		system("cls");
		printf("\n\n\n\n										  金融危机来临,玩家%d地皮清空", turn);
		turn == 1 ? (p1.land = 0) : (p2.land = 0);
		getch();
	}
	break;
	case 17:
	{
		system("cls");
		printf("\n\n\n\n										  是否卖出地皮?(Y/N)");
		int a = getch();
		if (a == 'N') {}
		else if (a == 'Y')
		{
			if ((turn == 1 ? p1.land : p2.land) == 0)
			{
				system("cls");
				printf("\n\n\n\n										  你名下没有地皮(任意键继续)");
				getch();
			}
			else
			{
				if (turn == 1)
				{

					p1.asset = 2000 * p1.land + p1.asset;
					p1.land = 0;
				}
				else
				{
					p2.asset = 2000 * p2.land + p2.asset;
					p2.land = 0;
				}
			}
		}
	}
	break;
	case 18:
	{
		system("cls");
		printf("\n\n\n\n										  玩家%d和巴菲特共进晚餐,资产+3000", turn);
		if (turn == 1)
			p1.asset += 3000;
		else
			p2.asset += 3000;
		getch();
	}
	break;
	case 19:
	{
		system("cls");
		printf("\n\n\n\n										  看见有老人摔倒,是否救助?(Y/N)");
		char b = getch();
		if (b != 'Y')
			return;
		int a = rand() % 2;
		if (a == 0)
		{
			printf("\n\n\n\n										  老人是洛克菲勒,回报您1000以表感谢(任意键继续)");
			getch();
			if (turn == 1)
				p1.asset += 1000;
			else
				p2.asset += 1000;
		}
		else
		{
			printf("\n\n\n\n										  救助老人成功,出车费500,玩家%d资产-500", turn);
			if (turn == 1)
				p1.asset -= 3000;
			else
				p2.asset -= 3000;
			getch();
		}
	}
	break;
	case 20:
	{
		system("cls");
		printf("\n\n\n\n										   入股特斯拉?(Y/N)");
		char a = getch();
		if (a == 'N') {}
		else
		{
			int temp_share = 0;
			system("cls");
			if (turn == 1)
				printf("\n\n\n\n										   入股数量(目前资产:%d):", p1.asset);
			else
				printf("\n\n\n\n										   入股数量(目前资产:%d):", p2.asset);
			scanf("%d", &temp_share);
			getch();
			turn == 1 ? (p1.Tesla = 1) : (p2.Tesla = 1);
			turn == 1 ? (p1.T_share += temp_share) : (p2.T_share += temp_share);
			turn == 1 ? (p1.asset = p1.asset - temp_share) : (p2.asset = p2.asset - temp_share);

		}
	}
	break;
	case 21:
	{
		if (turn == 1)
		{
			if (p1.secretary == 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d挖到金矿,资产+4000", turn);
				p1.asset += 4000;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d挖到金矿,资产+6000", turn);
				p1.asset = p1.asset + 4000 * 1.5;
			}
		}
		else
		{
			if (p2.secretary == 0)
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d挖到金矿,资产+4000", turn);
				p2.asset += 4000;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										  玩家%d挖到金矿,资产+6000", turn);
				p2.asset = p2.asset + 4000 * 1.5;
			}
		}
		getch();
	}
	break;
	case 22:
	{
		if (turn == 1)
		{
			if (p1.tex)
			{
				system("cls");
				printf("\n\n\n\n										   玩家%d已缴税", turn);
			}
			else if (p1.tex == 0 && p1.contact != 0)
			{
				system("cls");
				printf("\n\n\n\n										   玩家%d利用人脉躲过查税", turn);
				p1.contact--;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										   玩家%d被查逃税,补交资产50%%的税", turn);
				p1.asset = p1.asset - p1.asset * 0.5;
				p1.tex = 1;
			}
		}
		else
		{
			if (p2.tex)
			{
				system("cls");
				printf("\n\n\n\n										   玩家%d已缴税", turn);
			}
			else if (p2.tex == 0 && p2.contact != 0)
			{
				system("cls");
				printf("\n\n\n\n										   玩家%d利用人脉躲过查税", turn);
				p2.contact--;
			}
			else
			{
				system("cls");
				printf("\n\n\n\n										   玩家%d被查逃税,补交资产50%%的税", turn);
				p2.asset = p2.asset - p2.asset * 0.5;
				p2.tex = 1;
			}
		}
		getch();
	}
	break;
	case 23:
	{
		system("cls");
		printf("\n\n\n\n										   玩家%d经营不善,资产-1000", turn);
		turn == 1 ? (p1.asset -= 1000) : (p2.asset -= 1000);
		getch();
	}
	break;
	case 24:
	{
		system("cls");
		printf("\n\n\n\n										  是否卖出Tesla股票?(股情:%5.2lf)(Y/N)", p1.Tesla);
		int a = getch();
		if (a == 'N') {}
		else
		{
			if ((turn == 1 ? p1.T_share : p2.T_share) == 0)
			{
				printf("\n\n\n\n										  你没有Tesla股票(任意键继续)");
				getch();
			}
			else
			{
				if (turn == 1)
				{
					p1.asset = p1.asset + (p1.T_share * p1.Tesla);
					p1.T_share = 0;
				}
				else
				{
					p2.asset = p2.asset + (p2.T_share * p2.Tesla);
					p2.T_share = 0;
				}
			}
		}
	}
	}

}


void board_display(int dice, int turn, int remind)
{
	system("cls");
	int m, g, r, x, q, f, b, o, w, s, p;
	m = g = r = x = q = f = b = o = w = s = p = 0;
	for (int i = 0; i < 43; i++)
	{
		for (int k = 0; k < 43; k++)
		{
			if (i == 14 && k >= 18 && k <= 25)
			{
				if (g == 0)
				{
					if (remind == 0)
						printf("玩家%d请投掷色子 ", turn);
					else
						printf("  玩家%d请走棋   ", turn);
					g++;
				}
				continue;
			}
			if (i == 15 && k >= 19 && k <= 24)
			{
				if (m == 0)
				{
					printf("骰子数:%3d ", remind == 0 ? 0 : dice);
					m++;
				}
				continue;
			}
			if (i == 27 && k >= 9 && k <= 35)
			{
				if (r == 0)
				{
					printf("玩家1资产:%6d                    玩家2资产:%6d", p1.asset, p2.asset);
					r++;
				}
				continue;
			}
			if (i == 28 && k >= 9 && k <= 35)
			{
				if (x == 0)
				{
					printf("     贷款:%6d                         贷款:%6d", p1.loan, p2.loan);
					x++;
				}
				continue;
			}
			if (i == 29 && k >= 9 && k <= 35)
			{
				if (q == 0)
				{
					printf("     地皮:%6d                         地皮:%6d", p1.land, p2.land);
					q++;
				}
				continue;
			}
			if (i == 30 && k >= 9 && k <= 35)
			{
				if (f == 0)
				{
					printf("     黑市:%6d                         黑市:%6d", p1.black_market, p2.black_market);
					f++;
				}
				continue;
			}
			if (i == 31 && k >= 9 && k <= 35)
			{
				if (b == 0)
				{
					printf("     秘书:%6d                         秘书:%6d", p1.secretary, p2.secretary);
					b++;
				}
				continue;
			}
			if (i == 32 && k >= 9 && k <= 35)
			{
				if (o == 0)
				{
					printf("     股情:%6.2lf                         股情:%6.2lf", p1.Tesla, p2.Tesla);
					o++;
				}
				continue;
			}
			if (i == 33 && k >= 9 && k <= 35)
			{
				if (w == 0)
				{
					printf("     持股:%6d                         持股:%6d", p1.T_share, p2.T_share);
					w++;
				}
				continue;
			}
			if (i == 34 && k >= 9 && k <= 35)
			{
				if (s == 0)
				{
					printf("     人脉:%6d                         人脉:%6d", p1.contact, p2.contact);
					s++;
				}
				continue;
			}
			if (i == 35 && k >= 9 && k <= 35)
			{
				if (p == 0)
				{
					printf("     纳税:%6d                         纳税:%6d", p1.tex, p2.tex);
					p++;
				}
				continue;
			}
			switch (board[i][k])
			{
			case 0:printf("  ");
				break;
			case 2:printf("│ ");
				break;
			case 3:printf("┬ ");
				break;
			case 4:printf("—");
				break;
			case 5:printf("┌ ");
				break;
			case 6:printf("┐");
				break;
			case 7:printf("├ ");
				break;
			case 8:printf("┤ ");
				break;
			case 9:printf("┴ ");
				break;
			case 10:printf("└ ");
				break;
			case 11:printf("┘");
				break;
			case 12:printf("┼ ");
				break;
			case 13:printf("■");
				break;
			case 14:printf("★");
				break;
			case s1:printf("01");
				break;
			case s2:printf("02");
				break;
			case s3:printf("03");
				break;
			case s4:printf("04");
				break;
			case s5:printf("05");
				break;
			case s6:printf("06");
				break;
			case s7:printf("07");
				break;
			case s8:printf("08");
				break;
			case s9:printf("09");
				break;
			case s10:printf("10");
				break;
			case s11:printf("11");
				break;
			case s12:printf("12");
				break;
			case s13:printf("13");
				break;
			case s14:printf("14");
				break;
			case s15:printf("15");
				break;
			case s16:printf("16");
				break;
			case s17:printf("17");
				break;
			case s18:printf("18");
				break;
			case s19:printf("19");
				break;
			case s20:printf("20");
				break;
			case s21:printf("21");
				break;
			case s22:printf("22");
				break;
			case s23:printf("23");
				break;
			case s24:printf("24");
				break;

			}

		}
		if (i >= 9 && i <= 32)
		{
			switch (i)
			{
			case 9:printf("        1  - GO");
				break;
			case 10:printf("        2  - 资产+1000");
				break;
			case 11:printf("        3  - 路遇劫匪,资产-2000");
				break;
			case 12:printf("        4  - 地皮卖出?(Y\N)");
				break;
			case 13:printf("        5  - 卖出特斯拉股票?");
				break;
			case 14:printf("        6  - 获得人脉");
				break;
			case 15:printf("        7  - 获得地皮");
				break;
			case 16:printf("        8  - 贷款3000?(Y/N)");
				break;
			case 17:printf("        9  - 黑市交易?(若选,资产+3000[有风险])");
				break;
			case 18:printf("        10 - 生意火爆,资产+1000");
				break;
			case 19:printf("        11 - 是否逃税?");
				break;
			case 20:printf("        12 - 获得极品秘书(以后收入均增加%20)");
				break;
			case 21:printf("        13 - 获得地皮");
				break;
			case 22:printf("        14 - (若有)黑市交易暴露,资产-5000");
				break;
			case 23:printf("        15 - (若有)还贷(利率50%%)");
				break;
			case 24:printf("        16 - 金融危机,地皮清空");
				break;
			case 25:printf("        17 - 地皮卖出?(2000)");
				break;
			case 26:printf("        18 - 和巴菲特共进晚餐,资产+3000");
				break;
			case 27:printf("        19 - 碰见老人摔到,叫救护车?(出车费500)");
				break;
			case 28:printf("        20 - 入股特斯拉?");
				break;
			case 29:printf("        21 - 挖到金矿,资产+4000");
				break;
			case 30:printf("        22 - 追查逃税情况");
				break;
			case 31:printf("        23 - 经营不善,资产-1000");
				break;
			case 32:printf("        24 - 卖出特斯拉股票?");
				break;
			}
		}
		printf("\n");
	}



}
/*  printf("┌—————┬—————┬—————┬—————┬—————┬—————┬—————┐\n");
	printf("│          │          │          │          │          │          │          │\n");
	printf("│          │          │          │          │          │          │          │\n");
	printf("│     1    │          │          │          │          │          │          │\n");
	printf("│          │          │          │          │          │          │          │\n");
	printf("│          │          │          │          │          │          │          │\n");
	printf("├          ┼          ┼          ┼          ┼          ┼          ┼          ┤\n");	*/
void board_ini()
{
	//先全部初始化为0(因为棋盘的空白最多)
	for (int i = 0; i < 1849; i++)
	{
		*(*board + i) = 0;
	}
	//先全部由|和 — 来初始化,后面特殊处理拐角处
	for (int i = 0; i <= 42; i = i + 6)//行
	{
		for (int k = 0; k <= 42; k++)//列
		{
			board[i][k] = 4;
		}
	}
	for (int i = 1; i <= 41; i++)
	{
		for (int k = 0; k <= 42; k = k + 6)
		{
			board[i][k] = 2;
		}
	}
	//四个拐角:
	board[0][0] = 5;
	board[0][42] = 6;
	board[42][0] = 10;
	board[42][42] = 11;
	//第一排的┬
	for (int i = 6; i <= 36; i = i + 6)
	{
		board[0][i] = 3;
	}
	//最后一排和第二排的┴
	for (int k = 0; k <= 36; k = k + 36)
	{
		for (int i = 6; i <= 36; i = i + 6)
		{
			board[6 + k][i] = 9;
		}
	}
	//第一列的├ 
	for (int i = 6; i <= 36; i = i + 6)
	{
		board[i][0] = 7;
	}
	//最后一列的┤
	for (int i = 6; i <= 36; i = i + 6)
	{
		board[i][42] = 8;
	}
	//四个┼
	board[6][6] = board[6][36] = board[36][6] = board[36][36] = 12;
	//两边的┤和├
	for (int i = 12; i <= 30; i = i + 6)
	{
		board[i][6] = 8;
	}
	for (int i = 12; i <= 30; i = i + 6)
	{
		board[i][36] = 7;
	}
	//最下大排(倒数第二小排)的┬
	for (int i = 12; i <= 30; i = i + 6)
	{
		board[36][i] = 3;
	}
	//中间清空
	for (int i = 7; i <= 35; i++)
	{
		for (int k = 7; k <= 35; k++)
		{
			board[i][k] = 0;
		}
	}
	{
		board[3][3] = s1; board[9][3] = s2; board[15][3] = s3;
		board[21][3] = s4; board[27][3] = s5; board[33][3] = s6;
		board[39][3] = s7; board[39][9] = s8; board[39][15] = s9;
		board[39][21] = s10; board[39][27] = s11; board[39][33] = s12;
		board[39][39] = s13; board[33][39] = s14; board[27][39] = s15;
		board[21][39] = s16; board[15][39] = s17; board[9][39] = s18;
		board[3][39] = s19; board[3][33] = s20; board[3][27] = s21;
		board[3][21] = s22; board[3][15] = s23; board[3][9] = s24;
	}
}

line* move_p1(int dice, line* node1)
{
	board[node1->p1_row][node1->p1_col] = 0;
	for (int i = 0; i < dice; i++)
	{
		node1 = node1->next;
	}
	board[node1->p1_row][node1->p1_col] = 13;
	return node1;
}
line* move_p2(int dice, line* node2)
{
	board[node2->p2_row][node2->p2_col] = 0;
	for (int i = 0; i < dice; i++)
	{
		node2 = node2->next;
	}
	board[node2->p2_row][node2->p2_col] = 14;
	return node2;
}
line* cre_line()
{
	//从01到07链接:
	line* head = malloc(sizeof(line));
	line* copy_head = head;
	head->p1_row = 2;
	head->p1_col = 2;
	head->p2_col = 4;
	head->p2_row = 2;
	for (int i = 8; i <= 38; i = i + 6)
	{
		line* temp = malloc(sizeof(line));
		temp->p1_row = temp->p2_row = i;
		temp->p1_col = 2;
		temp->p2_col = 4;
		head->next = temp;
		head = head->next;
	}
	//下面一排
	for (int i = 8; i <= 40; i = i + 6)
	{
		line* temp = malloc(sizeof(line));
		temp->p1_row = temp->p2_row = 38;
		temp->p1_col = i;
		temp->p2_col = i + 2;
		head->next = temp;
		head = head->next;
	}
	//右边一列:
	for (int i = 32; i >= 2; i = i - 6)
	{
		line* temp = malloc(sizeof(line));
		temp->p1_row = temp->p2_row = i;
		temp->p1_col = 38;
		temp->p2_col = 40;
		head->next = temp;
		head = head->next;
	}
	//上面:
	for (int i = 32; i >= 8; i = i - 6)
	{
		line* temp = malloc(sizeof(line));
		temp->p1_row = temp->p2_row = 2;
		temp->p1_col = i;
		temp->p2_col = i + 2;
		head->next = temp;
		head = head->next;
	}
	head->next = copy_head;//首尾相连
	return copy_head;
}
void Tesla()//股票行情更新
{
	int b = rand() % 4 + 1;//增大随机度
	double rate = ((rand() * b) % 300) / 100.0;
	p1.Tesla = p2.Tesla = rate;
}
void menu()
{
	char ch;
loop1:
	system("cls");
	printf("\n\n\n\n\n\n\n");
	printf("                                         *************************                   \n");
	printf("                                         *   ★    大富翁    ★  *                   \n");
	printf("                                         *       1.开始游戏      *                   \n");
	printf("                                         *       2.游戏帮助      *                   \n");
	printf("                                         *       3.游戏须知      *                   \n");
	printf("                                         * ★  ★   ★   ★   ★ *                   \n");
	printf("                                         *************************                   \n");
	ch = getch();
	if (ch == '1')
	{
	}
	else if (ch == '2')
	{
		system("cls");
		printf("\n\n\n\n\n\n\n\n\n\n\n\n");
		printf("                                *******************************************************************************\n");
		printf("                                *  1.秘书加成只可用于普通收益和金矿收益,且不可叠加                           *\n");
		printf("                                *  2.所救助的老人有50%%的概率是洛克菲勒,若是,得到1500报酬,否则扣除出车费500 *\n");
		printf("                                *  3.使用人脉逃税或躲过打黑行动后,人脉-1                                     *\n");
		printf("                                *  4.如逃税被查,补交税款后,直到下一次逃税前不再补交                         *\n");
		printf("                                *  5.股票利率(股情)随机,其值在0-3之间                                      *\n");
		printf("                                *  6.贷款利率为50%%                                                            *\n");
		printf("                                *                             按空格键返回主菜单                              *\n");
		printf("                                *******************************************************************************\n");
		if (getch() == 32)
			goto loop1;
	}
	else if (ch == '3')
	{
		system("cls");
		printf("\n\n\n\n\n\n\n\n\n\n\n\n");
		printf("                                *****************************************************\n");
		printf("                                *            1.务必在全屏模式下进行游戏             *\n");
		printf("                                *            2.本游戏旨在指明逃税,贷款,           *\n");
		printf("                                *              黑市交易及房地产的风险。             *\n");
		printf("                                *            3.请勿将本游戏用作商务用途             *\n");
		printf("                                *            4.建议运行环境:Visual Studio          *\n");
		printf("                                *            5.制作者:蒋雨轩                       *\n");
		printf("                                *                   按空格键返回主菜                *\n");
		printf("                                *****************************************************\n");
		if (getch() == 32)
			goto loop1;
		else
		{
			system("cls");
			printf("\n\n\n\n\n\n\n\n\n\n\n\n");
			printf("                                             输入错误,请重新输入!");
			Sleep(3000);
			goto loop1;
		}
	}
}
void judge()
{
	if (p1.asset < 0)
	{
		system("cls");
		printf("\n\n\n\n										  玩家1破产,玩家2取胜!");
		exit(0);
	}
	if (p2.asset < 0)
	{
		system("cls");
		printf("\n\n\n\n										  玩家2破产,玩家1取胜!");
		exit(0);
	}

}

  • 12
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值