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

2017/11/30

How to make scrolling enemies?

Brantgarron Brantgarron

2017/11/30

#
I am trying to make my enemies in my game scroll....any help?
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class enemy here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Enemy extends Actor
{
   double ys, xs;
   int xSpeed = 3;
   int x_pos, y_pos;

    public void act() 
    {
        move();
        checkEdges();
         if(((doodleWorld) getWorld()).scroll==true)
        {
            scroll(((doodleWorld) getWorld()).scrollSpeed);
        }
        if(((doodleWorld) getWorld()).fall==true)
        {
            fall(((doodleWorld) getWorld()).scrollSpeed);
        }

        if(y_pos < 0)
        {
            getWorld().removeObject(this);
            return;
        }
        
        
    }    
    public void fall(int speed)
    {
        if(((doodleWorld) getWorld()).ended==false)
        {
            y_pos = y_pos + speed;
            setLocation(x_pos, y_pos);
        }
    }
    protected void addedToWorld(World world)
    {
        x_pos = getX();
        y_pos = getY();
    }
    public void scroll(int speed)
    {
        if(speed>0)
        {
            y_pos = y_pos + speed;
            
        }
    }
    public void fall()
    {
        ((doodleWorld) getWorld()).fall = true;
        ((doodleWorld) getWorld()).scrollSpeed = (int) -ys;
        
    }

    
    public void move()
    {
        move(xSpeed);
    }
    
    public void checkEdges()
    {
        if(getX() >= 260)
        {
            xSpeed = -3;
        }
        if(getX() <= 35)
        {
            xSpeed = 3;
        }
    }
}


Brantgarron Brantgarron

2017/11/30

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

/**
 * Write a description of class doodleWorld here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class doodleWorld  extends World
{
    boolean bStarted, started = false;
    private int enemySpawnTimeMax= 50*15, enemySpawnTimer=enemySpawnTimeMax;
    boolean once;
    int transparency = 0;
    int scrollSpeed;
    boolean scroll;
    boolean fall;
    boolean hitEnemy;
    boolean ended;
    int restart;
    //private int enemySpawnTimer;
    int height = 0;
    int doodleX;
    /**
     * Constructor for objects of class doodleWorld.
     * 
     */
    public doodleWorld()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(300,400, 1,false); 

        addObject(new ground(), 56, 317);
        addObject(new doodler(false), 56,200);
        setPaintOrder(scoreKeeper.class, doodler.class, ground.class, ammo.class);
        setBackground("title.png");
        getBackground().setTransparency(255);
        once = true;
        started = false;
        height = 0;
        fall = false;
        hitEnemy = false;
        ended = false;
    }

    public void act()
    {
        if(bStarted==false & Greenfoot.mouseMoved(this))
        {
            bStarted = true;
        }

        if(started==false & bStarted==true)
        {
            MouseInfo mouse = Greenfoot.getMouseInfo();

            if(Greenfoot.mouseClicked(this))
            {
                if(mouse.getX()>=45 & mouse.getX()<=148
                && mouse.getY()>=104 & mouse.getY()<=138)
                {
                    started = true;
                }
            }
        }
        if(started==true & once==true)
        {
            setBackground("paper.png");
            cleanup();
            once = false;
            setLevel(1);
        }
        if(fall)
        {
            end();
        
        }
        if(hitEnemy)
        {
            end();
        }
        if (--enemySpawnTimer == 0)
        {
            enemySpawnTimer = enemySpawnTimeMax;
            addObject(new Enemy(), Greenfoot.getRandomNumber(300), 50);
        }
        //runEnemySpawnTimer();
    }
    /*private void runEnemySpawnTimer()
    {
        enemySpawnTimer = (enemySpawnTimer+1)%500; // adjust '300' as desired
    if (enemySpawnTimer == 0) 
    spawnEnemy();
    }
 
    private void spawnEnemy()
    {
        addObject(new Enemy(), 200,50);
        
    }*/
    
    
    
    public void cleanup()
    {
        removeObjects(getObjects(doodler.class));
        removeObjects(getObjects(ground.class));
        removeObjects(getObjects(Enemy.class));
        
    }

    public void setLevel(int level)
    {
        switch(level)
        {
            case 1: gamePlay(); break;
        }
    }

    public void gamePlay()
    {
        addObject(new doodler(), getWidth()/2, 300);
        addObject(new ground(false), 28,391);
        addObject(new ground(false), 83,391);
        addObject(new ground(false), 83+55,391);
        addObject(new ground(false), 83+55+55,391);
        addObject(new ground(false), 83+55+55+55,391);
        addObject(new ground(false), 83+55+55+55+55,391);
        
        addObject(new ground(), Greenfoot.getRandomNumber(300), 250);
        addObject(new ground(), Greenfoot.getRandomNumber(300), 150);
        addObject(new ground(), Greenfoot.getRandomNumber(300), 50);
        addObject(new Enemy(), Greenfoot.getRandomNumber(300), 50);
        addObject(new scoreKeeper(), 253,385);
    }
    
    public void end()
    {
        cleanup();
        /*started=false;
        bStarted=false;
        addObject(new ground(), 56, 317);
        addObject(new doodler(false), 56,200);

        setBackground("title.png");
        getBackground().setTransparency(255);
        once = true;
        started = false;
        height = 0;
        fall = false;
        ended = false;*/
        addObject(new GameOver(),getWidth()/2,getHeight()/2);
        
        
        
        
    }
}

You need to login to post a reply.