Skip to content

Commit 5e8be45

Browse files
committed
Finished merging
1 parent 1aa5ed9 commit 5e8be45

39 files changed

Lines changed: 296 additions & 315 deletions

TeachingKidsProgramming.iml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
4+
<output url="file://$MODULE_DIR$/target/classes" />
5+
<output-test url="file://$MODULE_DIR$/target/test-classes" />
6+
<content url="file://$MODULE_DIR$">
7+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
9+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
10+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
11+
<excludeFolder url="file://$MODULE_DIR$/target" />
12+
</content>
13+
<orderEntry type="inheritedJdk" />
14+
<orderEntry type="sourceFolder" forTests="false" />
15+
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
16+
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
17+
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
18+
<orderEntry type="library" name="Maven: velocity:velocity:1.4" level="project" />
19+
<orderEntry type="library" scope="RUNTIME" name="Maven: velocity:velocity-dep:1.4" level="project" />
20+
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
21+
<orderEntry type="library" name="Maven: log4j:log4j:1.2.14" level="project" />
22+
</component>
23+
</module>
Lines changed: 46 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,55 @@
11
package org.teachingextensions.logo;
22

3-
import java.awt.BasicStroke;
4-
import java.awt.Cursor;
5-
import java.awt.Graphics;
6-
import java.awt.Graphics2D;
7-
import java.awt.Image;
8-
import java.awt.RenderingHints;
3+
import org.teachingextensions.logo.Turtle.Animals;
4+
import org.teachingextensions.windows.ProgramWindow;
5+
6+
import javax.swing.*;
7+
import java.awt.*;
98
import java.awt.geom.AffineTransform;
109
import java.awt.geom.Line2D;
1110
import java.net.URL;
1211

