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

2016/8/28

how to add a score counter?

NAMYA0303 NAMYA0303

2016/8/28

#
hey guys my game is finally ready and the last code i need is score counters my current code --
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
 
/**
 * Write a description of class rocket here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class rocket extends Actor
{
    /**
     * Act - do whatever the rocket wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act()
    {
        // Add your action code here.
         moveAndTurn();
        eat();
         
        if (isAtEdge())
       {
       Greenfoot.stop();
       World world = getWorld();
       world.addObject(new GameOver(), world.getWidth()/2, world.getHeight()/2);
       world.addObject(new Creator(), 696, 440);
       world.addObject(new Namya(), 695, 501);
       world.addObject(new Vgu(), 751, 572);
       MeteoritePopOut meteoritepopout = (MeteoritePopOut)myWorld;
       Counter counter = meteoritepopout.getCounter();
       counter.addScore();
       world.removeObject(this);
      }
    }    
  
     public void eat()
    {
        Actor meteorite;
        meteorite =getOneObjectAtOffset(0, 0, meteorite.class);
        if (meteorite != null)
        {
            World world;
            world = getWorld();
            world.removeObject(meteorite);
        }
    }
 
    
    public void moveAndTurn()
    {
        move(4);
         
         if(Greenfoot.isKeyDown("up"))
        {
        move(5);
        }
         if(Greenfoot.isKeyDown("down"))
        {
        move(-5);
        }
        if(Greenfoot.isKeyDown("left"))
        {
        turn(-3);
        }
         if(Greenfoot.isKeyDown("right"))
        {
           turn(3);
         
        }
         
    
     
     
}
NAMYA0303 NAMYA0303

2016/8/28

#
NAMYA0303 wrote...
the code starts from line-29 to line -31
danpost danpost

2016/8/28

#
We will need to see the code for the Counter class (which is the blueprint for a Counter object) and the code to your world class (which should create and add a Counter object into the world).
NAMYA0303 NAMYA0303

2016/8/28

#
sure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
 
/**
 * Write a description of class Counter here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Counter extends Actor
{
    int score = 0;
    /**
     * Act - do whatever the Counter wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act()
    {
        setImage(new GreenfootImage("Score : " + score, 24, Color.GREEN, Color.BLACK));
    }   
     
    public void addScore()
    {
        score++;
    }
}
danpost danpost

2016/8/28

#
danpost wrote...
We will need to see the code for the Counter class (which is the blueprint for a Counter object) and the code to your world class (which should create and add a Counter object into the world).
You have only shown one of the two mentioned here. As far as the Counter class, it is a waste of cpu time to recreate the image of the Score object every act cycle when the score only changes once in a while. Change 'act' to 'updateImage' and do the following:
1
2
3
4
5
6
7
8
// add after line 24 in the code given above
updateImage();
 
// add the following constructor to initialize the image
public Counter()
{
    updateImage();
}
You need to login to post a reply.