forked from thuva4/Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFloodFill.java
More file actions
100 lines (86 loc) · 2.16 KB
/
Copy pathFloodFill.java
File metadata and controls
100 lines (86 loc) · 2.16 KB
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
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class FloodFill extends JFrame{
private int myPixel = 25;
private int loops = 1;
public FloodFill() {
KeyListener listener = new MyKeyListener();
addKeyListener(listener);
setFocusable(true);
}
private void drawGrid(Graphics g){
g.setColor(Color.white);
for(int i=0; i < 500; i+=myPixel){
g.drawLine(0, i, 500, i);
g.drawLine(i, 0, i, 500);
}
}
private Color[][] fill(int x, int y, int loops){
Color[][] toFill = new Color[20][20];
toFill = floodFill(x, y, toFill, loops);
return toFill;
}
private Color[][] floodFill(int x, int y, Color[][] toFill, int loops){
if(loops <= 0){
return toFill;
}
if(x < 3 || x >= 17 || y < 3 || y >= 17){
return toFill;
}
if(toFill[x][y] != null && (!toFill[x][y].equals(Color.red))){
return toFill;
}
else{
toFill[x][y] = Color.red;
toFill = floodFill(x+1, y, toFill, loops-1);
toFill = floodFill(x, y+1, toFill, loops-1);
toFill = floodFill(x-1, y, toFill, loops-1);
toFill = floodFill(x, y-1, toFill, loops-1);
}
return toFill;
}
private void drawFill(Graphics g, Color[][] toFill){
for(int i=0; i < toFill.length; i++){
for(int j=0; j< toFill[i].length; j++){
g.setColor(toFill[i][j]);
g.fillRect(i*myPixel, j*myPixel, myPixel, myPixel);
g.setColor(Color.black);
}
}
}
public void paint(Graphics g){
Color[][] toFill = fill(10,10,loops);
drawFill(g, toFill);
drawGrid(g);
repaint();
}
public static void main(String[] args){
FloodFill frame = new FloodFill();
frame.setTitle("Flood Fill");
frame.setSize(500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class MyKeyListener implements KeyListener{
@Override
public void keyPressed(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
if(arg0.getKeyCode() == 39){
loops++;
}
if(arg0.getKeyCode() == 37){
loops--;
}
System.out.println(loops);
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
}