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

2018/3/28

Minute Timer

1
2
3
Lavenger Lavenger

2018/3/31

#
danpost wrote...
Lavenger wrote...
line 52 should be before which line?
Line 47.
i have done so but the timer seems to still not reset... Here's the full code:
import greenfoot.*;
public class MyWorld extends World
{
    // fields usually (by convention) go first
    GifImage gifImg = new GifImage("Umaru.gif");
    private Actor TimeDisplay = new SimpleActor();
    private Actor Cooldown = new SimpleActor();
    private int frames;
    private int Cframes = (3+Greenfoot.getRandomNumber(4))*3300;
    public float AYen; //precise
    public int DYen; //rounded
    public Yen YenDisplay = new Yen();
    public int getHeight = 552 ;
    public int getWidth = 1200 ;
    // class constructors usually (by convention) go next
        public void gifAnimation()
    {
        for (Object obj : gifImg.getImages()) ((GreenfootImage)obj).scale(getWidth(), getHeight());
        setBackground(gifImg.getCurrentImage());
    }
    public MyWorld()
    {
        //For building the world window size
        super(1400, 675, 1);
        
        //For updating the Yen Display
        adjustYen(0); // to initialize image
        prepare();
        addObject(YenDisplay, 1265, 50); // wherever
        
        //For updating the time display
        updateTimeDisplay();
        addObject(TimeDisplay, 1265, 20);
        
        //For triggering the minigame
        updateCoolDownDisplay();
        addObject(Cooldown, 1265, 35);
    }     
    // methods (by convention) go last
    
    //For GIF background
    public void act()
    {
        gifAnimation();
        if ((++frames)%55 == 0) updateTimeDisplay();
        if ((--Cframes)%55 == 0) updateCoolDownDisplay();
        if (Cframes == 0)
        {
            Minigame();
            Cframes += (3+Greenfoot.getRandomNumber(5)); //chooses a cooldown time between 3-7 minutes randomly     
        }
    }
    
    //For Yen Display stuff
    public int getAccumulatedYen()
    {
        return DYen;
    }
    public void adjustYen(float adjustment)
    {
        AYen += adjustment;
        DYen = (int) AYen;
        YenDisplay.setImage(new GreenfootImage("Yen: "+DYen+"¥", 20, Color.BLACK, new Color(0, 0, 0, 0)));
    }

    //For Time Display stuff
    private void updateTimeDisplay()
    {
        int Time = frames/55; // total seconds
        int TotalMinutes = Time/60; // total minutes
        String hours = "0"+(TotalMinutes/60); // string total hours
        String minutes = "0"+(TotalMinutes%60); // string remaining minutes
        String seconds = "0"+(Time%60); // string remaining seconds
        String hrs = hours.substring(hours.length()-2); // hour output string
        String mins = minutes.substring(minutes.length()-2); // minutes output string
        String secs = seconds.substring(seconds.length()-2); // seconds output string
        String TimeFormat = "Time: "+hrs+"hrs "+mins+"mins "+secs+"secs"; //Preview: Time: 12345hrs 12mins 12secs
        TimeDisplay.setImage(new GreenfootImage(TimeFormat, 20, Color.BLACK, new Color(0, 0, 0, 0)));
        
    }
    
    //For Choosing the Minigame and timing the appearance of the Minigame
    private void updateCoolDownDisplay()
    {
        int Time = Cframes/55;
        String minutes = "0"+(Time/60); // string remaining minutes
        String seconds = "0"+(Time%60); // string remaining seconds
        String mins = minutes.substring(minutes.length()-2); // minutes output string
        String secs = seconds.substring(seconds.length()-2); // seconds output string
        String TimeFormat = "Minigame countdown: "+mins+"mins "+secs+"secs"; //Preview: Time: 12345hrs 12mins 12secs
        Cooldown.setImage(new GreenfootImage(TimeFormat, 20, Color.BLACK, new Color(0, 0, 0, 0)));
    }
    private void Minigame()
    {
        switch(Greenfoot.getRandomNumber(5))
        {
            case 1:if (!getObjects(Taihei.class).isEmpty())
                       {Minigame1();} //Chases Kirie because Umaru placed Taihei's money in Kirie's pocket in secret and plans to get it later on
                   break;

            case 2:if (!getObjects(Sylphynford.class).isEmpty())
                       {Minigame2();} //Plays a 2 player minigame to beat Sylphynord's new score as a challenge
                   break;

            case 3:if (!getObjects(Ebina.class).isEmpty())
                       {Minigame3();} //Introduces Umaru to a fashion modeling job
                   break;

            case 4:if (!getObjects(Kirie.class).isEmpty())
                       {Minigame4();} //Animal crossing minigame
                   break;

            case 5:if (!getObjects(Taihei.class).isEmpty())
                       {Minigame5();} //
                   break;
        }
    }
        private void Minigame1()
    {
        //to be implemented
    }
        private void Minigame2()
    {
        //to be implemented
    }
        private void Minigame3()
    {
        //to be implemented
    }
        private void Minigame4()
    {
        //to be implemented
    }
        private void Minigame5()
    {
        //to be implemented
    }
    
    //For placing actors into the world
    private void prepare()
    {
        addObject(new Umaru(), 700, 338);
    }
}
danpost danpost

2018/3/31

#
In line 9, 4 should be 5 and in line 50, the right side needs multiplied by 3300.
Lavenger Lavenger

2018/3/31

#
danpost wrote...
In line 9, 4 should be 5 and in line 50, the right side needs multiplied by 3300.
thankns ^^ its working now, guess i need to check even more carefully hahaha ^^"
You need to login to post a reply.
1
2
3