首页 > 其他分享 >闪亮登场1.0版

闪亮登场1.0版

时间:2022-12-23 11:58:32浏览次数:35  
标签:1.0 cout int 登场 位置 电脑 wj 玩家 闪亮

小学时,忘记了从哪里学会了一个游戏,名字叫做闪亮登场,这个游戏曾一度让我着迷,充实了我整个的童年。

闪亮登场游戏以石头剪子布的方式来进行,需要思考对策以及方法,是一个比较益智的游戏。

游戏规则是这样的:以两人局为例,两人进行石头剪子布(猜拳),胜者将获得一次行动机会。行动包括以下几种:

  1. 闪亮登场(即为出场亮相,是获得胜利的必要条件,当且仅当你已闪亮登场,后续操作才合法,每个人仅可进行一次,重复操作不支持且无意义);

  2. 找到你(即为你动身前往对面玩家的地点,使你们两人的位置相同,我们认为这种操作合法,当且仅当你们两人的位置先前是不同的,否则,此操作不支持且无意义);

  3. 打出脑浆(即为你对对面玩家发起的进攻,是获得胜利的必要条件,我们认为这种操作合法,当且仅当你们两人的位置此刻是相同的且对方的脑浆值为1,否则,此操作不支持且无意义);

  4. 打掉门牙(即为你对对面玩家发起的进攻,是获得胜利的必要条件,我们认为这种操作合法,当且仅当你们两人的位置此刻是相同的且对方的脑浆值为0,门牙值为1,否则,此操作不支持且无意义);

  5. 抢救无效(即为你对对面玩家发起的进攻,是获得胜利的必要条件,我们认为这种操作合法,当且仅当你们两人的位置此刻是相同的且为医院,且对方的脑浆值、门牙值均为0,抢救值为1,否则,此操作不支持且无意义);

  6. 送人(将对方送到某处)(即为你与对面玩家的位置均改变为某处的位置,我们认为这种操作合法,当且仅当你们两人的位置相同,且与送后的位置不同,否则,此操作不支持无意义);

  7. 踢人(将对方踢到某处)(即为你将对面玩家的位置改变为某处的位置,我们认为这种操作合法,当且仅当你们两人的位置相同,且将对面玩家改变后的位置与先前位置不同,否则,此操作不支持且无意义);

  8. 前往某地(即为你将自己的位置改变为某处的位置,我们认为这种操作合法,当且仅当你改变前后的位置不同,否则,此操作不支持且无意义);

  9. 火化(即为你对对面玩家发起的最后进攻,是获得胜利的充要条件,我们认为这种操作合法,当且仅当你们两人的位置此刻是相同的且为火化场,且对方的脑浆值、门牙值以及抢救值均为0,否则,此操作不支持且无意义)。

如上是两人局的全部游戏规则。

于是我在思考:能否可以通过程序来实现这一过程呢,即玩家对战电脑即可(人机版),我苦思了好久(一个小时),终于有了思路,并最终花费3个多小时,历数十次失败,成功做到了代码实现(啊啊啊俺的睡眠时间无了)。

  • 首先,根据规则,我需要制定一个石头剪子布的程序,人这边可以通过输入来决定出石头、剪子还是布,但电脑那边怎么办?要保证随机。我先到了随机数函数rand(),结合自己之前写过模拟斗地主发牌代码的经历,我决定调用了随机数函数,让它产生1-3之间的随机数,分别代表石头、剪子和布,这样就可以了。我们知道,STL里面有自带的rand()函数,它返回的是任意一个int型正整数,因此要产生1-3之间的随机数,只需要将得到的返回值模3再加1即可,这样就做到了石头剪子布的程序随机性实现,具体实现如下:
inline int random()//随机数函数 
{
	srand((unsigned)time(NULL));
	int res=rand()%3+1;
	return res;
}
  • 第二,石头剪子布比较大小,也是一个比较复杂的事情,由于本人能力较弱,因而选择了暴力枚举法比较,具体实现如下:
