コード例 #1
0
ファイル: jen.cpp プロジェクト: jenniferballing/CS1400Final
void jen::Place(int minR,int maxR,int minC,int maxC, SitRep sitrep){
	
	sideOfBoard loca = findSide(minR, maxR, minC, maxC);
	dir=up;
	Strat(minR, maxR, minC, maxC, sitrep);
	if(loca == bup)
	{
		dir=dn;
	}
	else if(loca == bdn)
	{
		dir=up;
	}
	else if(loca == brt)
	{
		dir=lt;
	}
	else if(loca == blt)
	{
		dir=rt;
	}
	return;
	bool done=false;
	int tr,tc;
	Dir td;
	while(!done){
		tr=minR+rand()%(maxR-minR);	
		tc=minC+rand()%(maxC-minC);	
		if(sitrep.thing[tr][tc].what==space)done=true;
	}
	int rdist=ROWS/2-tr;
	int cdist=COLS/2-tc;
	if(abs(rdist)<abs(cdist)){
		if(cdist>0)td=rt;
		else td=lt;
	}else{
		if(rdist>0)td=up;
		else td=dn;
	}
	r=tr;
	c=tc;
	dir=td;
	}
コード例 #2
0
int main(int argc , char *argv[])
{	
	long double error = .00000000001;
	long double error1 = 1.0;
	long double error2 = 0.0001;
	int debug = 0;
	char *NOT = "not a triangle\n";
	if(argc != 7)
	{
		printf(NOT);
		return 0;	
	}

	long double x1 = readIn(1 , argv);
	long double y1 = readIn(2 , argv);
	long double x2 = readIn(3 , argv);
	long double y2 = readIn(4 , argv);
	long double x3 = readIn(5 , argv);
	long double y3 = readIn(6 , argv);

	long double s1 = findSide(x1 , y1 , x2 , y2 , debug);
	long double s2 = findSide(x2 , y2 , x3 , y3 , debug);
	long double s3 = findSide(x3 , y3 , x1 , y1 , debug);

	double angleS1 = acos(((s2 * s2) + (s3 * s3) - (s1 * s1))/(2 * s2 * s3));
    	double angleS2 = acos(((s3 * s3) + (s1 * s1) - (s2 * s2))/(2 * s3 * s1));    
    	double angleS3 = M_PI - angleS1 - angleS2;
	
	if(debug)
	{
		printf("angles = %f , %f , %f, %f\n" , angleS1 , angleS2 , angleS3 , (M_PI/2));
	}
		
	char *toPrint1 = "";
	char *toPrint2 = "";
	
	if(debug)
        {
                printf("side lengths: %Lf, %Lf , %Lf\n", s1 , s2 , s3);
        }	

	if(s1 == 0 || s2 == 0 || s3 == 0)
	{
		printf(NOT);
		return 0;
	}
	else if(eq(s1 + s2 , s3, error) || eq(s1 + s3 , s2 , error) || eq(s2 + s3 , s1 , error))
	{
		printf(NOT);
		return 0;
	}
	else if(s1 == s2 && s2 == s3)
	{
		toPrint1 = "equilateral";
	}
	else if(eq(s1 , s2 , error) || eq(s2 , s3 , error)|| eq(s3 , s1 , error))
	{
		toPrint1 = "isosceles";
	}
	else
	{
		toPrint1 = "scalene";
	}

	if(eq((M_PI / 2) , angleS1 , error) || eq((M_PI / 2) , angleS2 , error) || eq((M_PI / 2) , angleS3 , error))
	{
		toPrint2 = "right";
	}
	else if((angleS1 < ((M_PI / 2) + error2)) && (angleS2 < ((M_PI / 2) + error2)) && (angleS3 < ((M_PI / 2) + error2)))
	{
		toPrint2 = "acute";
	}
	else if((angleS1 > (M_PI / 2)) || (angleS2 > (M_PI / 2)) || (angleS3 > (M_PI / 2)))
	{
		toPrint2 = "obtuse";
	}
	
	printf("%s %s\n" , toPrint1 , toPrint2);
	return 0;
}
コード例 #3
0
ファイル: jen.cpp プロジェクト: jenniferballing/CS1400Final
void jen::Strat(int minR,int maxR,int minC,int maxC, SitRep sitrep)
{
	
	dir = lt;
	if(rank == crown)
	{	
		r = ((maxR -minR)/2 + minR);
		c = ((maxC -minC)/2 + minC);
		return;
	}

	if(rank == knight)
	{
		if(sitrep.thing[(((maxR -minR)/2 + minR))+1][((maxC -minC)/2 + minC)].rank!=knight)
		{
			r = (((maxR -minR)/2 + minR))+1;
			c = ((maxC -minC)/2 + minC);
			return;
		}		
		else if(sitrep.thing[(((maxR -minR)/2 + minR))-1][((maxC -minC)/2 + minC)].rank!=knight)
		{
			r = (((maxR -minR)/2 + minR))-1;
			c = ((maxC -minC)/2 + minC);
			return;
		}
		else if(sitrep.thing[(((maxR -minR)/2 + minR))][(((maxC -minC)/2 + minC))+1].rank!=knight)
		{
			r = (((maxR -minR)/2 + minR));
			c = (((maxC -minC)/2 + minC))+1;
			return;
		}
		else if(sitrep.thing[(((maxR -minR)/2 + minR))][(((maxC -minC)/2 + minC))-1].rank!=knight)
		{
			r = (((maxR -minR)/2 + minR));
			c = (((maxC -minC)/2 + minC))-1;
			return;
		}
		else
		{
			setRand(minR, maxR, minC, maxC, sitrep);
			return;
		}
			

	}

	else if(rank == archer)
	{
		if(sitrep.thing[(((maxR -minR)/2 + minR))+1][(((maxC -minC)/2 + minC))+1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))+1;
			c = (((maxC -minC)/2 + minC))+1;
			return;
		}		
		else if(sitrep.thing[(((maxR -minR)/2 + minR))+1][(((maxC -minC)/2 + minC))-1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))+1;
			c = (((maxC -minC)/2 + minC))-1;
			return;
		}		
		else if(sitrep.thing[(((maxR -minR)/2 + minR))-1][(((maxC -minC)/2 + minC))-1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))-1;
			c = (((maxC -minC)/2 + minC))-1;
			return;
		}
		else if(sitrep.thing[(((maxR -minR)/2 + minR))-1][(((maxC -minC)/2 + minC))+1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))-1;
			c = (((maxC -minC)/2 + minC))+1;
			return;
		}		
		if(sitrep.thing[(((maxR -minR)/2 + minR))+2][(((maxC -minC)/2 + minC))+1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))+2;
			c = (((maxC -minC)/2 + minC))+1;
			return;
		}		
		else if(sitrep.thing[(((maxR -minR)/2 + minR))+2][(((maxC -minC)/2 + minC))-1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))+2;
			c = (((maxC -minC)/2 + minC))-1;
			return;
		}		
		else if(sitrep.thing[(((maxR -minR)/2 + minR))-2][(((maxC -minC)/2 + minC))-1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))-2;
			c = (((maxC -minC)/2 + minC))-1;
			return;
		}
		else if(sitrep.thing[(((maxR -minR)/2 + minR))-2][(((maxC -minC)/2 + minC))-1].rank!=archer)
		{
			r = (((maxR -minR)/2 + minR))-2;
			c = (((maxC -minC)/2 + minC))+1;
			return;
		}
		else
		{
			setRand(minR, maxR, minC, maxC, sitrep);
			return;
		}
	}
	else if (rank==infantry)
	{
		sideOfBoard loca = findSide(minR, maxR, minC, maxC);
		if(loca==brt)
		{
			int i, j; 
			for(j=minC; j<maxC;j++)
			{
				for(i=minR; i<maxR; i++)
				{
					if(sitrep.thing[i][j].what==space)
					{
						r=i;
						c=j;
						return;
					}
				}
			}
		}
		if(loca==blt)
		{
			int i, j; 
			
			for(j=maxC; j>minC;j--)
			{
				for(i=maxR; i>minR; i--)
				{
					if(sitrep.thing[i][j].what==space)
					{
						r=i;
						c=j;
						return;
					}
				}
			}
		}
	}
}