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

2024/11/4

Fixing text displaying + Players duplicating when moved

trulydevious trulydevious

2024/11/4

#
I am currently making a board game type thing in Greenfoot. So, I've done most of the coding, but I need help with a couple of things. I'm trying to figure out how to set the text to be on top of the actors, that way it's not being blocked. Also the players are duplicating when I make them to move and that's not what I want it to do, I just can't find out what I'm doing wrong. Board 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
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
 
/**
 * Write a description of class MyWorld here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Board extends World
{
    private String[] boardSpaces = new String[119];
    private String[] texts = {"Move -1", "Move 1", "Move 2", "Move 3"};
    private Timer textTimer = new Timer();
    private boolean textDisplayed = false;
    private GreenfootImage textImage;
    int randomIndex = Greenfoot.getRandomNumber(texts.length);
    String randomText = texts[randomIndex];
             
    /**
     * Constructor for objects of class Board.
     *
     */
    public Board()
    {   
        // Create a new world with 20x20 cells with a cell size of 40x40 pixels.
        super(20, 20, 45);
        setPaintOrder(Player1.class, Player2.class, Space.class);
        initializeBoardSpaces();
        prepare();
        textTimer = new Timer();
    }
     
    public void act(){
        if(Greenfoot.mouseClicked(this)){
            displayRandomText();
        }
         
        if(textDisplayed && textTimer.millisElapsed() >= 10000){
            removeText();
        }
    }
     
    private void initializeBoardSpaces(){
        for(int i = 0; i < boardSpaces.length; i++){
            String[] colors = {"Red", "Purple", "Yellow", "Blue", "Orange", "Green"};
            boardSpaces[i] = colors[i % colors.length];
        }
    }
 
    private void prepare(){
        addPlayer();
        createBoard();
    }
     
    private void createBoard(){
        //Row 1 (17)
        Space space2 = new Space("Blue");
        addObject(space2, 2, 1);
        Space space3 = new Space("Yellow");
        addObject(space3, 3, 1);
        Space space4 = new Space("Purple");
        addObject(space4, 4, 1);
        Space space5 = new Space("Red");
        addObject(space5, 5, 1);
        Space space6 = new Space("Green");
        addObject(space6, 6, 1);
        Space space7 = new Space("Orange");
        addObject(space7, 7, 1);
        Space space8 = new Space("Blue");
        addObject(space8, 8, 1);
        Space space9 = new Space("Yellow");
        addObject(space9, 9, 1);
        Space space10 = new Space("Purple");
        addObject(space10, 10, 1);
        Space space11 = new Space("Red");
        addObject(space11, 11, 1);
        Space space12 = new Space("Green");
        addObject(space12, 12, 1);
        Space space13 = new Space("Orange");
        addObject(space13, 13, 1);
        Space space14 = new Space("Blue");
        addObject(space14, 14, 1);
        Space space15 = new Space("Yellow");
        addObject(space15, 15, 1);
        Space space16 = new Space("Purple");
        addObject(space16, 16, 1);
        Space space17 = new Space("Red");
        addObject(space17, 17, 1);
        Space space18 = new Space("Green");
        addObject(space18, 18, 1);
 
        //Down 1 (2)
        Space space19 = new Space("Orange");
        addObject(space19, 18, 2);
        Space space20 = new Space("Blue");
        addObject(space20, 18, 3);
 
        //Row 2 (18)
        Space space21 = new Space("Yellow");
        addObject(space21, 17, 3);
        Space space22 = new Space("Purple");
        addObject(space22, 16, 3);
        Space space23 = new Space("Pink");
        addObject(space23, 15, 3);
        Space space24 = new Space("Red");
        addObject(space24, 14, 3);
        Space space25 = new Space("Green");
        addObject(space25, 13, 3);
        Space space26 = new Space("Orange");
        addObject(space26, 12, 3);
        Space space27 = new Space("Blue");
        addObject(space27, 11, 3);
        Space space28 = new Space("Yellow");
        addObject(space28, 10, 3);
        Space space29 = new Space("Purple");
        addObject(space29, 9, 3);
        Space space30 = new Space("Red");
        addObject(space30, 8, 3);
        Space space31 = new Space("Green");
        addObject(space31, 7, 3);
        Space space32 = new Space("Orange");
        addObject(space32, 6, 3);
        Space space33 = new Space("Blue");
        addObject(space33, 5, 3);
        Space space34 = new Space("Yellow");
        addObject(space34, 4, 3);
        Space space35 = new Space("Purple");
        addObject(space35, 3, 3);
        Space space36 = new Space("Red");
        addObject(space36, 2, 3);
        Space space37 = new Space("Green");
        addObject(space37, 1, 3);
         
        //Down 2 (3)
        Space space38 = new Space("Orange");
        addObject(space38, 1, 4);
        Space space39 = new Space("Blue");
        addObject(space39, 1, 5);
        Space space40 = new Space("Yellow");
        addObject(space40, 1, 6);
         
        //Row 3 (10)
        Space space41 = new Space("Purple");
        addObject(space41, 2, 6);
        Space space42 = new Space("Red");
        addObject(space42, 3, 6);
        Space space43 = new Space("Green");
        addObject(space43, 4, 6);
        Space space44 = new Space("Pink");
        addObject(space44, 5, 6);
        Space space45 = new Space("Orange");
        addObject(space45, 6, 6);
        Space space46 = new Space("Blue");
        addObject(space46, 7, 6);
        Space space47 = new Space("Yellow");
        addObject(space47, 8, 6);
        Space space48 = new Space("Purple");
        addObject(space48, 9, 6);
        Space space49 = new Space("Red");
        addObject(space49, 10, 6);
        Space space50 = new Space("Green");
        addObject(space50, 11, 6);
         
        //Down 3 (2)
        Space space51 = new Space("Orange");
        addObject(space51, 11, 7);
        Space space52 = new Space("Blue");
        addObject(space52, 11, 8);
         
        //Row 4 (7)
        Space space53 = new Space("Yellow");
        addObject(space53, 12, 8);
        Space space54 = new Space("Purple");
        addObject(space54, 13, 8);
        Space space55 = new Space("Red");
        addObject(space55, 14, 8);
        Space space56 = new Space("Green");
        addObject(space56, 15, 8);
        Space space57 = new Space("Orange");
        addObject(space57, 16, 8);
        Space space58 = new Space("Blue");
        addObject(space58, 17, 8);
        Space space59 = new Space("Yellow");
        addObject(space59, 18, 8);
         
        //Down 4 (2)
        Space space60 = new Space("Purple");
        addObject(space60, 18, 9);
        Space space61 = new Space("Red");
        addObject(space61, 18, 10);
         
        //Row 5 (17)
        Space space62 = new Space("Pink");
        addObject(space62, 17, 10);
        Space space63 = new Space("Green");
        addObject(space63, 16, 10);
        Space space64 = new Space("Orange");
        addObject(space64, 15, 10);
        Space space65 = new Space("Blue");
        addObject(space65, 14, 10);
        Space space66 = new Space("Yellow");
        addObject(space66, 13, 10);
        Space space67 = new Space("Purple");
        addObject(space67, 12, 10);
        Space space68 = new Space("Red");
        addObject(space68, 11, 10);
        Space space69 = new Space("Green");
        addObject(space69, 10, 10);
        Space space70 = new Space("Orange");
        addObject(space70, 9, 10);
        Space space71 = new Space("Blue");
        addObject(space71, 8, 10);
        Space space72 = new Space("Yellow");
        addObject(space72, 7, 10);
        Space space73 = new Space("Purple");
        addObject(space73, 6, 10);
        Space space74 = new Space("Red");
        addObject(space74, 5, 10);
        Space space75 = new Space("Green");
        addObject(space75, 4, 10);
        Space space76 = new Space("Orange");
        addObject(space76, 3, 10);
        Space space77 = new Space("Blue");
        addObject(space77, 2, 10);
        Space space78 = new Space("Yellow");
        addObject(space78, 1, 10);
         
        //Down 5 (3)
        Space space79 = new Space("Pink");
        addObject(space79, 1, 11);
        Space space80 = new Space("Purple");
        addObject(space80, 1, 12);
        Space space81 = new Space("Red");
        addObject(space81, 1, 13);
         
        //Row 6 (6)
        Space space82 = new Space("Green");
        addObject(space82, 2, 13);
        Space space83 = new Space("Orange");
        addObject(space83, 3, 13);
        Space space84 = new Space("Blue");
        addObject(space84, 4, 13);
        Space space85 = new Space("Yellow");
        addObject(space85, 5, 13);
        Space space86 = new Space("Purple");
        addObject(space86, 6, 13);
        Space space87 = new Space("Red");
        addObject(space87, 7, 13);
         
        //Down 6 (2)
        Space space88 = new Space("Green");
        addObject(space88, 7, 14);
        Space space89 = new Space("Pink");
        addObject(space89, 7, 15);
         
        //Row 7 (11)
        Space space90 = new Space("Orange");
        addObject(space90, 8, 15);
        Space space91 = new Space("Blue");
        addObject(space91, 9, 15);
        Space space92 = new Space("Yellow");
        addObject(space92, 10, 15);
        Space space93 = new Space("Purple");
        addObject(space93, 11, 15);
        Space space94 = new Space("Red");
        addObject(space94, 12, 15);
        Space space95 = new Space("Green");
        addObject(space95, 13, 15);
        Space space96 = new Space("Orange");
        addObject(space96, 14, 15);
        Space space97 = new Space("Blue");
        addObject(space97, 15, 15);
        Space space98 = new Space("Yellow");
        addObject(space98, 16, 15);
        Space space99 = new Space("Purple");
        addObject(space99, 17, 15);
        Space space100 = new Space("Red");
        addObject(space100, 18, 15);
         
        //Down 7 (2)
        Space space101 = new Space("Green");
        addObject(space101, 18, 16);
        Space space102 = new Space("Orange");
        addObject(space102, 18, 17);
         
        //Row 8 (14)
        Space space103 = new Space("Blue");
        addObject(space103, 17, 17);
        Space space104 = new Space("Yellow");
        addObject(space104, 16, 17);
        Space space105 = new Space("Purple");
        addObject(space105, 15, 17);
        Space space106 = new Space("Red");
        addObject(space106, 14, 17);
        Space space107 = new Space("Pink");
        addObject(space107, 13, 17);
        Space space108 = new Space("Green");
        addObject(space108, 12, 17);
        Space space109 = new Space("Orange");
        addObject(space109, 11, 17);
        Space space110 = new Space("Blue");
        addObject(space110, 10, 17);
        Space space111 = new Space("Yellow");
        addObject(space111, 9, 17);
        Space space112 = new Space("Purple");
        addObject(space112, 8, 17);
        Space space113 = new Space("Red");
        addObject(space113, 7, 17);
        Space space114 = new Space("Green");
        addObject(space114, 6, 17);
        Space space115 = new Space("Orange");
        addObject(space115, 5, 17);
        Space space116 = new Space("Blue");
        addObject(space116, 4, 17);
         
        //Down 8 (1)
        Space space117 = new Space("Yellow");
        addObject(space117, 4, 18);
         
        //Row 9 (2)
        Space space118 = new Space("Purple");
        addObject(space118, 3, 18);
        Space space119= new Space("Red");
        addObject(space119, 2, 18);
    }
 
    public void addPlayer(){
        Player1 player1 = new Player1();
        addObject(player1, 1, 18);
        Player2 player2 = new Player2();
        addObject(player2, 0, 18);
    }
 
    public int getBoardLength(){
        return boardSpaces.length;
    }
 
    public String getBoardSpace(int index){
        return boardSpaces[index];
    }
     
    private void displayRandomText(){
        textImage = new GreenfootImage(randomText, 16, Color.BLACK, new Color(0, 0, 0, 0));
         
        int x = getWidth() * getCellSize() / 2 - textImage.getWidth() / 2;
        int y = getHeight() * getCellSize() / 2 - textImage.getHeight() / 2;
         
        getBackground().clear();
        getBackground().drawImage(textImage, x, y);
         
        textDisplayed = true;
        textTimer.mark();
    }
     
    private void removeText(){
        getBackground().clear();
        textDisplayed = false;
    }
}
Player classes (They are the same code just different actors, there are two player classes)
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
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
 