13-
import javax.swing.ImageIcon;
14-
15-
import org.teachingextensions.logo.Turtle.Animals;
16-
import org.teachingextensions.windows.ProgramWindow;
17-
1812
@SuppressWarnings("serial")
19-
public class TurtlePanel extends ProgramWindow
20-
{
21-
private Turtle turtle;
22-
private Image image;
13+
public class TurtlePanel extends ProgramWindow {
14+
private Turtle turtle;
15+
private Image image;
2316
private Animals animal;
24-
public TurtlePanel()
25-
{
17+
18+
public TurtlePanel() {
2619
}
27-
public void setTurtle(Turtle turtle)
28-
{
20+
21+
public void setTurtle(Turtle turtle) {
2922
this.turtle = turtle;
3023
}
24+
3125
@Override
32-
public void paint(Graphics g)
33-
{
26+
public void paint(Graphics g) {
3427
super.paint(g);
3528
paintLines((Graphics2D) g);
3629
paintTurtle((Graphics2D) g);
3730
}
38-
private void paintLines(Graphics2D g)
39-
{
40-
if (turtle == null) { return; }
31+
32+
private void paintLines(Graphics2D g) {
33+
if (turtle == null) {
34+
return;
35+
}
4136
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
4237
g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
4338
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
4439
g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
45-
for (LineSegment l : turtle.getTrail())
46-
{
47-
if (l != null)
48-
{
40+
for (LineSegment l : turtle.getTrail()) {
41+
if (l != null) {
4942
g.setColor(l.getColor());
5043
g.setStroke(new BasicStroke(l.getWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));
5144
g.draw(new Line2D.Double(l.getStart().x, l.getStart().y, l.getEnd().x, l.getEnd().y));
5245
}
5346
}
5447
}
55-
private void paintTurtle(Graphics2D g)
56-
{
57-
if (turtle == null || turtle.isHidden()) { return; }
48+
49+
private void paintTurtle(Graphics2D g) {
50+
if (turtle == null || turtle.isHidden()) {
51+
return;
52+
}
5853
Image image = getImage();
5954
int xCenter = image.getWidth(null) / 2;
6055
int yCenter = image.getHeight(null) / 2;
@@ -66,36 +61,39 @@ private void paintTurtle(Graphics2D g)
6661
move.concatenate(rotate);
6762
g.drawImage(image, move, null);
6863
}
69-
public synchronized Image getImage()
70-
{
71-
if (image == null)
72-
{
64+
65+
public synchronized Image getImage() {
66+
if (image == null) {
7367
setAnimal(Animals.Turtle);
7468
}
7569
return image;
7670
}
77-
public synchronized Animals getAnimal()
78-
{
79-
if (animal == null)
80-
{
71+
72+
public synchronized Animals getAnimal() {
73+
if (animal == null) {
8174
setAnimal(Animals.Turtle);
8275
}
8376
return animal;
8477
}
85-
public synchronized void setAnimal(Animals animal)
86-
{
78+
79+
public synchronized void setAnimal(Animals animal) {
8780
this.animal = animal;
88-
String name = "images/" + animal + ".png";
89-
URL resource = this.getClass().getClassLoader().getResource(name);
90-
if (resource == null) { throw new IllegalStateException("Could not find animal: " + name); }
81+
String name = animal + ".png";
82+
URL resource = this.getClass().getResource(name);
83+
if (resource == null) {
84+
resource = this.getClass().getClassLoader().getResource(name);
85+
}
86+
if (resource == null) {
87+
throw new IllegalStateException("Could not find animal: " + name);
88+
}
9189
image = new ImageIcon(resource).getImage();
9290
}
93-
public void setCursor(int cursor)
94-
{
91+
92+
public void setCursor(int cursor) {
9593
this.setCursor(Cursor.getPredefinedCursor(cursor));
9694
}
97-
public void ___()
98-
{
95+
96+
public void ___() {
9997
// blank for the DeepDive
10098
}
10199
}

src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,14 @@
33
import org.teachingextensions.logo.PenColors;
44
import org.teachingextensions.logo.Tortoise;
55

6-
public class SimpleSquare
7-
{
8-
public static void main(String[] args) throws Exception
9-
{
6+
public class SimpleSquare {
7+
public static void main(String[] args) throws Exception {
108
// Show the tortoise --#1
119
Tortoise.show();
1210
// Make the tortoise move as fast as possible --#6
1311
Tortoise.setSpeed(10);
1412
// Do the following 4 times --#5.1
15-
for (int i = 1; i <= 4; i++)
16-
{
13+
for (int i = 1; i <= 4; i++) {
1714
// Change the pen color of the line the tortoise draws to "blue" --#4
1815
Tortoise.setPenColor(PenColors.Blues.Blue);
1916
// Move the tortoise 50 pixels --#2

src/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicHolidayCard.java renamed to src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicHolidayCard.java

File renamed without changes.

src/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicTicTacToe.java renamed to src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicTicTacToe.java

File renamed without changes.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package org.teachingkidsprogramming.section08tdd;
2+
3+
import org.teachingextensions.logo.PenColors;
4+
5+
import javax.swing.*;
6+
import java.awt.*;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
public class PuzzleBoard extends JPanel {
11+
private static final long serialVersionUID = -3592444274530147326L;
12+
private List<Tile> tiles;
13+
private List<Point> positions;
14+
15+
public PuzzleBoard() {
16+
this.positions = createPositions();
17+
this.tiles = createTiles(this.positions);
18+
}
19+
20+
private static List<Point> createPositions() {
21+
ArrayList<Point> p = new ArrayList<>(9);
22+
Point point;
23+
for (int i = 0; i < 9; i++) {
24+
if (i < 3) {
25+
point = new Point(35, 35 + (127 * i));
26+
} else if (i < 6) {
27+
point = new Point(162, 35 + (127 * (i - 3)));
28+
} else {
29+
point = new Point(289, 35 + (127 * (i - 6)));
30+
}
31+
p.add(point);
32+
}
33+
return p;
34+
}
35+
36+
private static List<Tile> createTiles(List<Point> positions) {
37+
ArrayList<Tile> t = new ArrayList<>(9);
38+
for (int i = 0; i < 8; i++) {
39+
t.add(new Tile(i, positions.get(i)));
40+
}
41+
return t;
42+
}
43+
44+
@Override
45+
protected void paintComponent(Graphics g) {
46+
super.paintComponent(g);
47+
drawBorder(g);
48+
drawField(g);
49+
drawTiles(g);
50+
}
51+
52+
private void drawTiles(Graphics g) {
53+
Graphics2D g2d = (Graphics2D) g.create();
54+
for (Tile tile : tiles) {
55+
tile.paint(g2d);
56+
}
57+
g2d.dispose();
58+
}
59+
60+
private void drawField(Graphics g) {
61+
g.setColor(PenColors.Blues.SkyBlue);
62+
g.fillRect(30, 30, 386, 386);
63+
}
64+
65+
private void drawBorder(Graphics g) {
66+
g.setColor(PenColors.Blues.DarkBlue);
67+
g.fillRect(20, 20, 410, 410);
68+
}
69+
70+
public Tile getPiece(int i) {
71+
return this.tiles.get(i);
72+
}
73+
74+
public List<Point> getPositions() {
75+
return new ArrayList<>(positions);
76+
}
77+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.teachingkidsprogramming.section08tdd;
2+
3+
import javax.swing.*;
4+
import java.awt.*;
5+
6+
public class PuzzleSolver implements Runnable {
7+
private PuzzleBoard board;
8+
9+
public PuzzleSolver(PuzzleBoard board) {
10+
this.board = board;
11+
}
12+
13+
public void run() {
14+
final PuzzleBoard b = this.board;
15+
Point target = b.getPositions().get(8);
16+
while (b.isVisible()) {
17+
SwingUtilities.invokeLater(new Runnable() {
18+
public void run() {
19+
b.repaint();
20+
}
21+
});
22+
Tile piece = b.getPiece(7);
23+
if (!piece.isMovingTo(target)) {
24+
piece.moveTo(target);
25+
}
26+
if (!piece.isAt(target)) {
27+
piece.step();
28+
}
29+
try {
30+
Thread.sleep(10);
31+
} catch (InterruptedException e) {
32+
}
33+
}
34+
}
35+
}

src/org/teachingkidsprogramming/section08tdd/PuzzleWindow.java renamed to src/main/java/org/teachingkidsprogramming/section08tdd/PuzzleWindow.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
package org.teachingkidsprogramming.section08tdd;
22

3-
import java.awt.BorderLayout;
4-
53
import org.teachingextensions.windows.ProgramWindow;
64

7-
public class PuzzleWindow extends ProgramWindow
8-
{
9-
public PuzzleWindow()
10-
{
5+
import java.awt.*;
6+
7+
public class PuzzleWindow extends ProgramWindow {
8+
public PuzzleWindow() {
119
super("Puzzle");
1210
this.setLayout(new BorderLayout());
1311
}
14-
/**
15-
*
16-
*/
12+
1713
private static final long serialVersionUID = -1526978082665818880L;
1814
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.teachingkidsprogramming.section08tdd;
2+
3+
import javax.swing.*;
4+
import java.awt.*;
5+
6+
public class SimplePuzzle implements Runnable {
7+
public static void main(String[] args) {
8+
EventQueue.invokeLater(new SimplePuzzle());
9+
}
10+
11+
public void run() {
12+
this.setLookAndFeel();
13+
PuzzleBoard board = new PuzzleBoard();
14+
PuzzleWindow pw = new PuzzleWindow();
15+
pw.add(board);
16+
pw.setVisible(true);
17+
new Thread(new PuzzleSolver(board)).start();
18+
}
19+
20+
private void setLookAndFeel() {
21+
try {
22+
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
23+
} catch (ClassNotFoundException ex) {
24+
} catch (InstantiationException ex) {
25+
} catch (IllegalAccessException ex) {
26+
} catch (UnsupportedLookAndFeelException ex) {
27+
}
28+
}
29+
}

0 commit comments

Comments
 (0)