inline void caiquan()//猜拳函数 
{
	cout<<"[系统提示]石头剪子布:1代表石头,2代表剪子,3代表布"<<endl; 
	for( ; ; )
	{
		int wj;
		cin>>wj;
		int dn=random();
		if(wj==1 and dn==1)
		{
			cout<<"[系统提示]玩家和电脑均出石头,平局,继续";
		}
		if(wj==2 and dn==2)
		{
			cout<<"[系统提示]玩家和电脑均出剪子,平局,继续";
		}
		if(wj==3 and dn==3)
		{
			cout<<"[系统提示]玩家和电脑均出布,平局,继续";
		}
		if(wj==1 and dn==2)
		{
			cout<<"[系统提示]玩家出石头,电脑出剪子,玩家赢"<<endl; 
			cout<<"[系统提示]玩家获得一次行动机会,请行动"<<endl;
			chance_wj++;
		}	
		if(wj==2 and dn==3)
		{
			cout<<"[系统提示]玩家出剪子,电脑出布,玩家赢"<<endl; 
			cout<<"[系统提示]玩家获得一次行动机会,请行动"<<endl;
			chance_wj++;
		}
		if(wj==3 and dn==1)
		{
			cout<<"[系统提示]玩家出布,电脑出石头,玩家赢"<<endl; 
			cout<<"[系统提示]玩家获得一次行动机会,请行动"<<endl;
			chance_wj++;
		}
		if(wj==1 and dn==3)
		{
			cout<<"[系统提示]玩家出石头,电脑出布,电脑赢"<<endl; 
			cout<<"[系统提示]电脑获得一次行动机会"<<endl;
			chance_dn++;
		}
		if(wj==2 and dn==1)
		{
			cout<<"[系统提示]玩家出剪子,电脑出石头,电脑赢"<<endl; 
			cout<<"[系统提示]电脑获得一次行动机会"<<endl;
			chance_dn++;
		}
		if(wj==3 and dn==2)
		{
			cout<<"[系统提示]玩家出布,电脑出剪子,电脑赢"<<endl; 
			cout<<"[系统提示]电脑获得一次行动机会"<<endl;
			chance_dn++;
		}
		putchar('\n');
		if(wj!=dn) break;
	}
}
  • 第三,就是主函数的设计。在设计之前,我们先--眨眨眼
Sleep(1000);

再--清晰一下

putchar('\n');

$\quad$ 然后再进行设计,不妨定义一个bool型全局变量game,那么当game值为真时,游戏还未结束,可以将石头剪子布循环进行,如果game值为假时,游戏结束,一方胜利,石头剪子布循环停止。

$\quad$ 于是我先来设计玩家的程序,其实思路很简单,只需要模拟一下让计算机进行实现即可,首先在玩家石头剪子布胜利一次(即获得一次机会)时,都弹出[系统提示]请行动:1代表闪亮登场,2代表去找人,3代表要进攻,4代表要送人,5代表要踢人,6代表要火化,7代表要前往某地这样的话,以便我们选择,然后输入一个数表示我们的选择,然后去检验这个选择的合法性,需要设一些变量,通过逻辑语句和条件语句来实现,并将合法的选择转化为外在体现,将不合法的选择转化成提示语句弹出并自动过滤屏蔽,就可以轻松实现。举个例子:当玩家选择了6,即选择对电脑进行火化时,我们依次检验玩家和电脑是否同时在火化场、电脑的脑浆值是否为0、电脑的门牙值是否为0、电脑的抢救值是否为0,如果以上条件均满足,则操作合法,予以实现,若存在一个不满足,则弹出相应的提示语句,并将此次机会作废,即为“憋”。类似地,可以写出一系列的行动程序。

$\quad$ 而在行动过程中,存在这样一个问题,就是玩家和电脑的位置如何记录,我没有选择用结构体去定义玩家和电脑的信息,进而通过访问结构体成员来进行操作,而是分别定义了玩家和电脑的不同信息的全局变量,例如玩家的位置变量设为pos_wj(即position of wanjia),电脑的位置变量设为pos_dn(即position of diannao),首先人为规定0为玩家家,1为电脑家,2为医院,3为火化场,通过赋值来实现位置间的转换,进而实现程序的正常运行。

