I have 4 random variables...
int img1 = (int) Math.round((Math.random() * images.length)-1);
int img2 = (int) Math.round((Math.random() * images.length)-1);
int img3 = (int) Math.round((Math.random() * images.length)-1);
int img4 = (int) Math.round((Math.random() * images.length)-1);
I need to make sure that they never equal each other even though they're random. I am making an app where there is 4 imageviews that show a random shape (Saved in drawable folder). Below is an image of my app so you get a better understanding of what I mean...
The 4 shapes in the bottom can never be the same however I need them to show randomly when the app is running. This is my code at the moment...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
shape1 = (ImageView) findViewById(R.id.shape1);
shape2 = (ImageView) findViewById(R.id.shape2);
shape3 = (ImageView) findViewById(R.id.shape3);
shape4 = (ImageView) findViewById(R.id.shape4);
guessShape = (ImageView) findViewById(R.id.guessShape);
shapes[0] = shape1;
shapes[1] = shape2;
shapes[2] = shape3;
shapes[3] = shape4;
//store all the shapes in an array
int[] images = new int[] {R.drawable.img_0, R.drawable.img_1, R.drawable.img_2, R.drawable.img_3, R.drawable.img_4,
R.drawable.img_5, R.drawable.img_6, R.drawable.img_7, R.drawable.img_8, R.drawable.img_9, R.drawable.img_10,
R.drawable.img_11, R.drawable.img_12, R.drawable.img_13, R.drawable.img_14, R.drawable.img_15, R.drawable.img_16,
R.drawable.img_17};
int[] outlines = new int[] {R.drawable.outline_0, R.drawable.outline_1, R.drawable.outline_2,
R.drawable.outline_3, R.drawable.outline_4, R.drawable.outline_5, R.drawable.outline_6,
R.drawable.outline_7, R.drawable.outline_8, R.drawable.outline_9, R.drawable.outline_10,
R.drawable.outline_11, R.drawable.outline_12, R.drawable.outline_13, R.drawable.outline_14,
R.drawable.outline_15, R.drawable.outline_16,R.drawable.outline_17};
//generate random number between 0 and image.length
int img1 = (int) Math.round((Math.random() * images.length)-1);
int img2 = (int) Math.round((Math.random() * images.length)-1);
int img3 = (int) Math.round((Math.random() * images.length)-1);
int img4 = (int) Math.round((Math.random() * images.length)-1);
System.out.println(img1);
System.out.println(img2);
System.out.println(img3);
System.out.println(img4);
int whichImg = (int) Math.round((Math.random() * 4));
System.out.println(whichImg);
if(whichImg == 1){
whichImg = img1;
} else if(whichImg == 2){
whichImg = img2;
} else if(whichImg == 3){
whichImg = img3;
} else {
whichImg = img4;
}
int outlineID = outlines[whichImg];
//conditions so that the 4 boxes don't have the same image
if(img1 == img2 && img1 !=0 || img1 == img3 && img1 != 0 || img1 == img4 && img1 != 0){ //if img1 and another img is the same
img1 = img1 - 1;
}
else if(img2 == img3 && img2 != 0 || img2 == img4 && img2 != 0){ //if img2 and another img is the same
img2 = img2 - 1;
}
else if(img3 == img4 && img3 !=0){ //if img3 and another image is that same
img3 = img3 - 1;
}
else if(img1==0 && img2==0 && img3 == 0 && img4 == 0){ //if all the images were 0
img1 = img1 + 10;
img2 = img2 + 5;
img3 = img3 + 7;
img4 = img4 + 14;
}
else if(img1==img2 && img2 == img3 && img1 !=0 && img1 != 17){ //if img1 and 2 others were the same
img1 = img1 - 1;
img3 = img3 + 1;
}
else if(img2==img3 && img3 == img4 && img2 != 0 && img2 != 17){ //if img2 and 2 others were the same
img2 = img2 - 1;
img4 = img4 + 1;
}
else if(img3 == img4 && img4 == img2 && img3 != 0 && img3 != 17){ //if img3 and 2 others were the same
img3 = img3 - 1;
img2 = img2 + 1;
}
else if(img1 == 17 && img2 == 17 && img3 == 17 && img4 == 17){
img1 = img1 - 1;
img2 = img2 - 2;
img3 = img3 -3;
}
else {
System.out.println("Finished comparing 4 variables");//this doesnt work..fix!
}
//set the image
guessShape.setBackgroundResource(outlineID);
shape1.setBackgroundResource(images[img1]);
shape2.setBackgroundResource(images[img2]);
shape3.setBackgroundResource(images[img3]);
shape4.setBackgroundResource(images[img4]);
There must be an easier way of making sure they never equal each other rather than so many if statements. Please help me !