⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canvasframe.cpp

📁 用C++实现的名为下楼小游戏
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			}
			
		}
		break;
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S6[i].exist)
			{
				S6[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}

void canvasFrame::generate_3()//没有弹簧
{
	int i;
    if(ge!=0)
	{
	switch(rand()%10)
	{
	case 0:
	case 1:
	case 2:
    case 3:
    case 4:
	case 5:
		for(i=0;i<10;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
		}
		break;
	case 6:
		for(i=0;i<5;i++)
		{
			if(!S2[i].exist)
			{
				S2[i].generate();
			    break;
			}
		}
		break;
	case 7:
		for(i=0;i<5;i++)
		{
			if(!S4[i].exist)
			{
				S4[i].generate();
			    break;
			}
			
		}
		break;
	case 8:
		for(i=0;i<5;i++)
		{
			if(!S5[i].exist)
			{
				S5[i].generate();
			    break;
			}
			
		}
		break;
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S6[i].exist)
			{
				S6[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}

void canvasFrame::generate_4()//没有履带
{
	int i;
    if(ge!=0)
	{
	switch(rand()%10)
	{
	case 0:
	case 1:
	case 2:
    case 3:
    case 4:
	case 5:
		for(i=0;i<10;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
		}
		break;
	case 6:
		for(i=0;i<5;i++)
		{
			if(!S2[i].exist)
			{
				S2[i].generate();
			    break;
			}
		}
		break;
	case 7:
		for(i=0;i<5;i++)
		{
			if(!S3[i].exist)
			{
				S3[i].generate();
			    break;
			}
			
		}
		break;
	case 8:
		for(i=0;i<5;i++)
		{
			if(!S4[i].exist)
			{
				S4[i].generate();
			    break;
			}
			
		}
		break;
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S2[i].exist)
			{
				S2[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}



void canvasFrame::generate_5()//没有翻滚石和弹簧
{
	int i;
    if(ge!=0)
	{
	switch(rand()%10)
	{
	case 0:
	case 1:
	case 2:
    case 3:
    case 4:
	case 5:
    case 6:
		for(i=0;i<10;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
		}
		break;
	case 7:
		for(i=0;i<5;i++)
		{
			if(!S4[i].exist)
			{
				S4[i].generate();
			    break;
			}
			
		}
		break;
	case 8:
		for(i=0;i<5;i++)
		{
			if(!S5[i].exist)
			{
				S5[i].generate();
			    break;
			}
			
		}
		break;
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S6[i].exist)
			{
				S6[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}

void canvasFrame::generate_6()//没有翻滚石和履带
{
	int i;
    if(ge!=0)
	{
	switch(rand()%10)
	{
	case 0:
	case 1:
	case 2:
    case 3:
    case 4:
	case 5:
    case 6:
		for(i=0;i<10;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
		}
		break;
	case 7:
		for(i=0;i<5;i++)
		{
			if(!S3[i].exist)
			{
				S3[i].generate();
			    break;
			}
			
		}
		break;
	case 8:
		for(i=0;i<5;i++)
		{
			if(!S4[i].exist)
			{
				S4[i].generate();
			    break;
			}
			
		}
		break;
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}

void canvasFrame::generate_7()//没有弹簧和履带
{
	int i;
    if(ge!=0)
	{
	switch(rand()%10)
	{
	case 0:
	case 1:
	case 2:
    case 3:
    case 4:
	case 5:
    case 6:
		for(i=0;i<10;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
		}
		break;
	case 7:
		for(i=0;i<5;i++)
		{
			if(!S4[i].exist)
			{
				S4[i].generate();
			    break;
			}
			
		}
		break;
	case 8:
		for(i=0;i<5;i++)
		{
			if(!S2[i].exist)
			{
				S2[i].generate();
			    break;
			}
			
		}
		break;
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S2[i].exist)
			{
				S2[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}


void canvasFrame::generate_8()//没有翻滚石弹簧和履带
{
	int i;
    if(ge!=0)
	{
	switch(rand()%10)
	{
	case 0:
	case 1:
	case 2:
    case 3:
    case 4:
	case 5:
    case 6:
	case 7:
		for(i=0;i<10;i++)
		{
			if(!S1[i].exist)
			{
				S1[i].generate();
			    break;
			}
		}
		break;
	case 8:
	case 9:
		for(i=0;i<5;i++)
		{
			if(!S4[i].exist)
			{
				S4[i].generate();
			    break;
			}
			
		}
		break;
	}
	}
	ge=1;
}







void canvasFrame::pastesto()
{
	int i;
	for(i=0;i<10;i++)
		if(S1[i].exist)
			S1[i].paste();
		for(i=0;i<5;i++)
			if(S2[i].exist)
				if((i==person1.stonum&&person1.onstone&&
					person1.on_type==2||(S2[i].d!=0&&S2[i].d!=9))||
					(i==person2.stonum&&person2.onstone&&person2.on_type==2||
					(S2[i].d!=0&&S2[i].d!=9)))
					//如果人在石头2
					//上并且石头编号与判断所得编号相同
					//并且翻滚石还没完成一次翻滚
				S2[i].paste_1();
				else 
				S2[i].paste_2();
			for(i=0;i<5;i++)
				if(S3[i].exist)
					if((i==person1.stonum&&person1.onstone&&person1.on_type==3)||
						(i==person2.stonum&&person2.onstone&&person2.on_type==3))
						//如果人在石头3上并且石头编号与此石头编号相同
					S3[i].paste_1();
					else 
					S3[i].paste_2();
				for(i=0;i<5;i++)
					if(S4[i].exist)
						S4[i].paste();
					for(i=0;i<5;i++)
						if(S5[i].exist)
							S5[i].paste();
						for(i=0;i<5;i++)
							if(S6[i].exist)
								S6[i].paste();
}

void canvasFrame::reset_sto()
{
	int i;
	for(i=0;i<10;i++)
		S1[i].exist=false;
	for(i=0;i<5;i++)
	{
		S2[i].exist=false;
		S2[i].d=9;
	}
	for(i=0;i<5;i++)
		S3[i].exist=false;
	for(i=0;i<5;i++)
		S4[i].exist=false;
	for(i=0;i<5;i++)
		S5[i].exist=false;
	for(i=0;i<5;i++)
		S6[i].exist=false;
}


void canvasFrame::judgeperson()//判断两个人间相对关系
{
	person1.onperson=person1.onright=person1.onleft=person2.onperson=person2.onright=person2.onleft=false;
	if(person1.y+31>person2.y&&person1.y+31<person2.y+3)
		person1.onperson=true;
	if(person2.y+31>person1.y&&person2.y+31<person1.y+3)
		person2.onperson=true;
	if(person1.x+31>person2.x&&person1.x+31<person2.x+3)
		person1.onleft=true;
	if(person1.x<person2.x+31&&person1.x>person2.x+31-3)
		person1.onright=true;
    if(person2.x+31>person1.x&&person2.x+31<person1.x+3)
		person2.onleft=true;
	if(person2.x<person1.x+31&&person2.x>person1.x+31-3)
		person2.onright=true;
}


void PERSON::judge_onstone()
{
	onstone=false;//每次都重新计算
	on_type=0;
	stonum=-1;
	for(int k=1;k<=6;k++)
	{
		   for(int i=0;i<10;i++)//遍历存在的石头根据坐标判断
			   //是否在石头上
		       if(S1[i].exist)//如果石头存在
			     if(x+31>=S1[i].x && y+31==S1[i].y&&
				x<=S1[i].x+95)//并且坐标符合要求
			{
				onstone=true;
				on_type=1;//石头类型置为1
				//y=S1[i].y;
				break;
			}
			if(on_type!=0)
			break;
			for(i=0;i<5;i++)
				if(S2[i].exist)
					 if(x+31>=S2[i].x &&y+31==S2[i].y  &&
				x<=S2[i].x+95)
			{
				onstone=true;
				on_type=2;
				stonum=i;
				break;
			}
			if(on_type!=0)
			break;
			for(i=0;i<5;i++)
				if(S3[i].exist)
				 if(x+31>=S3[i].x && y+31==S3[i].y &&
				x<=S3[i].x+95)
			{
				onstone=true;
				on_type=3;
				stonum=i;
				break;
			}
			if(on_type!=0)break;
			for(i=0;i<5;i++)
				if(S4[i].exist)
					 if(x+31>=S4[i].x && y+31==S4[i].y &&
				x<=S4[i].x+95)
					{
						
						onstone=true;
						on_type=4;
						break;
					}
			if(on_type!=0)break;
			for(i=0;i<5;i++)
				if(S5[i].exist)
					 if(x+31>=S5[i].x && y+31==S5[i].y&&
				x<=S5[i].x+95)
					{
				         onstone=true;
				         on_type=5;
				         break;
					}
				if(on_type!=0)break;
			for(i=0;i<5;i++)
				if(S6[i].exist)
					 if(x+31>=S6[i].x && y+31==S6[i].y &&
				x<=S6[i].x+95)
				{
				      onstone=true;
				      on_type=6;
				      break;
				}
			if(on_type!=0)break;
	}
}

 
bool PERSON::should_onstone()
{
	land_line=500;
	int i;
	for(i=0;i<10;i++)
		if(S1[i].exist&&x+31>S1[i].x&&x<S1[i].x+95&&y+31<S1[i].y&&S1[i].y<land_line)
			land_line=S1[i].y;
	for(i=0;i<5;i++)
		if(S2[i].exist&&x+31>S2[i].x&&x<S2[i].x+95&&y+31<S2[i].y&&S2[i].y<land_line)
			land_line=S2[i].y;
	for(i=0;i<5;i++)
		if(S3[i].exist&&x+31>S3[i].x&&x<S3[i].x+95&&y+31<S3[i].y&&S3[i].y<land_line)
			land_line=S3[i].y;
	for(i=0;i<5;i++)
		if(S4[i].exist&&x+31>S4[i].x&&x<S4[i].x+95&&y+31<S4[i].y&&S4[i].y<land_line)
			land_line=S4[i].y;
	for(i=0;i<5;i++)
		if(S5[i].exist&&x+31>S5[i].x&&x<S5[i].x+95&&y+31<S5[i].y&&S5[i].y<land_line)
			land_line=S5[i].y;
	for(i=0;i<5;i++)
		if(S6[i].exist&&x+31>S6[i].x&&x<S6[i].x+95&&y+31<S6[i].y&&S6[i].y<land_line)
			land_line=S6[i].y;
	if(land_line!=500)
		return true;
	else return false;
}


void PERSON1::paste()
{
	x+=zhuangtai1;
	x-=zhuangtai2;
	if(so4||onleft)
		if(x+31>person2.x)
			person2.x+=(x+31-person2.x);
    if(so3||onright)
		if(x<person2.x+31)
			person2.x-=(person2.x+31-x);
    y-=zhuangtai3;
	if(x<16)//有没有超出边界
		x=16;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -