Guten Morgen allerseits,
ich habe heute als Aufgabe erhalten eine Analoguhr zu implementieren. Eine Modellierung habe ich bereits gemacht. Siehe Anhang. Nun komme ich einfach nicht weiter und brauche dringend Hilfe. ich habe bereits die Klasse Zeiger versucht.
So soll es aussehen:
Hier mein Code:
[CODE lang="java" title="Zeiger"]
import sas.*;
import java.awt.Color;
public class Analoganzeige{
Uhrzeit uhrzeit;
Rectangle stundenzeiger;
Rectangle minutenzeiger;
Rectangle sekundenzeiger;
double mittelpunktX;
double mittelpunktY;
public Analoganzeige(Uhrzeit zeit, double xPos, double yPos, String ort, Color farbe) {
mittelpunktX = xPos + 100;
mittelpunktY = yPos + 100;
Rectangle gehauese = new Rectangle (xPos, yPos, 200, 240, farbe);
Sprite anzeige = ziffernblatt(xPos, yPos);
uhrzeit = zeit;
long l = Tools.getStartTime();
Text ortText = new Text(xPos+10, yPos+200, ort);
ortText.setFontColor(Color.WHITE);
ortText.setFontMonospaced(true, 36);
double laenge = ortText.getShapeWidth();
ortText.moveTo(xPos+(200 - laenge)/2, yPos + 200);
String s = Tools.getElapsedTimeString(l);
System.out.println(s);
}
private Sprite ziffernblatt(double xPos, double yPos) {
Sprite hintergrund = new Sprite();
Circle aussen = new Circle(xPos + 10, yPos + 10, 90, Color.BLACK);
Circle innen = new Circle(xPos + 15, yPos + 15, 85, Color.WHITE);
hintergrund.add(aussen);
hintergrund.add(innen);
//15 - Minuten anzeigen
Rectangle strich = new Rectangle(mittelpunktX-2, yPos + 15, 5, 15);
for (int i=0;i<4; i++) {
Rectangle strichNeu = strich.clone();
strichNeu.turn(mittelpunktX, mittelpunktY, 90);
strich = strichNeu;
}
Rectangle kleinerStrich = new Rectangle(mittelpunktX-1, yPos + 15, 3, 10);
kleinerStrich.turn(mittelpunktX, mittelpunktY,30);
for (int i=0;i<11; i++) {
Rectangle kleinerStrichNeu = kleinerStrich.clone();
kleinerStrichNeu.turn(mittelpunktX, mittelpunktY, 30);
kleinerStrich = kleinerStrichNeu;
}
minutenzeiger = new Rectangle(mittelpunktX - 1, mittelpunktY - 75, 3, 75, Color.BLACK);
sekundenzeiger = new Rectangle(mittelpunktX , mittelpunktY - 75, 1, 75, Color.BLACK);
stundenzeiger = new Rectangle(mittelpunktX - 1, mittelpunktY - 55, 3, 55, Color.BLACK);
return hintergrund;
}
public void setzeZeit(Uhrzeit zeit) {
uhrzeit = zeit;
int stunde = uhrzeit.gibStunde() % 12;
int minute = uhrzeit.gibMinute();
int sekunde = uhrzeit.gibSekunde();
stundenzeiger.reset();
minutenzeiger.reset();
sekundenzeiger.reset();
stundenzeiger.turn(mittelpunktX, mittelpunktY, stunde * 30 + 0.5 * minute);
minutenzeiger.turn(mittelpunktX, mittelpunktY, minute * 6);
sekundenzeiger.turn(mittelpunktX, mittelpunktY, sekunde * 6);
}
}[/CODE]
ich habe heute als Aufgabe erhalten eine Analoguhr zu implementieren. Eine Modellierung habe ich bereits gemacht. Siehe Anhang. Nun komme ich einfach nicht weiter und brauche dringend Hilfe. ich habe bereits die Klasse Zeiger versucht.
So soll es aussehen:
Hier mein Code:
[CODE lang="java" title="Zeiger"]
import sas.*;
import java.awt.Color;
public class Analoganzeige{
Uhrzeit uhrzeit;
Rectangle stundenzeiger;
Rectangle minutenzeiger;
Rectangle sekundenzeiger;
double mittelpunktX;
double mittelpunktY;
public Analoganzeige(Uhrzeit zeit, double xPos, double yPos, String ort, Color farbe) {
mittelpunktX = xPos + 100;
mittelpunktY = yPos + 100;
Rectangle gehauese = new Rectangle (xPos, yPos, 200, 240, farbe);
Sprite anzeige = ziffernblatt(xPos, yPos);
uhrzeit = zeit;
long l = Tools.getStartTime();
Text ortText = new Text(xPos+10, yPos+200, ort);
ortText.setFontColor(Color.WHITE);
ortText.setFontMonospaced(true, 36);
double laenge = ortText.getShapeWidth();
ortText.moveTo(xPos+(200 - laenge)/2, yPos + 200);
String s = Tools.getElapsedTimeString(l);
System.out.println(s);
}
private Sprite ziffernblatt(double xPos, double yPos) {
Sprite hintergrund = new Sprite();
Circle aussen = new Circle(xPos + 10, yPos + 10, 90, Color.BLACK);
Circle innen = new Circle(xPos + 15, yPos + 15, 85, Color.WHITE);
hintergrund.add(aussen);
hintergrund.add(innen);
//15 - Minuten anzeigen
Rectangle strich = new Rectangle(mittelpunktX-2, yPos + 15, 5, 15);
for (int i=0;i<4; i++) {
Rectangle strichNeu = strich.clone();
strichNeu.turn(mittelpunktX, mittelpunktY, 90);
strich = strichNeu;
}
Rectangle kleinerStrich = new Rectangle(mittelpunktX-1, yPos + 15, 3, 10);
kleinerStrich.turn(mittelpunktX, mittelpunktY,30);
for (int i=0;i<11; i++) {
Rectangle kleinerStrichNeu = kleinerStrich.clone();
kleinerStrichNeu.turn(mittelpunktX, mittelpunktY, 30);
kleinerStrich = kleinerStrichNeu;
}
minutenzeiger = new Rectangle(mittelpunktX - 1, mittelpunktY - 75, 3, 75, Color.BLACK);
sekundenzeiger = new Rectangle(mittelpunktX , mittelpunktY - 75, 1, 75, Color.BLACK);
stundenzeiger = new Rectangle(mittelpunktX - 1, mittelpunktY - 55, 3, 55, Color.BLACK);
return hintergrund;
}
public void setzeZeit(Uhrzeit zeit) {
uhrzeit = zeit;
int stunde = uhrzeit.gibStunde() % 12;
int minute = uhrzeit.gibMinute();
int sekunde = uhrzeit.gibSekunde();
stundenzeiger.reset();
minutenzeiger.reset();
sekundenzeiger.reset();
stundenzeiger.turn(mittelpunktX, mittelpunktY, stunde * 30 + 0.5 * minute);
minutenzeiger.turn(mittelpunktX, mittelpunktY, minute * 6);
sekundenzeiger.turn(mittelpunktX, mittelpunktY, sekunde * 6);
}
}[/CODE]