/**
 * Write a description of class Player here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Player1 extends Actor
{
    private boolean selected = false;
 
    /**
     * Act - do whatever the Player1 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act()
    {
        checkSelection();
    }   
     
    private void checkSelection(){
        if(Greenfoot.mouseClicked(this)){
            selected = true;
        } else if(selected && Greenfoot.mouseClicked(null)){
            MouseInfo mouse = Greenfoot.getMouseInfo();
            if(mouse != null){
                int targetX = mouse.getX();
                int targetY = mouse.getY();
                setLocation(targetX, targetY);
            }
            selected = false;
        }
    }
}
danpost danpost

2024/11/4

#
trulydevious wrote...
I'm trying to figure out how to set the text to be on top of the actors, that way it's not being blocked.
If you draw the text onto the background image (as you are doing), the actors will always be above the text. However, you can accomplish this if you: 1) use an Actor type object to display the text; and 2) use the setPaintOrder method in your Board class constructor to give it priority in showing above other actors;
the players are duplicating when I make them to move and that's not what I want it to do, I just can't find out what I'm doing wrong. << Code Omitted >>
You are using the following line in your code::
1
getBackground().clear();
Instead, use:
1
2
3
GreenfootImage bg = getBackground();
bg.setColor(Color.WHITE);
bg.fill();
This way, the residue of previously drawn backgrounds will not remain in the image. The background image needs to be completely opaque (without any transparencies which the clear method introduces).
trulydevious trulydevious

2024/11/5

#
Thank you so much!
You need to login to post a reply.