Hi there,
I am trying something daring (for me)
What I am trying to do is, when the imput is shift I would like to transfer to another level (Level0). I want to place the player in the same coords as in Level1. And when shift is pressed again, I would like to return to Level1.
So what I think i need is:
-2 world
-shift input goes to Level0(if in Level1) or Level1(if in level0) and no shift input stays in the current world.
-Remember coords.
Sofar I have this
My character has:
If the input is shift, I transport to another world on given coords (setLocation in Level0)
So if I want to teleport back to Level1, what would be the way to go.
Make a shift counter and every shift teleports to the other world or does anybody have another idea?
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 | public class Level1 extends SWorld { public Level1() { this ( new Alice()); } public Level1(Alice alice) { super ( 800 , 400 , 1 , 2400 ); //Player setMainActor( new Alice(), 10 , 340 ); mainActor.setLocation( 200 , 340 ); //Background GreenfootImage bg = new GreenfootImage( "Test.jpg" ); setScrollingBackground(bg); //Counter addObject( new Score(), 30 , 10 , false ); addObject( new ShroomScore(), 130 , 10 , false ); //Level blocks for ( int i= 1 ;i< 75 ;i++) { addObject( new Block(), i* 30 - 15 , 384 , true ); } } |
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 | public class Level0 extends SWorld { public Level0() { this ( new Alice()); } public Level0(Alice alice) { super ( 600 , 400 , 1 , 2400 ); setMainActor( new Alice(), 600 , 340 ); mainActor.setLocation( 200 , 340 ); //Background GreenfootImage bg = new GreenfootImage( "Forest.jpg" ); setScrollingBackground(bg); //Counter addObject( new Score(), 30 , 10 , false ); addObject( new ShroomScore(), 130 , 10 , false ); //Blocks for ( int i= 1 ;i< 75 ;i++) { addObject( new Block(), i* 30 - 15 , 384 , true ); } } } |
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 | private int level; public void act() { checkKeys(); checkFall(); CheckCollisionBlock(); } private void checkKeys() { if (Greenfoot.isKeyDown( "shift" ) ) { if (level != 1 ) { level = 0 ; Greenfoot.setWorld( new Level1a( this )); } else { level = 1 ; getWorld().removeObject( this ); Greenfoot.setWorld( new Level1( this )); } } private void checkFall() { if (onGround()) { setVSpeed( 0 ); } else { fall(); } } public void CheckCollisionBlock() { // check below the actor while (getOneObjectAtOffset( 0 , getImage().getHeight()/ 2 + 1 , Block. class )!= null ) { setLocation(getX(), getY()- 1 ); onGround= true ; vSpeed= 0 ; } // check above the actor while (getOneObjectAtOffset( 0 , -getImage().getHeight()/ 2 - 1 , Block. class )!= null ) { setLocation(getX(), getY()+ 1 ); vSpeed = 0 ; } // check to right of actor while (getOneObjectAtOffset(getImage().getWidth()/ 2 + 1 , 0 , Block. class )!= null ) { setLocation(getX()- 1 , getY()); vSpeed = 0 ; } // check to left of actor while (getOneObjectAtOffset(-getImage().getWidth()/ 2 - 1 , 0 , Block. class )!= null ) { setLocation(getX()+ 1 , getY()); vSpeed = 0 ; } } |