Hey, I have been stuck with a screen saying that the world is being constructed... I tried closing the program and reopening it and restarting my pc but to no avail...
Here is my Background class:
here is my counter class:
here is my RecruitSkellyButton:
import lang.stride.*;
import java.util.*;
import greenfoot.*;
/**
*
*/
public class RecruitSkellyButton extends Buttons
{
GreenfootImage button = new GreenfootImage("RecruitSkellyButton1.png");
GreenfootImage buttonHighlighted = new GreenfootImage("RecruitSkellyButton1Highlighted.png");
GreenfootImage buttonGrayed = new GreenfootImage("RecruitSkellyButton1BlackandWhite.png");
private Counter counter;
public RecruitSkellyButton(Counter counter){
this.counter = counter;
button.scale(150,109);
buttonHighlighted.scale(150,109);
buttonGrayed.scale(150,109);
setImage(button);
}
/**
* Act - do whatever the Option1_Button wants to do. This method is called whenever the 'Act' or 'Run' button gets pressed in the environment. PLACEHOLDER FOR RECRUIT SKELLY BUTTON
*/
public void act()
{
Background world = (Background) getWorld();
Counter counter = world.getCounter();
if (counter.getValue() < 5) { //check if the counter has enough gold
setImage(buttonGrayed);
}
else if (counter.getValue() >= 5) {
RecruitSkelly skelly1 = new RecruitSkelly();
setImage(button);
if (Greenfoot.mouseMoved(this)) {
setImage(buttonHighlighted);
}
if (Greenfoot.mouseClicked(this)) {
Arrow arrow1 = new Arrow();
getWorld().addObject(arrow1, 163, 277);
Arrow arrow2 = new Arrow();
getWorld().addObject(arrow2, 163, 125);
}
}
}
}
Note: I get greeted with this terminal message whenever I open greenfoot:
2024-11-18 20:55:35.543 java +: chose IMKClient_Legacy
2024-11-18 20:55:35.544 java +: chose IMKInputSession_LegacyException in thread "AWT-EventQueue-0" java.lang.NegativeArraySizeException: -4
Any help would be appreciated!!
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 | import lang.stride.*; import java.util.*; import greenfoot.*; /** * */ public class Background extends World { private Counter counter; /** * Constructor for objects of class Background. */ public Background() { super ( 848 , 600 , 1 ); prepare(); } /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. */ private void prepare() { GoldBar goldBar = new GoldBar(); addObject(goldBar, 60 , 36 ); //Counter counter = new Counter(); //addObject(counter,155,53); //add the counter to the world counter = new Counter( "Gold: " ); addObject(counter, 155 , 53 ); RecruitSkellyButton button1 = new RecruitSkellyButton(counter); addObject(button1, 414 , 530 ); addObject( new SmallGoldBar(), 300 , 300 ); SmallGoldBar smallGoldBar2 = new SmallGoldBar(); addObject(smallGoldBar2, 297 , 400 ); SmallGoldBar smallGoldBar3 = new SmallGoldBar(); addObject(smallGoldBar3, 424 , 296 ); SmallGoldBar smallGoldBar4 = new SmallGoldBar(); addObject(smallGoldBar4, 422 , 401 ); SmallGoldBar smallGoldBar5 = new SmallGoldBar(); addObject(smallGoldBar5, 563 , 291 ); SmallGoldBar smallGoldBar6 = new SmallGoldBar(); addObject(smallGoldBar6, 562 , 401 ); } public Counter getCounter() { return counter; } } |
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 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Counter here. * * @author (your name) * @version (a version number or a date) */ 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(String prefix) { background = new GreenfootImage( "Counter.png" ); background.scale( 120 , 29 ); value = 0 ; this .prefix = prefix; updateImage(); } /** * Animate the display to count up (or down) to the current target value. */ /* public void act() { } */ public void add ( int amount) { value += amount; updateImage(); } public int getValue() { return value; } public void updateImage() { GreenfootImage image = new GreenfootImage(background.getWidth(), background.getHeight()); // Draw the actual background image image.drawImage(background, 0 , 0 ); // Create the text to display GreenfootImage text = new GreenfootImage(prefix + value + "g" , 24 , Color.BLACK, new Color( 0 , 0 , 0 , 0 )); // Draw the text on top of the background image image.drawImage(text, (image.getWidth() - text.getWidth()) / 2 , 4 ); // Position the text above the counter image setImage(image); // Set the actor's image to the new composite image } } |