Skip to content

Commit 56f845f

Browse files
committed
working on Puzzle w/Jim
1 parent c9f1dbf commit 56f845f

File tree

4 files changed

+138
-37
lines changed

4 files changed

+138
-37
lines changed

src/org/teachingkidsprogramming/section08tdd/PuzzleBoard.java

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import java.awt.Color;
44
import java.awt.Graphics2D;
5-
import java.awt.Image;
6-
import java.net.URL;
75

8-
import javax.swing.ImageIcon;
96
import javax.swing.JPanel;
107

118
import org.teachingextensions.logo.Paintable;
@@ -27,33 +24,7 @@ public void paint(Graphics2D g, JPanel caller)
2724
g.fillRect(20, 20, 410, 410);
2825
g.setColor(PenColors.Blues.SkyBlue);
2926
g.fillRect(30, 30, 386, 386);
30-
String[] tiles = {"Batgirl1a.png",
31-
"Batgirl1b.png",
32-
"Batgirl1c.png",
33-
"Batgirl2a.png",
34-
"Batgirl2b.png",
35-
"Batgirl2c.png",
36-
"Batgirl3a.png",
37-
"Batgirl3b.png",
38-
"Batgirl3c.png"};
39-
for (int i = 0; i < 8; i++)
40-
{
41-
if (i < 3)
42-
{
43-
drawTile(g, tiles[i], 35, 35 + (127 * i));
44-
}
45-
else if (i < 6)
46-
drawTile(g, tiles[i], 162, 35 + (127 * (i - 3)));
47-
else
48-
{
49-
drawTile(g, tiles[i], 289, 35 + (127 * (i - 6)));
50-
}
51-
}
52-
}
53-
private void drawTile(Graphics2D g, String tile, int x, int y)
54-
{
55-
URL imagePicture = this.getClass().getResource(tile);
56-
Image img = new ImageIcon(imagePicture).getImage();
57-
g.drawImage(img, x, y, 122, 122, null);
5827
}
5928
}
29+
//be aware of time, ex. every second change the x by a certain value (animates)
30+
//be able to hold on to a tile so that it can be manipulated

src/org/teachingkidsprogramming/section08tdd/PuzzleSolver.java

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

3-
import org.teachingextensions.windows.ProgramWindow;
4-
53
public class PuzzleSolver
64
{
75
//this problem is an ArraySort w/ custom rules
@@ -22,16 +20,17 @@ public class PuzzleSolver
2220
//complex example -- http://www.brian-borowski.com/software/puzzle/
2321
//http://en.wikipedia.org/wiki/File:Batgirl.gif
2422
//
25-
public ProgramWindow programWindow;
23+
public PuzzleWindow puzzleWindow;
2624
public PuzzleSolver()
2725
{
28-
programWindow = new ProgramWindow("Puzzle");
26+
puzzleWindow = new PuzzleWindow("BatGirl Puzzle");
2927
PuzzleBoard jboard = new PuzzleBoard();
30-
jboard.addTo(programWindow);
31-
programWindow.setVisible(true);
28+
jboard.addTo(puzzleWindow);
29+
puzzleWindow.setVisible(true);
3230
}
3331
public static void main(String[] args)
3432
{
3533
new PuzzleSolver();
3634
}
35+
//repaint the window every second
3736
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package org.teachingkidsprogramming.section08tdd;
2+
3+
import java.awt.Graphics;
4+
import java.awt.Graphics2D;
5+
import java.awt.Image;
6+
import java.net.URL;
7+
import java.util.Calendar;
8+
9+
import javax.swing.ImageIcon;
10+
11+
import org.teachingextensions.windows.ProgramWindow;
12+
13+
public class PuzzleWindow extends ProgramWindow
14+
{
15+
private int y = 35;
16+
private String[] tiles = {"Batgirl1a.png",
17+
"Batgirl1b.png",
18+
"Batgirl1c.png",
19+
"Batgirl2a.png",
20+
"Batgirl2b.png",
21+
"Batgirl2c.png",
22+
"Batgirl3a.png",
23+
"Batgirl3b.png",
24+
"Batgirl3c.png" };
25+
public PuzzleWindow(String title)
26+
{
27+
super(title);
28+
}
29+
// @Override
30+
// public void paint(Graphics g)
31+
// {
32+
// super.paint(g);
33+
// for (int i = 0; i < 8; i++)
34+
// {
35+
// if (i < 3)
36+
// {
37+
// Tile t = new Tile(tiles[i], 35, y + (127 * i));
38+
// t.paint((Graphics2D) g, this);
39+
// //drawTile(g, tiles[i], 35, 35 + (127 * i));
40+
// }
41+
// else if (i < 6)
42+
// drawTile((Graphics2D) g, tiles[i], 162, y + (127 * (i - 3)));
43+
// else
44+
// {
45+
// drawTile((Graphics2D) g, tiles[i], 289, y + (127 * (i - 6)));
46+
// }
47+
// }
48+
// }
49+
private void drawTile(Graphics2D g, String tile, int x, int y)
50+
{
51+
URL imagePicture = this.getClass().getResource(tile);
52+
Image img = new ImageIcon(imagePicture).getImage();
53+
g.drawImage(img, x, y, 122, 122, null);
54+
}
55+
@Override
56+
public void update(Graphics g)
57+
{
58+
super.update(g);
59+
Calendar c = Calendar.getInstance();
60+
long l = c.getTimeInMillis();
61+
long m = l % 1000;
62+
if (m == 0)
63+
{
64+
y += 20;
65+
}
66+
for (int i = 0; i < 8; i++)
67+
{
68+
if (i < 3)
69+
{
70+
Tile t = new Tile(tiles[i], 35, y + (127 * i));
71+
t.paint((Graphics2D) g, this);
72+
//drawTile(g, tiles[i], 35, 35 + (127 * i));
73+
}
74+
else if (i < 6)
75+
drawTile((Graphics2D) g, tiles[i], 162, y + (127 * (i - 3)));
76+
else
77+
{
78+
drawTile((Graphics2D) g, tiles[i], 289, y + (127 * (i - 6)));
79+
}
80+
}
81+
}
82+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.teachingkidsprogramming.section08tdd;
2+
3+
import java.awt.Graphics2D;
4+
import java.awt.Image;
5+
import java.net.URL;
6+
7+
import javax.swing.ImageIcon;
8+
import javax.swing.JPanel;
9+
10+
import org.teachingextensions.logo.Paintable;
11+
12+
public class Tile implements Paintable
13+
{
14+
private String image;
15+
private int x;
16+
private int y;
17+
private int w = 122;
18+
private int h = 122;
19+
public Tile(String image, int x, int y)
20+
{
21+
this.image = image;
22+
this.setX(x);
23+
this.setY(y);
24+
}
25+
@Override
26+
public void paint(Graphics2D g, JPanel caller)
27+
{
28+
URL imagePicture = this.getClass().getResource(this.image);
29+
Image img = new ImageIcon(imagePicture).getImage();
30+
g.drawImage(img, getX(), getY(), w, h, null);
31+
}
32+
private int getX()
33+
{
34+
return x;
35+
}
36+
private void setX(int x)
37+
{
38+
this.x = x;
39+
}
40+
private int getY()
41+
{
42+
return y;
43+
}
44+
private void setY(int y)
45+
{
46+
this.y = y;
47+
}
48+
}
49+
// use 're-paint' over and over on each move (use awt to loop)

0 commit comments

Comments
 (0)