Skip to content

Commit 845fc01

Browse files
committed
Worked on Many Animals Recipes w/Jim
1 parent 8678a07 commit 845fc01

3 files changed

Lines changed: 71 additions & 21 deletions

File tree

src/org/teachingextensions/logo/MultiTurtlePanel.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import org.teachingextensions.logo.Turtle.Animals;
1818
import org.teachingextensions.windows.ProgramWindow;
1919

20-
public class MultiTurtlePanel extends ProgramWindow
20+
public class MultiTurtlePanel extends TurtlePanel
2121
{
2222
private List<Turtle> turtles;
2323
private Image image;
@@ -29,6 +29,7 @@ public MultiTurtlePanel()
2929
public void addTurtle(Turtle turtle)
3030
{
3131
this.turtles.add(turtle);
32+
turtle.setPanel(this);
3233
}
3334
@Override
3435
public void paint(Graphics g)
@@ -101,7 +102,7 @@ public void setCursor(int cursor)
101102
}
102103
public void showPanel()
103104
{
104-
JFrame frame = new JFrame("Animals");
105+
JFrame frame = new JFrame("So Many Turtles");
105106
frame.getContentPane().add(this);
106107
ProgramWindow.createStandardFrame(frame);
107108
this.repaint();

src/org/teachingextensions/logo/Turtle.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private Component getPanel()
9494
{
9595
if (panel == null)
9696
{
97-
String title = "Turtle";
97+
String title = "TKPJava Turtle";
9898
panel = new TurtlePanel();
9999
if (speed != TEST_SPEED)
100100
{
@@ -156,11 +156,15 @@ private void animate(double amount, double max, Saver<Double> s)
156156
refreshPanel();
157157
}
158158
private void refreshPanel()
159+
{
160+
refreshPanel(getPanel());
161+
}
162+
private void refreshPanel(Component panel)
159163
{
160164
long delay = getDelay();
161165
if (delay != TEST_SPEED)
162166
{
163-
getPanel().repaint();
167+
panel.repaint();
164168
try
165169
{
166170
Thread.sleep(delay);
@@ -303,4 +307,16 @@ public static double angleCalculator(int x1, int y1, int x2, int y2)
303307
double degreesWith0North = degrees - 90;
304308
return degreesWith0North;
305309
}
310+
public void setPanel(TurtlePanel panel)
311+
{
312+
this.panel = panel;
313+
}
314+
public void drawStar(int size)
315+
{
316+
for (int i = 1; i <= 5; i++)
317+
{
318+
this.turn(360 / 2.5);
319+
this.move(size);
320+
}
321+
}
306322
}

src/org/teachingkidsprogramming/section07events/ManyAnimals.java

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.teachingkidsprogramming.section07events;
22

3+
import java.util.ArrayList;
4+
35
import org.teachingextensions.logo.MultiTurtlePanel;
46
import org.teachingextensions.logo.Turtle;
57
import org.teachingextensions.windows.MouseLeftClickListener;
@@ -10,30 +12,61 @@ public ManyAnimals()
1012
{
1113
showSomeTurtles();
1214
}
15+
//create an ArrayList of Turtle Objects
16+
public ArrayList<Turtle> turtles = new ArrayList<Turtle>();
17+
//create a window for many turtles
18+
public MultiTurtlePanel mt = new MultiTurtlePanel();
1319
private void showSomeTurtles()
1420
{
15-
MultiTurtlePanel mt = new MultiTurtlePanel();
16-
Turtle t1 = new Turtle();
17-
mt.addTurtle(t1);
18-
t1.setX(100);
19-
t1.setY(300);
20-
Turtle t2 = new Turtle();
21-
mt.addTurtle(t2);
22-
t1.setX(300);
23-
t1.setY(100);
2421
mt.showPanel();
22+
//Have SimpleBubble listen for when the left mouse button is clicked in your program window
23+
//mt.addMouseLeftClickListener(this);
24+
int size = 100;
25+
//add three turtles
26+
for (int i = 1; i <= 3; i++)
27+
{
28+
//create a turtle
29+
Turtle turtle = new Turtle();
30+
//add the turtles to the turtles
31+
turtles.add(turtle);
32+
}
33+
//add all the turtles to the window
34+
for (Turtle turtle : turtles)
35+
{
36+
//must call addTurtle BEFORE calling other methods
37+
//add the first turtle to the windows
38+
mt.addTurtle(turtle);
39+
}
40+
//set the X, Y - teleport
41+
for (int i = 0; i < 3; i++)
42+
{
43+
turtles.get(i).setX(i * 100 + 350);
44+
turtles.get(i).setY(i * 100 + 100);
45+
}
46+
for (Turtle turtle : turtles)
47+
{
48+
//have the first Turtle draw a star
49+
turtle.setSpeed(7);
50+
turtle.drawStar(size);
51+
}
2552
}
2653
@Override
54+
//threading error - Virtual Proctor contention
2755
public void onLeftMouseClick(int x, int y)
2856
{
29-
// createTurtles (recipe below) --#8
30-
//------------- Recipe for createTurtles --#8
31-
// Remove previous Tortoise from your program window --#9
32-
// programWindow.removePaintable();
33-
// Set the count of Turtles to a random number between 10 and 50 --#2.5
34-
// Create a tortoise at 200, 300 --#2.1
35-
// Add the circle to your program window --#2.4
36-
//------------- End of createTurtles recipe --#8
57+
int size = 200;
58+
//create a new Turtle
59+
Turtle turtle = new Turtle();
60+
//add another turtle to the turtles
61+
turtles.add(turtle);
62+
// the turtle to the window
63+
mt.addTurtle(turtle);
64+
turtle.show();
65+
// teleport the new turtle to the x and y of the mouse click
66+
turtle.setX(x);
67+
turtle.setY(y);
68+
// have this turtle draw a star
69+
turtle.drawStar(size);
3770
}
3871
public static void main(String[] args)
3972
{

0 commit comments

Comments
 (0)