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

2024/11/20

Stuck in: "The world is being constructed"

youngdisciple07 youngdisciple07

2024/11/20

#
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:
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;
    }
}
here is my counter class:
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
    }
}
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!!
F7R_Beast F7R_Beast

2024/11/23

#
Mr Mohand is useful go ask him! (Chat GPT is always an option if Mohand doesn't know)
Spock47 Spock47

2024/11/23

#
This seems to be an Apple bug: https://github.com/k-pet-group/BlueJ-Greenfoot/issues/2398
You need to login to post a reply.