@CyborgBeta : ja cool, Danke…werde ich gleich mal umsetzen und mich da reindenken.
Hier wer von Euch eventuell Interesse hat:
ich bin im Buch Java ist eine Insel gerade bei Kapitel 3.5. ZZZZZnake…
Das ist ein Spiel, hier Der Link:
http://openbook.galileocomputing.de/javainsel/javainsel_03_005.html#dodtpb94d3a89-43d4-45b2-90a6-a0371fb3ed23
Am Ende wird noch eine kleine Hausaufgabe gegeben:
Wer Lust hat, an der Aufgabe noch ein wenig weiter zu programmieren, der kann Folgendes tun:
Geht der Spieler über das Gold, soll es vom Spielfeld verschwinden
Statt nur einem Stück Gold soll es zwei Stücke geben.
Statt einer Schlange soll es zwei Schlangen geben.
Mit zwei Schlangen und zwei Stücken Gold kann es etwas eng für den Spieler werden. Er soll daher 5 Züge machen können, ohne dass die Schlangen sich bewegen.
Wenn der Spieler ein Goldstück einsammelt, soll die Länge der Schlange um eins schrumpfen.
Für Vorarbeiter: Das Programm, das bisher nur eine Methode ist, soll in verschiedene Untermethoden aufgespalten werden.
Ich möchte den Code so gestalten, dass die Schlange (welche noch aus einem Symbol besteht), wenn der Spieler Gold eingesammelt hat, einen Schritt zurückgeht. Deshalb meine Frage mit dem verschieben eines Punktes. Was mir jedoch nicht klar ist: wenn die Methode so heissen soll wie die Klasse, muss es dann zwei Klassen geben (eine für die shift methode, und eine wo der Code des Spieles drinn ist?), bzw. kann ich einen code aus mehereren Klassen schreiben ?
Gruß
*** Edit ***
@CyborgBeta : habe den Code nun eingegeben und mit javac umgesetzt, jedoch lädt der compiler die class Datei nicht:
Fehler: Hauptklasse Rect konnte nicht gefunden oder geladen werden
Habe eigentlich die Klasse aufgeführt:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
/**
*@author CB
*/
public class Rect extends Canvas {
private int width = 2;
private int height = 3;
private int x0 = 4;
private int y0 = 5;
private int x1 = x0 + width;
private int y1 = y0;
private int x2 = x0 + width;
private int y2 = y0 + height;
private int x3 = x0;
private int y3 = y0 + height;
public Rect() {
recalc();
}
public final void rescale( int a, int b ) {
this.width = this.width + a;
this.height = this.height + b;
recalc();
}
public final void shift( int a, int b ) {
this.x0 = this.x0 + a;
this.y0 = this.y0 + b;
recalc();
}
private void recalc() {
x1 = x0 + width;
y1 = y0;
x2 = x0 + width;
y2 = y0 + height;
x3 = x0;
y3 = y0 + height;
int foobar = 50;
this.setPreferredSize( new Dimension( ( x0 + width ) * foobar + 12, ( y0 + height ) * foobar + 12 ) );
}
@Override
public final void paint( Graphics g ) {
super.paint( g );
g.setColor( Color.RED );
int foobar = 50;
g.drawRect( foobar * x0, foobar * y0, foobar * width, foobar * height );
}
@Override
public String toString() {
return "Rect(" + "width=" + width + ", height=" + height + ", x0=" + x0 + ", y0=" + y0 + ", x1=" + x1 + ", y1=" + y1 + ", x2=" + x2 + ", y2=" + y2 + ", x3=" + x3 + ", y3=" + y3 + '}';
}
public static void main( String[] args ) {
Rect r = new Rect();
System.out.println( "r = " + r );
r.shift( -3, -4 );
System.out.println( "r = " + r );
JFrame jf = new JFrame( r.toString() );
jf.add(r);
jf.pack();
jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE );
jf.setVisible( true );
}
}```