Guten Morgen, der Aufbau ist geschafft und die Uhren erscheinen. Nur fehlt jetzt die Uhrzeit. Ich weiß nicht genau, wie ich das mit der zeitverschiebung machen muss. Aufjedenfall sollten eigentlich alle Methoden fertig sein. Ich kann euch mal den Code schicken. Dann könntet ihr mir vielleicht sagen, was ich machen muss, damit die Uhrzeit gestellt wird.
[CODE lang="java" title="Analogszene (Hauptklasse)"]import sas.*;
import java.awt.Color;
public class Analogszene
{
public View view;
Analoganzeige anzeigeOrtszeit;
Analoganzeige anzeigeNYZeit;
Uhrzeit ortszeit;
Uhrzeit zeitNY;
public Analogszene()
{
view = new View(890,500, "Analoguhr");
anzeigeOrtszeit = new Analoganzeige(30, 30, "Münster", Color.RED);
anzeigeNYZeit = new Analoganzeige(460, 30, "New York", Color.BLUE);
}
public void fuehreAus(){
while (!view.keyPressed('q')){
anzeigeOrtszeit.stelleZeit();
anzeigeNYZeit.stelleZeit();
view.wait(1000);
}
}
}[/CODE]
[CODE lang="java" title="Analoganzeige"]import sas.*;
import java.awt.Color;
public class Analoganzeige
{
private Rectangle anzeige;
private Ziffernblatt ziffernblatt;
private Zeiger sekunden, minuten, stunden;
Uhrzeit uhrzeit;
Text zeitText;
public Analoganzeige(double x, double y, String ort, Color color) {
anzeige = new Rectangle (x, y, 400, 500, color);
ziffernblatt = new Ziffernblatt (x, y);
sekunden = new Zeiger(x+199,y+200,2, 180);
minuten = new Zeiger(x+197.5,y+200,5,175);
stunden = new Zeiger(x+197.5,y+200,5, 130);
}
public void stelleZeit() {
stunden.stelleDich(uhrzeit.gibDrehungStunde());
minuten.stelleDich(uhrzeit.gibDrehungMinute());
stunden.stelleDich(uhrzeit.gibDrehungSekunde());
/* ZeigerStunden.turn(centerX, centerY, -lastDrehungH);
minuten.turn(centerX, centerY, -lastDrehungM);
sekunden.turn(centerX, centerY, -lastDrehungS);
lastDrehungH = uhrzeit.gibDrehungStunde();
lastDrehungM = uhrzeit.gibDrehungMinute();
lastDrehungS = uhrzeit.gibDrehungSekunde();
stunden.turn(centerX, centerY, lastDrehungH);
minuten.turn(centerX, centerY, lastDrehungM);
sekunden.turn(centerX, centerY, lastDrehungS);
*/
}
}[/CODE]
[CODE lang="java" title="Uhrzeit"]import sas.Tools;
public class Uhrzeit
{
private int verschiebung;
public Uhrzeit(int zeitverschiebung)
{
verschiebung = zeitverschiebung;
}
public void setzeZeitverschiebung(int zeitverschiebung){
verschiebung = zeitverschiebung;
}
public int gibStunde(){
return Tools.getHour()+verschiebung;
}
public int gibMinute(){
return Tools.getMinute();
}
public int gibSekunde(){
return Tools.getSecond();
}
public int gibDrehungStunde(){
return gibStunde() * (360/12) ;
}
public int gibDrehungMinute(){
return gibMinute() * (360/60);
}
public int gibDrehungSekunde(){
return gibSekunde() * (360/60);
}
}[/CODE]
[CODE lang="java" title="Ziffernblatt"]import sas.*;
import java.awt.Color;
public class Ziffernblatt
{
Circle rueckwand;
Circle umrandung;
public Ziffernblatt (double aX, double aY) {
Sprite hintergrund = new Sprite();
umrandung = new Circle (aX + 10, aY + 10, 190, Color.BLACK);
rueckwand = new Circle (aX + 15, aY + 15, 185, Color.WHITE);
hintergrund.add(umrandung);
hintergrund.add(rueckwand);
for (int i = 0; i <= 11; i++) {
Rectangle rechteck = new Rectangle (aX + 195, aY + 15,10,30);
if (i==0 || i==3 || i==6 || i==9){
rechteck.scale(0.7, 0.9);
rechteck.move (0, -6);
}
else {
rechteck.scale(0.5, 0.7);
rechteck.move (0, -6);
}
rechteck.turn(aX + 200, aY + 200, i * 30);
}
}
}[/CODE]
[CODE lang="java" title="Zeiger"]import sas.*;
import java.awt.Color;
public class Zeiger{
private Rectangle rectangle;
private double xPos, yPos, laenge;
public Zeiger (double x, double y, double breite, double höhe) {
rectangle = new Rectangle (x,y,breite,höhe);
rectangle.turn(x, y, 180);
}
public void stelleDich(double aWinkel) {
rectangle.setDirection(90);
rectangle.move (xPos, yPos+laenge/2);
rectangle.turn(xPos, yPos, -aWinkel);
}
}[/CODE]
Das ist das gesamte Programm. Irgendwo muss was fehlen, weshalb die Uhrzeit nicht angezeigt wird. Danke schonmal im vorraus.