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

2024/4/30

Pls help me I don't know what is wrong with my code.

Need_Help Need_Help

2024/4/30

#
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Brick here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Brick extends World
{
        SimpleTimer time = new SimpleTimer(); 
        Counter con = new Counter();
        private int spawnTimer;
    /**
         * Constructor for objects of class Brick.
         * 
    */
    public Brick() //call for act method
    {    
        super(600, 400, 1); // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        addObject(new AttackZombie(),100,100); // Add Zombie at 100, 100
        addObject(new AttackZombie(),300,300);
        addObject(new AttackZombie(),400,400);
        addObject(new AttackZombie(),200,300);
        addObject(new Player(),200,200); // Add Player at 200,200
        addObject(con, 50,50); // Add Counter and Timer at 50,50
        time.mark();
        
    }

    public void act() //call for act method
        {
            con.setValue(time.millisElapsed() / 1000); // add 1 second/ 1000 millisecond to timer
            if(time.millisElapsed() >= 90000){
                Greenfoot.setWorld( new Win());
            }
        } 
     
    private void checkForSpawning() // call from act method
    {
        spawnTimer = (spawnTimer+1)%600; // repeat every 10 seconds (about)
        if (spawnTimer == 0) // at each timer reset
        {
            addObject(new AttackZombie(), 100, 100);
            addObject(new AttackZombie(), 200, 200);
        }
    }
}





    import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Laser here.
* 
* @author (your name) 
* @version (a version number or a date)
*/
public class Lazer extends Actor
{
    /**
     * this code checks if the laser is touching the alien
     */
    public void checkHit(){
        if(isTouching(AttackZombie.class)){
            getWorld().removeObject((getOneIntersectingObject(AttackZombie.class)));
        }
    }
    
    public void addedToWorld(Brick world){
          setRotation(getWorld().getObjects(Player.class).get(0).checkRotation());
    }
     
    public void act()
    /**
     * this code runs all of the laser methods
     */
    {
        move(5);
        MyWorld mw = (MyWorld)getWorld();
        if(isAtEdge()){
            getWorld().removeObject(this);
        } else if(isTouching(AttackZombie.class)){
            getWorld().removeObject(getOneIntersectingObject(AttackZombie.class));
            ((MyWorld) getWorld()).newAttackZombie();
            ((MyWorld)getWorld()).getCounter().addScore();
        }
    }
}




import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class AttackZombie here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class AttackZombie extends Actor
{
    int rightSideOfScreen;
    int bottomOfScreen;
    public void addedToWorld(World Brick)
    {
        rightSideOfScreen = Brick.getWidth() - 1;
        bottomOfScreen = Brick.getHeight() - 1;
    }
    
    public void act()
    {
    move(2);
    if(Greenfoot.getRandomNumber(20)==1)
    {
        setRotation(Greenfoot.getRandomNumber (360));
    }
    
    int x = getX();
    int y = getY();
    
    if(x<=0 || y<=0 || x >= rightSideOfScreen || y >=bottomOfScreen)
    {
        turn(180);
    }

    }
    }




