Skip to content

Commit 5b35aca

Browse files
authored
Merge pull request thuva4#296 from arunans23/master
implement flood fill in java
2 parents 66dd5bd + 91d446d commit 5b35aca

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

FloodFill/FloodFill.java

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
import java.awt.Color;
2+
import java.awt.Graphics;
3+
import java.awt.event.KeyEvent;
4+
import java.awt.event.KeyListener;
5+
6+
import javax.swing.JFrame;
7+
8+
public class FloodFill extends JFrame{
9+
private int myPixel = 25;
10+
private int loops = 1;
11+
12+
public FloodFill() {
13+
KeyListener listener = new MyKeyListener();
14+
addKeyListener(listener);
15+
setFocusable(true);
16+
}
17+
18+
19+
private void drawGrid(Graphics g){
20+
g.setColor(Color.white);
21+
for(int i=0; i < 500; i+=myPixel){
22+
g.drawLine(0, i, 500, i);
23+
g.drawLine(i, 0, i, 500);
24+
}
25+
}
26+
27+
private Color[][] fill(int x, int y, int loops){
28+
Color[][] toFill = new Color[20][20];
29+
toFill = floodFill(x, y, toFill, loops);
30+
31+
return toFill;
32+
}
33+
34+
private Color[][] floodFill(int x, int y, Color[][] toFill, int loops){
35+
if(loops <= 0){
36+
return toFill;
37+
}
38+
if(x < 3 || x >= 17 || y < 3 || y >= 17){
39+
return toFill;
40+
}
41+
if(toFill[x][y] != null && (!toFill[x][y].equals(Color.red))){
42+
return toFill;
43+
}
44+
else{
45+
toFill[x][y] = Color.red;
46+
toFill = floodFill(x+1, y, toFill, loops-1);
47+
toFill = floodFill(x, y+1, toFill, loops-1);
48+
toFill = floodFill(x-1, y, toFill, loops-1);
49+
toFill = floodFill(x, y-1, toFill, loops-1);
50+
}
51+
return toFill;
52+
}
53+
54+
private void drawFill(Graphics g, Color[][] toFill){
55+
for(int i=0; i < toFill.length; i++){
56+
for(int j=0; j< toFill[i].length; j++){
57+
g.setColor(toFill[i][j]);
58+
g.fillRect(i*myPixel, j*myPixel, myPixel, myPixel);
59+
g.setColor(Color.black);
60+
}
61+
}
62+
}
63+
64+
public void paint(Graphics g){
65+
Color[][] toFill = fill(10,10,loops);
66+
drawFill(g, toFill);
67+
drawGrid(g);
68+
repaint();
69+
}
70+
71+
public static void main(String[] args){
72+
FloodFill frame = new FloodFill();
73+
frame.setTitle("Flood Fill");
74+
frame.setSize(500,500);
75+
frame.setVisible(true);
76+
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
77+
}
78+
public class MyKeyListener implements KeyListener{
79+
@Override
80+
public void keyPressed(KeyEvent arg0) {
81+
}
82+
83+
@Override
84+
public void keyReleased(KeyEvent arg0) {
85+
if(arg0.getKeyCode() == 39){
86+
loops++;
87+
}
88+
if(arg0.getKeyCode() == 37){
89+
loops--;
90+
}
91+
System.out.println(loops);
92+
}
93+
94+
@Override
95+
public void keyTyped(KeyEvent arg0) {
96+
// TODO Auto-generated method stub
97+
98+
}
99+
}
100+
}

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ ElevatorAlgorithm | :+1: | | | | | | | |
2525
Fast Fourier Transform | | | | | :+1: | | | |
2626
Fibonacci | :+1: | :+1: | | :+1: | :+1: | | :+1: | | :+1:
2727
FisherYatesShuffle | :+1: | | | | :+1: | :+1: | | :+1: |
28+
FloodFill Algorithm | :+1: | | | | | | | |
2829
Floyd'sAlgorithm | :+1: | :+1: | | | :+1: | | | |
2930
GreatestCommonDivisor | :+1: | | :+1: | :+1: | :+1: | | | |
3031
HammingDistance | :+1: | :+1: | | :+1: | | :+1: | | |

0 commit comments

Comments
 (0)