104 lines
2.2 KiB
Java
104 lines
2.2 KiB
Java
package lab15_observer.ex2;
|
|
|
|
public class AnalogTimer implements TimerObserver {
|
|
private final MyTimer timer;
|
|
private static final String[][] digits = {
|
|
{
|
|
"┌─┐",
|
|
"│ │",
|
|
"└─┘"
|
|
},
|
|
{
|
|
" ╷",
|
|
" │",
|
|
" ╵"
|
|
},
|
|
{
|
|
"╶─┐",
|
|
"┌─┘",
|
|
"└─╴"
|
|
},
|
|
{
|
|
"╶─┐",
|
|
" ─┤",
|
|
"╶─┘"
|
|
},
|
|
{
|
|
"╷ ╷",
|
|
"└─┤",
|
|
" ╵"
|
|
},
|
|
{
|
|
"┌─╴",
|
|
"└─┐",
|
|
"╶─┘"
|
|
},
|
|
{
|
|
"┌─╴",
|
|
"├─┐",
|
|
"└─┘"
|
|
},
|
|
{
|
|
"╶─┐",
|
|
" │",
|
|
" ╵"
|
|
},
|
|
{
|
|
"┌─┐",
|
|
"├─┤",
|
|
"└─┘"
|
|
},
|
|
{
|
|
"┌─┐",
|
|
"└─┤",
|
|
"╶─┘"
|
|
},
|
|
};
|
|
|
|
public AnalogTimer(MyTimer timer) {
|
|
this.timer = timer;
|
|
timer.registerObserver(this);
|
|
}
|
|
|
|
public void update(int hours, int minutes, int seconds) {
|
|
String[] lines = {"", "", ""};
|
|
|
|
addDigit(lines, hours / 10);
|
|
addSpace(lines);
|
|
addDigit(lines, hours % 10);
|
|
|
|
addSep(lines);
|
|
|
|
addDigit(lines, minutes / 10);
|
|
addSpace(lines);
|
|
addDigit(lines, minutes % 10);
|
|
|
|
addSep(lines);
|
|
|
|
addDigit(lines, seconds / 10);
|
|
addSpace(lines);
|
|
addDigit(lines, seconds % 10);
|
|
|
|
System.out.println(lines[0]);
|
|
System.out.println(lines[1]);
|
|
System.out.println(lines[2]);
|
|
}
|
|
|
|
private void addDigit(String[] lines, int digit) {
|
|
String[] parts = digits[digit];
|
|
for (int i = 0; i < 3; i++) {
|
|
lines[i] += parts[i];
|
|
}
|
|
}
|
|
private void addSpace(String[] lines) {
|
|
lines[0] += " ";
|
|
lines[1] += " ";
|
|
lines[2] += " ";
|
|
}
|
|
private void addSep(String[] lines) {
|
|
lines[0] += " o ";
|
|
lines[1] += " ";
|
|
lines[2] += " o ";
|
|
}
|
|
}
|