import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
 * Write a description of class Player here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Player extends Actor
{
    SimpleTimer Timer = new SimpleTimer(); 
    /**
     * Act - do whatever the Player wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act()
    {
        checkkeys();

        if (isTouching(AttackZombie.class)) {
        getWorld().removeObject(this);
        //Greenfoot.setWorld(new EndScreen());
        }
        if(Timer.millisElapsed() > 500 && Greenfoot.isKeyDown("space"))
        {
            Timer.mark();
            ((Brick)getWorld()).addObject(new Laser(), this.getX(), this.getY() );
        }
    }
    
    public void checkkeys()
    {
        if ( Greenfoot.isKeyDown("w"))
        {
            move(3);
        }
        if ( Greenfoot.isKeyDown("a"))
        {
            turn(-3);
        }
       if ( Greenfoot.isKeyDown("s"))
        {
            move(-3);
        }
        if ( Greenfoot.isKeyDown("d"))
        {
            turn(3);
        }
    }
}






import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * A Counter class that allows you to display a numerical value on screen.
 * 
 * The Counter is an actor, so you will need to create it, and then add it to
 * the world in Greenfoot.  If you keep a reference to the Counter then you
 * can adjust its value.  Here's an example of a world class that
 * displays a counter with the number of act cycles that have occurred:
 * 
 * <pre>
 * class CountingWorld
 * {
 *     private Counter actCounter;
 *     
 *     public CountingWorld()
 *     {
 *         super(600, 400, 1);
 *         actCounter = new Counter("Act Cycles: ");
 *         addObject(actCounter, 100, 100);
 *     }
 *     
 *     public void act()
 *     {
 *         actCounter.setValue(actCounter.getValue() + 1);
 *     }
 * }
 * </pre>
 * 
 * @author Neil Brown and Michael Kölling 
 * @version 1.0
 */
public class Counter1 extends Actor
{
    private static final Color transparent = new Color(0,0,0,0);
    private GreenfootImage background;
    private int value;
    private int target;
    private String prefix;
    
    public Counter1()
    {
        this(new String());
    }

    /**
     * Create a new counter, initialised to 0.
     */
    public Counter1(String prefix)
    {
        background = getImage();  // get image from class
        value = 0;
        target = 0;
        this.prefix = prefix;
        updateImage();
    }
    
    /**
     * Animate the display to count up (or down) to the current target value.
     */
    public void act() 
    {
        if (value < target) {
            value++;
            updateImage();
        }
        else if (value > target) {
            value--;
            updateImage();
        }
    }

    /**
     * Add a new score to the current counter value.  This will animate
     * the counter over consecutive frames until it reaches the new value.
     */
    public void add(int score)
    {
        target += score;
    }

    /**
     * Return the current counter value.
     */
    public int getValue()
    {
        return target;
    }

    /**
     * Set a new counter value.  This will not animate the counter.
     */
    public void setValue(int newValue)
    {
        target = newValue;
        value = newValue;
        updateImage();
    }
    
    /**
     * Sets a text prefix that should be displayed before
     * the counter value (e.g. "Score: ").
     */
    public void setPrefix(String prefix)
    {
        this.prefix = prefix;
        updateImage();
    }

    /**
     * Update the image on screen to show the current value.
     */
    private void updateImage()
    {
        GreenfootImage image = new GreenfootImage(background);
        GreenfootImage text = new GreenfootImage(prefix + value, 22, Color.BLACK, transparent);
        
        if (text.getWidth() > image.getWidth() - 20)
        {
            image.scale(text.getWidth() + 20, image.getHeight());
        }
        
        image.drawImage(text, (image.getWidth()-text.getWidth())/2, 
                        (image.getHeight()-text.getHeight())/2);
        setImage(image);
    }
}




import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * A Counter class that allows you to display a numerical value on screen.
 * 
 * The Counter is an actor, so you will need to create it, and then add it to
 * the world in Greenfoot.  If you keep a reference to the Counter then you
 * can adjust its value.  Here's an example of a world class that
 * displays a counter with the number of act cycles that have occurred:
 * 
 * <pre>
 * class CountingWorld
 * {
 *     private Counter actCounter;
 *     
 *     public CountingWorld()
 *     {
 *         super(600, 400, 1);
 *         actCounter = new Counter("Act Cycles: ");
 *         addObject(actCounter, 100, 100);
 *     }
 *     
 *     public void act()
 *     {
 *         actCounter.setValue(actCounter.getValue() + 1);
 *     }
 * }
 * </pre>
 * 
 * @author Neil Brown and Michael Kölling 
 * @version 1.0
 */
public class Counter extends Actor
{
    private static final Color transparent = new Color(0,0,0,0);
    private GreenfootImage background;
    private int value;
    private int target;
    private String prefix;
    
    public Counter()
    {
        this(new String());
    }

    /**
     * Create a new counter, initialised to 0.
     */
    public Counter(String prefix)
    {
        background = getImage();  // get image from class
        value = 0;
        target = 0;
        this.prefix = prefix;
        updateImage();
    }
    
    /**
     * Animate the display to count up (or down) to the current target value.
     */
    public void act() 
    {
        if (value < target) {
            value++;
            updateImage();
        }
        else if (value > target) {
            value--;
            updateImage();
        }
    }

    /**
     * Add a new score to the current counter value.  This will animate
     * the counter over consecutive frames until it reaches the new value.
     */
    public void add(int score)
    {
        target += score;
    }

    /**
     * Return the current counter value.
     */
    public int getValue()
    {
        return target;
    }

    /**
     * Set a new counter value.  This will not animate the counter.
     */
    public void setValue(int newValue)
    {
        target = newValue;
        value = newValue;
        updateImage();
    }
    
    /**
     * Sets a text prefix that should be displayed before
     * the counter value (e.g. "Score: ").
     */
    public void setPrefix(String prefix)
    {
        this.prefix = prefix;
        updateImage();
    }

    /**
     * Update the image on screen to show the current value.
     */
    private void updateImage()
    {
        GreenfootImage image = new GreenfootImage(background);
        GreenfootImage text = new GreenfootImage(prefix + value, 22, Color.BLACK, transparent);
        
        if (text.getWidth() > image.getWidth() - 20)
        {
            image.scale(text.getWidth() + 20, image.getHeight());
        }
        
        image.drawImage(text, (image.getWidth()-text.getWidth())/2, 
                        (image.getHeight()-text.getHeight())/2);
        setImage(image);
    }
}



import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class TimeChecker here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class TimeChecker extends Actor
{
    long initialTime;
    public TimeChecker() {
        initialTime = System.currentTimeMillis();
    }
     
    public void act() {
        if(System.currentTimeMillis() > initialTime + 200000) 
        {
            Greenfoot.setWorld(new Win());
        }
    }
}





pls and thank you
danpost danpost

2024/5/2

#
Need_Help wrote...
Pls help me I don't know what is wrong with my code. << Code Omitted >> pls and thank you
How is it not working as you think it should?
You need to login to post a reply.