All pastes #40890 Raw Edit

milk2

public text v1 · immutable
#40890 ·published 2006-02-09 19:56 UTC
rendered paste body
public class YatzyPlayer {
	private Dice[] c;
	private boolean[] dN;
	
	public YatzyPlayer(){
		c = new Dice[5];
		for(int i = 0; i<5; i++){
			c[i] = new Dice();
		}
	}
	
	public void roll(boolean[] diceNo){
		dN = diceNo;
		for(int i = 0; i<5; i++){
			if(diceNo[i])
				c[i].rollDice();
		}
	}
	public int[] evaluate(){
		int check = 0;
		int[] summa={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
		for(int i = 0; i<5; i++){
			if(dN[i])
				summa[c[i].getDots() -1] += c[i].getDots();
		}
		for(int i = 0;i<6; i++){		//par
			if((summa[i]/(i+1)) == 2){
				summa[6] = (summa[i]);
			}
		}
		for(int i = 0; i<6; i++){		//2-par
		if((summa[i]/(i+1)) == 2 && summa[7] == 0)
			if(check != 0)
				summa[7] = check + summa[i];
			else
				check = summa[i];
		}
		check=0;
		
                    for(int i = 0; i<6; i++){	//triss (+par)
			if(summa[i]/(i+1) >= 3){
				summa[8] = (summa[i]);
			}
			if(summa[8] != 0 && summa[8]*(2/3) > summa[6]){
----> varför får inte låda 6 värdet?	summa[6] = summa[8]*(2/3);
			}
		}
		
		for(int i = 0; i<6; i++){	//fyrtal (samt ett par och 2par)
			if(summa[i]/(i+1) >= 4)
				summa[9] = summa[i];
		}
		if(summa[9] != 0 && summa[9]/2 > summa[6]){
			summa[6] = summa[9]/2;
			summa[8] = summa[9]*(3/4);
		}
		if(summa[9] != 0 && summa[9]>summa[7])
			summa[7] = summa[9];
		
		for(int i = 0; i<5; i++){		//liten stege
			if(summa[i]/(i+1) == 1)
				check += summa[i];
			if(check == 15)
				summa[11] = 15;
		}
		check = 0;
		for(int i = 1; i<6; i++){		//stor stege
			if(summa[i]/(i+1) == 20)
				check += summa[i];
			if(check == 20)
				summa[12] = 20;
		}
		check = 0;
		if(summa[6] > 0 && summa[8] > 0)
			summa[12] = summa[6]+summa[8];
		
		for(int i = 0; i<6; i++){
			summa[13] += summa[i];
		}
		for(int i = 0; i<6; i++){
			if(summa[i]/(i+1) == 5)
				summa[14]= 5;
		}
		if(summa[14] != 0 && summa[14]*(2/5) > summa[6])
			summa[6] = summa[14]*(2/5);
		if(summa[14] != 0 && summa[14]*(4/5) > summa[7])
			summa[7] = summa[14]*(2/5);
		if(summa[14] != 0 && summa[14]*(3/5) > summa[8])
			summa[14] = summa[14]*(3/5);
		if(summa[14] != 0 && summa[14]*(4/5) > summa[9])
			summa[9] = summa[14]*(4/5);
		
		return summa;
	}
	
	
}