具体实现如下:

if(chance_wj==1)
		{
			cout<<"[系统提示]请行动:1代表闪亮登场,2代表去找人,3代表要进攻,4代表要送人,5代表要踢人,6代表要火化,7代表要前往某地"<<endl;
			int wj1;
			cin>>wj1;
			if(wj1==1)
			{
				if(wjsl==0) 
				{
					cout<<"我:闪亮登场"<<endl;
					wjsl=1;
				}
				else cout<<"[系统提示]你已经闪亮登场了,憋"<<endl; 
			} 
			else if(wj1==2 or wj1==3 or wj1==4 or wj1==5 or wj1==6 or wj1==7) 
			{
				if(wjsl==0) cout<<"[系统提示]你还没有闪亮登场,憋"<<endl;
				else
				{
					if(wj1==2) 
					{
						if(pos_wj==pos_dn) cout<<"[系统提示]你和电脑已经在一起了,憋"<<endl;
						else 
						{
							cout<<"我:找到你"<<endl; 
							pos_wj=pos_dn;
					    }
					}
					if(wj1==3)
					{
						if(pos_wj!=pos_dn) cout<<"[系统提示]你和电脑不在一起,憋"<<endl;
						else
						{
							cout<<"[系统提示]请选择你要进攻的方式:1代表打出脑浆,2代表打掉门牙,3代表抢救无效"<<endl;
							int wj2;
							cin>>wj2;
							if(wj2==1)
							{
								if(dnnj==0) cout<<"[系统提示]电脑已经没有脑浆了,憋"<<endl;
								else 
								{
									cout<<"我:打出脑浆"<<endl; 
									dnnj=0;
								}
							}
							else if(wj2==2)
							{
								if(dnnj==1) cout<<"[系统提示]电脑脑浆还有,憋" <<endl;
								else
								{
									if(dnmy==0) cout<<"[系统提示]电脑已经没有门牙了,憋"<<endl;
									else 
									{
										cout<<"我:打掉门牙"<<endl;
										dnmy=0;
									}
								}
							}
							else if(wj2==3)
							{
								if(!(pos_wj==2 and pos_dn==2)) cout<<"[系统提示]你和电脑不同时在医院,憋"<<endl;
								else
								{
									if(dnnj==1) cout<<"[系统提示]电脑脑浆还有,憋"<<endl;
									else
									{
										if(dnmy==1) cout<<"[系统提示]电脑门牙还有,憋"<<endl;
										else
										{
											if(dnqj==0) cout<<"[系统提示]电脑已经被抢救无效了,憋"<<endl;
											else 
											{
												cout<<"我:抢救无效"<<endl; 
												dnqj=0;
											}
										}
									}	
								}
							}
							else cout<<"[系统提示]没有该选项,憋";
						}
					}
					if(wj1==4)
					{
						if(pos_wj!=pos_dn) cout<<"[系统提示]你和电脑不在一起,憋"<<endl;
						else
						{
							cout<<"[系统提示]请选择你要送的目的地:0玩家家,1代表电脑家,2代表医院,3代表火化场"<<endl;
							int wj3;
							cin>>wj3;
							if(wj3==0)
							{
								if(pos_wj==0) cout<<"[系统提示]你和电脑已经在玩家家了,憋"<<endl;
								else 
								{
									cout<<"我:送回我家"<<endl; 
									pos_wj=0;
									pos_dn=0;
								}
							}
							else if(wj3==1)
							{
								if(pos_wj==1) cout<<"[系统提示]你和电脑已经在电脑家了,憋"<<endl;
								else 
								{
									cout<<"我:送到你家"<<endl;
									pos_wj=1;
									pos_dn=1;
								}
							}
							else if(wj3==2)
							{
								if(pos_wj==2) cout<<"[系统提示]你和电脑已经在医院了,憋"<<endl;
								else 
								{
									cout<<"我:送进医院"<<endl;
									pos_wj=2;
									pos_dn=2;
								}	
							} 
							else if(wj3==3)
							{
								if(pos_wj==3) cout<<"[系统提示]你和电脑已经在火化场了,憋"<<endl;
								else 
								{
									cout<<"我:送进火化场"<<endl;
									pos_wj=3;
									pos_dn=3;
								}
							}
							else cout<<"[系统提示]没有该选项,憋"<<endl;
						}
					}
					if(wj1==5)
					{
						if(pos_wj!=pos_dn) cout<<"[系统提示]你和电脑不在一起,憋";
						else
						{
							cout<<"[系统提示]请选择你要踢的目的地:0玩家家,1代表电脑家,2代表医院,3代表火化场"<<endl;
							int wj4;
							cin>>wj4;
							if(wj4==0)
							{
								if(pos_wj==0) cout<<"[系统提示]你和电脑已经在玩家家了,憋"<<endl;
								else 
								{
									cout<<"我:踢到我家"<<endl;
									pos_dn=0;
								}
							}
							else if(wj4==1)
							{
								if(pos_wj==1) cout<<"[系统提示]你和电脑已经在电脑家了,憋"<<endl;
								else 
								{
									cout<<"我:踢回你家"<<endl;
									pos_dn=1; 
								}
							}
							else if(wj4==2)
							{
								if(pos_wj==2) cout<<"[系统提示]你和电脑已经在医院了,憋"<<endl;
								else 
								{
									cout<<"我:踢进医院"<<endl;	
									pos_dn=2;
								}
							} 
							else if(wj4==3)
							{
								if(pos_wj==3) cout<<"[系统提示]你和电脑已经在火化场了,憋"<<endl;
								else 
								{
									cout<<"我:踢进火化场"<<endl;
									pos_dn=3;
								}
							}
							else cout<<"[系统提示]没有该选项,憋"<<endl;
						}
					}
					if(wj1==6)
					{
						if(!(pos_wj==3 and pos_dn==3)) cout<<"[系统提示]你和电脑不同时在火化场,憋"<<endl;
						else
						{
							if(!(dnnj==0)) cout<<"[系统提示]电脑脑浆还有,憋"<<endl;
							else
							{
								if(!(dnmy==0)) cout<<"[系统提示]电脑门牙还有,憋"<<endl;
								else
								{
									if(!(dnqj==0)) cout<<"[系统提示]电脑抢救还有效,憋"<<endl;
									else 
									{
										cout<<"我:火化"<<endl;
										success="wj";
										game=0; 
										break;
									}
								}
							}
						}
					}
					if(wj1==7)
					{
						cout<<"[系统提示]请选择你要前往的目的地:0玩家家,1代表电脑家,2代表医院,3代表火化场"<<endl;
						int wj5;
						cin>>wj5;
						if(wj5==0)
						{
							if(pos_wj==0) cout<<"[系统提示]你已经在玩家家了,憋"<<endl;
							else 
							{
								cout<<"我:回到我家"<<endl;
								pos_wj=0;
							} 
						} 
						else if(wj5==1)
						{
							if(pos_wj==1) cout<<"[系统提示]你已经在电脑家了,憋"<<endl;
							else 
							{
								cout<<"我:冲进你家"<<endl;
								pos_wj=1;
							} 
						} 
						else if(wj5==2)
						{
							if(pos_wj==2) cout<<"[系统提示]你已经在医院了,憋"<<endl;
							else 
							{
								cout<<"我:去医院"<<endl;
								pos_wj=2;
							} 
						} 
						else if(wj5==3)
						{
							if(pos_wj==3) cout<<"[系统提示]你已经在火化场了,憋"<<endl;
							else 
							{
								cout<<"我:去火化场"<<endl;
								pos_wj=3;
							} 
						} 
						else cout<<"[系统提示]没有该选项,憋"<<endl;
					}
				} 
			}
			else cout<<"[系统提示]没有该选项,憋"; 
		}

