hi! wir machen im erstn semester grad ne etch a sketch übung, es gibt eine EzchASketch.java:
ich kapiere nicht, wie ich den startpunkt, als firstX und firstX festlege (der soll unten links in die ecke!)!! denke, dass geht irgendwie über "max", das komischerweise auch nirgends initialisiert ist. wenn ich zahlen für x und y angebe, kann ich mich zwar der ecke links unten nähern, aber wenn ich dann für nextX und nextY andre ausdrücke einsetze verschiebt sich das! besten dank f kommentare!
[Edit by Beni: Codetags]
Code:
package sketchboard;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import horizvertidiagDrawing.DrawingInstructor;
public class EtchASketch extends JFrame {
public static int GAP = 99999;
private Graphics graphics;
int lastX = translateX(0), lastY = translateY(0);
boolean gap = false;
public EtchASketch() {
this.setTitle("Etch A Sketch: "+DrawingInstructor.getTitle());
this.setSize(700, 500);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
graphics = this.getGraphics();
graphics.setColor(Color.red);
}
private void setStartingPoint() {
lastX = DrawingInstructor.firstX(this.getWidth());
lastY = DrawingInstructor.firstY(this.getHeight());
lastX = translateX(lastX);
lastY = translateY(lastY);
}
private void drawLine() {
int x=DrawingInstructor.nextX(this.getWidth());
int y=DrawingInstructor.nextY(this.getHeight());
if (x==GAP || y==GAP)
{ gap=true; return; }
x = translateX(x);
y = translateY(y);
if (gap)
{ gap=false;
lastX = x;
lastY = y;
}
else
{ if (visible(x,y)) graphics.drawLine(lastX, lastY, x, y);
lastX = x;
lastY = y;
}
}
private int translateX(int coordinate) {
return this.getWidth()/2 + coordinate;
}
private int translateY(int coordinate) {
return this.getHeight()/2 - coordinate;
}
private boolean visible(int x, int y){
return !(x<0 || y<0 || x>this.getWidth() || y>this.getHeight());
}
public static void main(String[] args) {
EtchASketch board = new EtchASketch();
board.setStartingPoint();
while (true)
{ board.drawLine();
try{ Thread.sleep(10); }
catch (InterruptedException x) {}
}
}
}
und dann gibts noch ne DrawingInstructor.java:
package horizvertidiagDrawing;
public class DrawingInstructor {
private static int x=0, y=0;
public static String getTitle() {
return "erst diagonal, dann horizontal, dann vertikal";
}
public static int firstX(int max) {
x=???;
return x;
}
public static int firstY(int max) {
y=-???; // center of drawing panel = left bottom corner
return y;
}
public static int nextX(int max) {
x=x+3; //
return x;
}
public static int nextY(int max) {
y=x+2;
return y; //
}
}
ich kapiere nicht, wie ich den startpunkt, als firstX und firstX festlege (der soll unten links in die ecke!)!! denke, dass geht irgendwie über "max", das komischerweise auch nirgends initialisiert ist. wenn ich zahlen für x und y angebe, kann ich mich zwar der ecke links unten nähern, aber wenn ich dann für nextX und nextY andre ausdrücke einsetze verschiebt sich das! besten dank f kommentare!
[Edit by Beni: Codetags]