This site requires JavaScript, please enable it in your browser!
Greenfoot back
ParkoPlays
ParkoPlays wrote ...

2016/12/5

Random image display

ParkoPlays ParkoPlays

2016/12/5

#
I have made a randomiser that works perfectly how I need it too, it will generate a random number up to 800, but I want to display an image depending on which number is returned. I have all the images (labelled 1.png, 2.png, 3.png, etc.) in the scenario folder. I've gotten 17 images set up, but it would take too long to code the rest manually.
if (clicked == 0)
        {
            if (Greenfoot.mouseClicked(this))
            {
                switch(Greenfoot.getRandomNumber(721))
                {
                    case 0: setImage("721.png"); break;
                    case 1: setImage("1.png"); break;
                    case 2: setImage("2.png"); break;
                    case 3: setImage("3.png"); break;
                    case 4: setImage("4.png"); break;
                    case 5: setImage("5.png"); break;
                    case 6: setImage("6.png"); break;
                    case 7: setImage("7.png"); break;
                    case 8: setImage("8.png"); break;
                    case 9: setImage("9.png"); break;
                    case 10: setImage("10.png"); break;
                    case 11: setImage("11.png"); break;
                    case 12: setImage("12.png"); break;
                    case 13: setImage("13.png"); break;
                    case 14: setImage("14.png"); break;
                    case 15: setImage("15.png"); break;
                    case 16: setImage("16.png"); break;
                    case 17: setImage("17.png"); break;

                }	
                clicked = 1;
            }
That all works perfectly, but is there anyway that I can use something like: "case x: setImage("x.png"); break;" Thankyou in advance!
Super_Hippo Super_Hippo

2016/12/5

#
Maybe this works for you.
int random = Greenfoot.getRandomNumber(721);
if (random < 18)
{
    if (random == 0) random = 721; //or 'setImage("721.png");' or rename it to "0.png" 
    setImage(random + ".png");
    //in case it is not working, maybe the next line
    //setImage("" + random + ".png");
}
danpost danpost

2016/12/5

#
How are you creating the 'png's for the numbers? that is, would it be just the number shown in some color with or without a background color? If so, you should just create them on the go (during program runtime). For example:
if (Greenfoot.mouseClicked(this))
{
    setImage(new GreenfootImage(""+Greenfoot.getRandomNumber(721), 48, null, null));
}
you can replace the null values with a java.awt.Color class constants or a new java.awt.Color object, if desired and change the font size as well.
ParkoPlays ParkoPlays

2016/12/5

#
I know I'm pretty bad at explaining things, but thanks for helping me so soon guys! I ended up finding a solution on someone elses post before this one got moderated. It works really well.
if (clicked == 0)
        {
            if (Greenfoot.mouseClicked(this))
            {
                int x = (Greenfoot.getRandomNumber(721));
                setImage(x + ".png");
                clicked = 1;
            }
        }
Thankyou very much!
danpost danpost

2016/12/6

#
ParkoPlays wrote...
I ended up finding a solution on someone elses post before this one got moderated. ,,, < Code Omitted >
The code shown in your last post can be simplified to:
if (clicked == 0 && Greenfoot.mouseClicked(this))
{
    setImage(Greenfoot.((1+getRandomNumber(721))+".png");
    clicked++;
}
There was one slight adjustment I made. You do not appear to have a "0.png" file, which would get a FileNotFoundException if it tried to open that one. The range of values here is (1 ... 721).
You need to login to post a reply.