So I'm trying to create a game for a project I have that's due tomorrow. The game and code is relatively simple (it's a WIP). I am trying to create a method that will increase the 'moveAmount' (how quickly the Apple falls) variable by 1 every 20 apples eaten, but I can't seem to get anything to work. Any ideas? (NOTE: I mean the moveAmount variable in the Apple class NOT the one in the Dinosaur class.) Also, I apologize if the code is not formatted correctly as this is my first time using this forum.
Here's the code for the Apple class:
Here's the code for the Counter class:
Here's the code for the MyWorld class:
And (lastly) here's the code for Dinosaur class (which is meant to eat the apples):
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 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Apple extends Animal { int moveAmount = 3 ; public Apple() { super (); } public void act() { setLocation(getX(), getY() + moveAmount); gameOver(); } public void gameOver() { if (getY() > 599 ) { Greenfoot.stop(); } } } |
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) 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); } } |
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 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class MyWorld extends World { Counter Counter = new Counter( "Score: " ); public MyWorld() { // Create a new world with 830x600 cells with a cell size of 1x1 pixels. super ( 830 , 600 , 1 ); setBackground( "forest.jpg" ); populate(); } public void populate() { Dinosaur Dinosaur = new Dinosaur(); addObject(Dinosaur, getWidth() / 2 , getHeight() - 200 ); Apple Apple = new Apple(); addObject(Apple, Greenfoot.getRandomNumber( 729 ) + 51 , 0 ); addObject(Counter, 750 , 50 ); } public void countApples() { Counter.add( 1 ); } } |
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Dinosaur extends Animal { private int moveAmount; private boolean edge; private String dinosaurFaceTowards; private int timer = 0 ; public Dinosaur() { moveAmount = 5 ; edge = false ; } public void act() { checkKeys(); eatApples(); animateDinosaur(); } public void checkKeys() { if (Greenfoot.isKeyDown( "left" ) || Greenfoot.isKeyDown( "a" )) { setLocation(getX() - moveAmount, getY()); } else if (Greenfoot.isKeyDown( "right" ) || Greenfoot.isKeyDown( "d" )) { setLocation(getX() + moveAmount, getY()); } } public void eatApples() { Actor Apple = getOneIntersectingObject(Apple. class ); if (Apple != null ) { getWorld().removeObject(Apple); timer = 15 ; ((MyWorld) getWorld()).countApples(); ((MyWorld) getWorld()).addObject( new Apple(), Greenfoot.getRandomNumber( 729 ) + 51 , 0 ); } } public void animateDinosaur() { if (timer <= 15 && timer > 0 ) { if (Greenfoot.isKeyDown( "left" ) || Greenfoot.isKeyDown( "a" )) { dinosaurFaceTowards = "left" ; setImage( "dinosaur3-left.png" ); } else if (Greenfoot.isKeyDown( "right" ) || Greenfoot.isKeyDown( "d" )) { dinosaurFaceTowards = "right" ; setImage( "dinosaur3-right.png" ); } else if (dinosaurFaceTowards == "left" ) { setImage( "dinosaur3-left.png" ); } else if (dinosaurFaceTowards == "right" ) { setImage( "dinosaur3-right.png" ); } timer--; } else if (Greenfoot.isKeyDown( "left" ) || Greenfoot.isKeyDown( "a" )) { dinosaurFaceTowards = "left" ; setImage( "dinosaur2-left.png" ); } else if (Greenfoot.isKeyDown( "right" ) || Greenfoot.isKeyDown( "d" )) { dinosaurFaceTowards = "right" ; setImage( "dinosaur2-right.png" ); } else { if (dinosaurFaceTowards == "left" ) { setImage( "dinosaur1-left.png" ); } else if (dinosaurFaceTowards == "right" ) { setImage( "dinosaur1-right.png" ); } } } } |