$\quad$ 然后就是再来设计电脑的程序,电脑不存在像玩家那样需要弹出相应的提示语句,也不需要思考应对策略,只需要按照正常玩法(与闪亮登场之血战到底版相同,后面介绍)进行程序运行即可。即:当电脑获得一次行动机会后,如果玩家的位置与电脑的位置不同,电脑将找到玩家,相同后,进行打出脑浆、打掉门牙、送进医院、抢救无效操作(当然并非一定顺利如此),然后再送进火化场,火化,设计出的程序可以严格按照规则进行,避免了错误的发生,虽说打法鲁莽且低端,但这也是闪亮登场新手或大部分人的较常规打法,因此不存在实力偏弱等现象,基本是靠石头剪子布的运气。
具体实现如下:

if(chance_dn==1)
		{
			if(dnsl==0) 
			{
				cout<<"电脑:闪亮登场"<<endl;
				dnsl=1; 
			}
			else
			{
				if(pos_dn==3 and pos_wj==3 and wjqj==0) 
				{
					cout<<"电脑:火化"<<endl;
					success="dn";
					game=0; 
					break;
				}
				if(pos_dn!=pos_wj) 
				{
					cout<<"电脑:找到你"<<endl;
					pos_dn=pos_wj;
				}
				else
				{
					if(wjnj==1) 
					{
						cout<<"电脑:打出脑浆"<<endl;
						wjnj=0;
					}
					else
					{
						if(wjmy==1) 
						{
							cout<<"电脑:打掉门牙"<<endl;
							wjmy=0;
						}
						else
						{
							if(wjqj==0) 
							{
								cout<<"电脑:送进火化场"<<endl;
								pos_wj=3;
								pos_dn=3;
							}
							if(wjqj==1)
							{
								if(pos_dn!=2) 
								{
									cout<<"电脑:送进医院"<<endl;
									pos_dn=2;
									pos_wj=2;
								}
								else 
								{
									cout<<"电脑:抢救无效"<<endl; 
									wjqj=0; 
								}
							}
						}
					} 
				}
			}
  • 第四,就是程序停止,尾声。

$\quad$ 当game的值为假时,程序停止,停止后跳出循环即可,采用break语句(当然我选择了当有一方被火化后,game值赋为假,自己写了一个break),虽说有一些赘余,但这样便于程序的修复,也使得思路更为清晰,同时略微加速了一下程序。
具体实现如下:

putchar('\n');
	cout<<"游戏结束了!  ";
	if(success=="wj") cout<<"玩家获胜!";
	else if(success=="dn") cout<<"电脑获胜!"; 

一定要记得在循环末尾要将机会变量初始化!即:

chance_wj=0,chance_dn=0;

这样才能保证程序不出错。

我又用一些提示话语以及电脑windows.h头文件自带的函数Sleep函数,实现了休眠(延缓)功能,丰富了游戏体验。

综上,是我出于对闪亮登场这款民间游戏的热爱,而脑洞大开开发出的这款低配1.1.0版本的人机单机游戏,在无聊的基础上也实现了消遣的目的。在一定程度上勾起了我对童年的回忆,锻炼了自己的编程能力,具有较高价值意义。

未来,我会继续研究并开发出闪亮登场的2v2版本和身份版本,这可能需要一定的时间,请大家不要着急,我会尽力做好自己的本职工作,为大家营造更好的游戏体验氛围。

奉上完整代码~

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<windows.h>
#include<cstring>
using namespace std;
int chance_wj=0,chance_dn=0;//分别代表玩家机会和电脑机会,1有0无 
bool game=1;//代表游戏状态,1真0假,状态为真时可正常运行 
int wjsl=0,dnsl=0;//分别代表玩家闪亮(登场)、电脑闪亮(登场) 1真0假 
int dnnj=1,dnmy=1,wjnj=1,wjmy=1;//分别代表电脑脑浆、电脑门牙、玩家脑浆、玩家门牙  1有0无 
int wjqj=1,dnqj=1;//分别代表玩家抢救和电脑抢救状态 1有效0无效 
int pos_wj=0,pos_dn=1;//0代表玩家的家,1代表电脑的家,2代表医院,3代表火化场 
string success;//判断获胜方 
inline int random()//随机数函数 
{
	srand((unsigned)time(NULL));
	int res=rand()%3+1;
	return res;
}
inline void caiquan()//猜拳函数 
{
	cout<<"[系统提示]石头剪子布:1代表石头,2代表剪子,3代表布"<<endl; 
	for( ; ; )
	{
		int wj;
		cin>>wj;
		int dn=random();
		if(wj==1 and dn==1)
		{
			cout<<"[系统提示]玩家和电脑均出石头,平局,继续";
		}
		if(wj==2 and dn==2)
		{
			cout<<"[系统提示]玩家和电脑均出剪子,平局,继续";
		}
		if(wj==3 and dn==3)
		{
			cout<<"[系统提示]玩家和电脑均出布,平局,继续";
		}
		if(wj==1 and dn==2)
		{
			cout<<"[系统提示]玩家出石头,电脑出剪子,玩家赢"<<endl; 
			cout<<"[系统提示]玩家获得一次行动机会,请行动"<<endl;
			chance_wj++;
		}	
		if(wj==2 and dn==3)
		{
			cout<<"[系统提示]玩家出剪子,电脑出布,玩家赢"<<endl; 
			cout<<"[系统提示]玩家获得一次行动机会,请行动"<<endl;
			chance_wj++;
		}
		if(wj==3 and dn==1)
		{
			cout<<"[系统提示]玩家出布,电脑出石头,玩家赢"<<endl; 
			cout<<"[系统提示]玩家获得一次行动机会,请行动"<<endl;
			chance_wj++;
		}
		if(wj==1 and dn==3)
		{
			cout<<"[系统提示]玩家出石头,电脑出布,电脑赢"<<endl; 
			cout<<"[系统提示]电脑获得一次行动机会"<<endl;
			chance_dn++;
		}
		if(wj==2 and dn==1)
		{
			cout<<"[系统提示]玩家出剪子,电脑出石头,电脑赢"<<endl; 
			cout<<"[系统提示]电脑获得一次行动机会"<<endl;
			chance_dn++;
		}
		if(wj==3 and dn==2)
		{
			cout<<"[系统提示]玩家出布,电脑出剪子,电脑赢"<<endl; 
			cout<<"[系统提示]电脑获得一次行动机会"<<endl;
			chance_dn++;
		}
		putchar('\n');
		if(wj!=dn) break;
	}
}
int main()
{
	cout<<"[系统提示]准备好了吗?游戏马上开始!";
	Sleep(1000);
	putchar('\n');
	while(game==1)
	{
		caiquan();
		if(chance_wj==1)
		{
			cout<<"[系统提示]请行动:1代表闪亮登场,2代表去找人,3代表要进攻,4代表要送人,5代表要踢人,6代表要火化,7代表要前往某地"<<endl;
			int wj1;
			cin>>wj1;
			if(wj1==1)
			{
				if(wjsl==0) 
				{
					cout<<"我:闪亮登场"<<endl;
					wjsl=1;
				}
				else cout<<"[系统提示]你已经闪亮登场了,憋"<<endl; 
			} 
			else if(wj1==2 or wj1==3 or wj1==4 or wj1==5 or wj1==6 or wj1==7) 
			{
				if(wjsl==0) cout<<"[系统提示]你还没有闪亮登场,憋"<<endl;
				else
				{
					if(wj1==2) 
					{
						if(pos_wj==pos_dn) cout<<"[系统提示]你和电脑已经在一起了,憋"<<endl;
						else 
						{
							cout<<"我:找到你"<<endl; 
							pos_wj=pos_dn;
					    }
					}
					if(wj1==3)
					{
						if(pos_wj!=pos_dn) cout<<"[系统提示]你和电脑不在一起,憋"<<endl;
						else
						{
							cout<<"[系统提示]请选择你要进攻的方式:1代表打出脑浆,2代表打掉门牙,3代表抢救无效"<<endl;
							int wj2;
							cin>>wj2;
							if(wj2==1)
							{
								if(dnnj==0) cout<<"[系统提示]电脑已经没有脑浆了,憋"<<endl;
								else 
								{
									cout<<"我:打出脑浆"<<endl; 
									dnnj=0;
								}
							}
							else if(wj2==2)
							{
								if(dnnj==1) cout<<"[系统提示]电脑脑浆还有,憋" <<endl;
								else
								{
									if(dnmy==0) cout<<"[系统提示]电脑已经没有门牙了,憋"<<endl;
									else 
									{
										cout<<"我:打掉门牙"<<endl;
										dnmy=0;
									}
								}
							}
							else if(wj2==3)
							{
								if(!(pos_wj==2 and pos_dn==2)) cout<<"[系统提示]你和电脑不同时在医院,憋"<<endl;
								else
								{
									if(dnnj==1) cout<<"[系统提示]电脑脑浆还有,憋"<<endl;
									else
									{
										if(dnmy==1) cout<<"[系统提示]电脑门牙还有,憋"<<endl;
										else
										{
											if(dnqj==0) cout<<"[系统提示]电脑已经被抢救无效了,憋"<<endl;
											else 
											{
												cout<<"我:抢救无效"<<endl; 
												dnqj=0;
											}
										}
									}	
								}
							}
							else cout<<"[系统提示]没有该选项,憋";
						}
					}
					if(wj1==4)
					{
						if(pos_wj!=pos_dn) cout<<"[系统提示]你和电脑不在一起,憋"<<endl;
						else
						{
							cout<<"[系统提示]请选择你要送的目的地:0玩家家,1代表电脑家,2代表医院,3代表火化场"<<endl;
							int wj3;
							cin>>wj3;
							if(wj3==0)
							{
								if(pos_wj==0) cout<<"[系统提示]你和电脑已经在玩家家了,憋"<<endl;
								else 
								{
									cout<<"我:送回我家"<<endl; 
									pos_wj=0;
									pos_dn=0;
								}
							}
							else if(wj3==1)
							{
								if(pos_wj==1) cout<<"[系统提示]你和电脑已经在电脑家了,憋"<<endl;
								else 
								{
									cout<<"我:送到你家"<<endl;
									pos_wj=1;
									pos_dn=1;
								}
							}
							else if(wj3==2)
							{
								if(pos_wj==2) cout<<"[系统提示]你和电脑已经在医院了,憋"<<endl;
								else 
								{
									cout<<"我:送进医院"<<endl;
									pos_wj=2;
									pos_dn=2;
								}	
							} 
							else if(wj3==3)
							{
								if(pos_wj==3) cout<<"[系统提示]你和电脑已经在火化场了,憋"<<endl;
								else 
								{
									cout<<"我:送进火化场"<<endl;
									pos_wj=3;
									pos_dn=3;
								}
							}
							else cout<<"[系统提示]没有该选项,憋"<<endl;
						}
					}
					if(wj1==5)
					{
						if(pos_wj!=pos_dn) cout<<"[系统提示]你和电脑不在一起,憋";
						else
						{
							cout<<"[系统提示]请选择你要踢的目的地:0玩家家,1代表电脑家,2代表医院,3代表火化场"<<endl;
							int wj4;
							cin>>wj4;
							if(wj4==0)
							{
								if(pos_wj==0) cout<<"[系统提示]你和电脑已经在玩家家了,憋"<<endl;
								else 
								{
									cout<<"我:踢到我家"<<endl;
									pos_dn=0;
								}
							}
							else if(wj4==1)
							{
								if(pos_wj==1) cout<<"[系统提示]你和电脑已经在电脑家了,憋"<<endl;
								else 
								{
									cout<<"我:踢回你家"<<endl;
									pos_dn=1; 
								}
							}
							else if(wj4==2)
							{
								if(pos_wj==2) cout<<"[系统提示]你和电脑已经在医院了,憋"<<endl;
								else 
								{
									cout<<"我:踢进医院"<<endl;	
									pos_dn=2;
								}
							} 
							else if(wj4==3)
							{
								if(pos_wj==3) cout<<"[系统提示]你和电脑已经在火化场了,憋"<<endl;
								else 
								{
									cout<<"我:踢进火化场"<<endl;
									pos_dn=3;
								}
							}
							else cout<<"[系统提示]没有该选项,憋"<<endl;
						}
					}
					if(wj1==6)
					{
						if(!(pos_wj==3 and pos_dn==3)) cout<<"[系统提示]你和电脑不同时在火化场,憋"<<endl;
						else
						{
							if(!(dnnj==0)) cout<<"[系统提示]电脑脑浆还有,憋"<<endl;
							else
							{
								if(!(dnmy==0)) cout<<"[系统提示]电脑门牙还有,憋"<<endl;
								else
								{
									if(!(dnqj==0)) cout<<"[系统提示]电脑抢救还有效,憋"<<endl;
									else 
									{
										cout<<"我:火化"<<endl;
										success="wj";
										game=0; 
										break;
									}
								}
							}
						}
					}
					if(wj1==7)
					{
						cout<<"[系统提示]请选择你要前往的目的地:0玩家家,1代表电脑家,2代表医院,3代表火化场"<<endl;
						int wj5;
						cin>>wj5;
						if(wj5==0)
						{
							if(pos_wj==0) cout<<"[系统提示]你已经在玩家家了,憋"<<endl;
							else 
							{
								cout<<"我:回到我家"<<endl;
								pos_wj=0;
							} 
						} 
						else if(wj5==1)
						{
							if(pos_wj==1) cout<<"[系统提示]你已经在电脑家了,憋"<<endl;
							else 
							{
								cout<<"我:冲进你家"<<endl;
								pos_wj=1;
							} 
						} 
						else if(wj5==2)
						{
							if(pos_wj==2) cout<<"[系统提示]你已经在医院了,憋"<<endl;
							else 
							{
								cout<<"我:去医院"<<endl;
								pos_wj=2;
							} 
						} 
						else if(wj5==3)
						{
							if(pos_wj==3) cout<<"[系统提示]你已经在火化场了,憋"<<endl;
							else 
							{
								cout<<"我:去火化场"<<endl;
								pos_wj=3;
							} 
						} 
						else cout<<"[系统提示]没有该选项,憋"<<endl;
					}
				} 
			}
			else cout<<"[系统提示]没有该选项,憋"<<endl; 
		}
		if(chance_dn==1)
		{
			if(dnsl==0) 
			{
				cout<<"电脑:闪亮登场"<<endl;
				dnsl=1; 
			}
			else
			{
				if(pos_dn==3 and pos_wj==3 and wjqj==0) 
				{
					cout<<"电脑:火化"<<endl;
					success="dn";
					game=0; 
					break;
				}
				if(pos_dn!=pos_wj) 
				{
					cout<<"电脑:找到你"<<endl;
					pos_dn=pos_wj;
				}
				else
				{
					if(wjnj==1) 
					{
						cout<<"电脑:打出脑浆"<<endl;
						wjnj=0;
					}
					else
					{
						if(wjmy==1) 
						{
							cout<<"电脑:打掉门牙"<<endl;
							wjmy=0;
						}
						else
						{
							if(wjqj==0) 
							{
								cout<<"电脑:送进火化场"<<endl;
								pos_wj=3;
								pos_dn=3;
							}
							if(wjqj==1)
							{
								if(pos_dn!=2) 
								{
									cout<<"电脑:送进医院"<<endl;
									pos_dn=2;
									pos_wj=2;
								}
								else 
								{
									cout<<"电脑:抢救无效"<<endl; 
									wjqj=0; 
								}
							}
						}
					} 
				}
			}
		}
		chance_wj=0,chance_dn=0;
	}
	putchar('\n');
	cout<<"游戏结束了!  ";
	if(success=="wj") cout<<"玩家获胜!";
	else if(success=="dn") cout<<"电脑获胜!"; 
	return 0;
}

标签:1.0,cout,int,登场,位置,电脑,wj,玩家,闪亮
From: https://www.cnblogs.com/lngym/p/17000367.html

相关文章