Skip to content

Commit aeb4e11

Browse files
committed
Better batgirl images
1 parent 92423aa commit aeb4e11

File tree

15 files changed

+101
-84
lines changed

15 files changed

+101
-84
lines changed
Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,96 @@
11
package org.teachingextensions.logo;
22

3-
import org.teachingextensions.approvals.lite.util.ObjectUtils;
4-
import org.teachingextensions.logo.Turtle.Animals;
5-
6-
import java.awt.*;
3+
import java.awt.BasicStroke;
4+
import java.awt.Graphics;
5+
import java.awt.Graphics2D;
6+
import java.awt.Image;
77
import java.awt.geom.AffineTransform;
88
import java.awt.geom.Line2D;
99
import java.util.ArrayList;
1010
import java.util.List;
1111

12+
import org.teachingextensions.approvals.lite.util.ObjectUtils;
13+
import org.teachingextensions.logo.Turtle.Animals;
14+
import org.teachingextensions.windows.ProgramWindow;
15+
1216
/**
1317
* Use this window when you want to put more than one turtle on the same window
1418
*/
15-
public class MultiTurtlePanel extends TurtlePanel {
16-
private static final long serialVersionUID = 1810849469483511849L;
17-
private List<Turtle> turtles = new ArrayList<Turtle>();
18-
private Image image;
19-
private Animals animal = Animals.Turtle;
20-
21-
public MultiTurtlePanel() {
19+
public class MultiTurtlePanel extends TurtlePanel
20+
{
21+
private static final long serialVersionUID = 1810849469483511849L;
22+
private List<Turtle> turtles = new ArrayList<Turtle>();
23+
private Image image;
24+
private Animals animal = Animals.Turtle;
25+
public MultiTurtlePanel()
26+
{
2227
super("So Many Turtles");
2328
this.image = loadAnimal();
2429
}
25-
2630
/**
2731
* Adds a turtle instance to a window
2832
* <p><b>Example:</b> {@code multiTurtlePanel.addTurtle(myTurtle)}</p>
2933
*
3034
* @param turtle
3135
* A turtle instance
3236
*/
33-
public void addTurtle(Turtle turtle) {
34-
if (turtle == null) {
35-
return;
36-
}
37+
public void addTurtle(Turtle turtle)
38+
{
39+
if (turtle == null) { return; }
3740
this.turtles.add(turtle);
3841
turtle.setPanel(this);
3942
}
40-
4143
@Override
42-
public void paint(Graphics g) {
43-
Graphics2D g2d = configureGraphics2D(g);
44+
public void paint(Graphics g)
45+
{
46+
Graphics2D g2d = ProgramWindow.configureGraphics2D(g);
4447
paintLines(g2d);
4548
paintTurtle(g2d);
4649
g2d.dispose();
4750
}
48-
4951
@Override
50-
public synchronized Image getImage() {
52+
public synchronized Image getImage()
53+
{
5154
return image;
5255
}
53-
5456
/**
5557
* Sets the Animal
5658
* <p><b>Example:</b> {@code multiTurtlePanel.setAnimal(animal)} </p>
5759
*
5860
* @see Animals
5961
*/
6062
@Override
61-
public synchronized void setAnimal(Animals animal) {
63+
public synchronized void setAnimal(Animals animal)
64+
{
6265
this.animal = animal;
6366
this.image = loadAnimal();
6467
}
65-
66-
private Image loadAnimal() {
68+
private Image loadAnimal()
69+
{
6770
return ObjectUtils.loadImage(MultiTurtlePanel.class, this.animal + ".png");
6871
}
69-
70-
private Graphics2D configureGraphics2D(Graphics g) {
71-
Graphics2D g2d = (Graphics2D) g.create();
72-
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
73-
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
74-
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
75-
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
76-
return g2d;
77-
}
78-
79-
private void paintLines(Graphics2D g2d) {
80-
for (Turtle turtle : turtles) {
72+
private void paintLines(Graphics2D g2d)
73+
{
74+
for (Turtle turtle : turtles)
75+
{
8176
paintTrail(g2d, turtle.getTrail());
8277
}
8378
}
84-
85-
private void paintTrail(Graphics2D g2d, LineSegment[] trail) {
86-
for (LineSegment l : trail) {
79+
private void paintTrail(Graphics2D g2d, LineSegment[] trail)
80+
{
81+
for (LineSegment l : trail)
82+
{
8783
g2d.setColor(l.getColor());
8884
g2d.setStroke(new BasicStroke(l.getWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));
8985
g2d.draw(new Line2D.Double(l.getStart().x, l.getStart().y, l.getEnd().x, l.getEnd().y));
9086
}
9187
}
92-
93-
private void paintTurtle(Graphics2D g) {
94-
for (Turtle turtle : turtles) {
95-
if (turtle.isHidden()) {
88+
private void paintTurtle(Graphics2D g)
89+
{
90+
for (Turtle turtle : turtles)
91+
{
92+
if (turtle.isHidden())
93+
{
9694
continue;
9795
}
9896
Image image = getImage();
@@ -107,8 +105,8 @@ private void paintTurtle(Graphics2D g) {
107105
g.drawImage(image, move, null);
108106
}
109107
}
110-
111-
public int getTurtleCount() {
108+
public int getTurtleCount()
109+
{
112110
return this.turtles.size();
113111
}
114112
}

src/main/java/org/teachingextensions/logo/PuzzleBoard.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.swing.JPanel;
1111

1212
import org.teachingextensions.approvals.lite.util.StringUtils;
13+
import org.teachingextensions.windows.ProgramWindow;
1314

1415
/**
1516
* Draws and animates a 9-puzzle
@@ -53,36 +54,36 @@ private static Tile[] createTiles(int[] cells)
5354
}
5455
return t;
5556
}
56-
private static void drawBorder(Graphics g)
57+
private static void drawBorder(Graphics2D g)
5758
{
5859
g.setColor(PenColors.Blues.DarkBlue);
5960
g.fillRect(20, 20, 410, 410);
6061
}
61-
private static void drawField(Graphics g)
62+
private static void drawField(Graphics2D g)
6263
{
6364
g.setColor(PenColors.Blues.SkyBlue);
6465
g.fillRect(30, 30, 386, 386);
6566
}
66-
private static void drawTiles(Graphics g, Tile[] tiles)
67+
private static void drawTiles(Graphics2D g, Tile[] tiles)
6768
{
68-
Graphics2D g2d = (Graphics2D) g.create();
6969
for (Tile tile : tiles)
7070
{
7171
if (tile == null)
7272
{
7373
continue;
7474
}
75-
tile.paint(g2d);
75+
tile.paint(g);
7676
}
77-
g2d.dispose();
7877
}
7978
@Override
8079
protected void paintComponent(Graphics g)
8180
{
8281
super.paintComponent(g);
83-
drawBorder(g);
84-
drawField(g);
85-
drawTiles(g, tiles);
82+
Graphics2D g2d = ProgramWindow.configureGraphics2D(g);
83+
drawBorder(g2d);
84+
drawField(g2d);
85+
drawTiles(g2d, tiles);
86+
g2d.dispose();
8687
}
8788
public Tile[] getTiles()
8889
{
Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,90 @@
11
package org.teachingextensions.windows;
22

3+
import java.awt.Color;
4+
import java.awt.Dimension;
5+
import java.awt.Graphics;
6+
import java.awt.Graphics2D;
7+
import java.awt.RenderingHints;
8+
import java.util.ArrayList;
9+
10+
import javax.swing.JFrame;
11+
import javax.swing.JPanel;
12+
313
import org.teachingextensions.approvals.lite.util.FrameCloser;
414
import org.teachingextensions.approvals.lite.util.WindowUtils;
515
import org.teachingextensions.logo.ImageBackground;
616
import org.teachingextensions.logo.Paintable;
717
import org.teachingextensions.logo.PenColors;
818
import org.teachingextensions.logo.VirtualProctorWeb;
919

10-
import javax.swing.*;
11-
import java.awt.*;
12-
import java.util.ArrayList;
13-
1420
/**
1521
* <img src="http://ftpmirror.your.org/pub/wikimedia/images/wikibooks/de/2/2c/JPanel_Add_JButton_PAGE_END.JPG" style="text-align: left" alt="A window image" height="50" width="75" > Program Window
1622
* allows you to change the color of the background and more...
1723
*/
1824
@SuppressWarnings({"serial"})
19-
public class ProgramWindow extends JPanel {
25+
public class ProgramWindow extends JPanel
26+
{
2027
public ArrayList<Paintable> additional = new ArrayList<>();
21-
22-
public ProgramWindow(String title) {
28+
public ProgramWindow(String title)
29+
{
2330
this();
2431
JFrame frame = new JFrame(title);
2532
frame.getContentPane().add(this);
2633
ProgramWindow.createStandardFrame(frame);
2734
}
28-
29-
public ProgramWindow() {
35+
public ProgramWindow()
36+
{
3037
setPreferredSize(new Dimension(627, 442));
3138
setColor(PenColors.Whites.White);
3239
}
33-
34-
public static void createStandardFrame(JFrame frame) {
35-
WindowUtils
36-
.testFrame(frame, new VirtualProctorWeb(), new FrameCloser());
40+
public static void createStandardFrame(JFrame frame)
41+
{
42+
WindowUtils.testFrame(frame, new VirtualProctorWeb(), new FrameCloser());
3743
}
38-
3944
@Override
40-
public void paint(Graphics g) {
45+
public void paint(Graphics g)
46+
{
4147
super.paint(g);
42-
for (Paintable p : additional) {
43-
p.paint((Graphics2D) g, this);
48+
Graphics2D g2d = configureGraphics2D(g);
49+
for (Paintable p : additional)
50+
{
51+
p.paint(g2d, this);
4452
}
53+
g2d.dispose();
4554
}
46-
47-
public void setColor(Color backgroundColor) {
55+
public void setColor(Color backgroundColor)
56+
{
4857
setBackground(backgroundColor);
4958
}
50-
51-
public void addPaintable(Paintable additional) {
59+
public void addPaintable(Paintable additional)
60+
{
5261
this.additional.add(additional);
5362
repaint();
5463
}
55-
56-
public void removePaintable() {
64+
public void removePaintable()
65+
{
5766
additional.clear();
5867
repaint();
5968
}
60-
61-
public void addMouseRightClickListener(MouseRightClickListener listener) {
69+
public void addMouseRightClickListener(MouseRightClickListener listener)
70+
{
6271
addMouseListener(new RightClickMouseAdapter(listener));
6372
}
64-
65-
public void addMouseLeftClickListener(MouseLeftClickListener listener) {
73+
public void addMouseLeftClickListener(MouseLeftClickListener listener)
74+
{
6675
addMouseListener(new LeftClickMouseAdapter(listener));
6776
}
68-
69-
public void setBackgroundImage(String url) {
77+
public void setBackgroundImage(String url)
78+
{
7079
addPaintable(new ImageBackground(url));
7180
}
81+
public static Graphics2D configureGraphics2D(Graphics g)
82+
{
83+
Graphics2D g2d = (Graphics2D) g.create();
84+
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
85+
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
86+
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
87+
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
88+
return g2d;
89+
}
7290
}

src/main/resources/Batgirl.png

100644100755
34.3 KB
Loading

src/main/resources/Batgirl1a.png

100644100755
1.9 KB
Loading

src/main/resources/Batgirl1b.png

100644100755
1.36 KB
Loading

src/main/resources/Batgirl1c.png

100644100755
1.71 KB
Loading

src/main/resources/Batgirl2a.png

100644100755
2.03 KB
Loading

src/main/resources/Batgirl2b.png

100644100755
5 KB
Loading

src/main/resources/Batgirl2c.png

100644100755
6.47 KB
Loading

0 commit comments

Comments
 (0)