Hallo Leute,
ich habe ein Programm geschrieben bei dem es um eine Spielfigur geht die sich innerhalb eines Kreises
bewegt und wobei der Spieler den Winkel und/oder den Radius ändern kann bis sich die Figur auf dem Zielfeld befindet
So jetzt zum Problem
die Methode getPosition ist als übergabe von getPositionen zur Methoode laufen gedacht wobei sie die den Array NaechstePositionen nimmt und den Spieler einen Zug machen lässt und einen Array mit nur einem wert (dem ausgewählten Spielzug) an laufen weiter gibt sodass diese der neuen Position(abhängig von r und alpha) die Spielfigur zuordnen kann
Jedoch titt das leider nicht ein ich hab es schon mit eclipse im debugmodus probiert aber da finde ich den Fehler leider nicht.
hab noch den text angefügt hoffe mir kann jemand helfen.
danke schon mal.
MAIN PROGRAMM
INTERFACE
METHODEN IMPLEMENTIERUNG
POSITIONSMETHODE
Sorry hab das mit dem Anhang nich hingekriegt
ich habe ein Programm geschrieben bei dem es um eine Spielfigur geht die sich innerhalb eines Kreises
bewegt und wobei der Spieler den Winkel und/oder den Radius ändern kann bis sich die Figur auf dem Zielfeld befindet
So jetzt zum Problem
die Methode getPosition ist als übergabe von getPositionen zur Methoode laufen gedacht wobei sie die den Array NaechstePositionen nimmt und den Spieler einen Zug machen lässt und einen Array mit nur einem wert (dem ausgewählten Spielzug) an laufen weiter gibt sodass diese der neuen Position(abhängig von r und alpha) die Spielfigur zuordnen kann
Jedoch titt das leider nicht ein ich hab es schon mit eclipse im debugmodus probiert aber da finde ich den Fehler leider nicht.
hab noch den text angefügt hoffe mir kann jemand helfen.
danke schon mal.
MAIN PROGRAMM
Java:
public abstract class Kreiseln implements ImRaumBewegen {
public static void main(String...args)
{
ImRaumBewegen a = new ImRundenRaumBewegen();
a.darstellen();
while (a.getPositionFigur()!=a.getPositionZiel())
{
a.getNaechstePositionen();
a.laufen( a.getNaechstePosition()[0]);
a.darstellen();
}
}
}
INTERFACE
Java:
public interface ImRaumBewegen {
//Gibt die Position der Figur zurück
public Position getPositionFigur();
//Gibt die Position des Ziels zurück
public Position getPositionZiel();
//Gibt die nächsten möglichen Positionen zurück
public Position[] getNaechstePositionen();
//Gibt die gewählte Position zurück
public Position[] getNaechstePosition();
//Zieht die Figur auf die neue Position
public void laufen(Position neu);
//Stellt den Raum dar
public void darstellen();
}
METHODEN IMPLEMENTIERUNG
Java:
import java.util.Scanner;
public class ImRundenRaumBewegen implements ImRaumBewegen {
private static Position PositionFigur; //Position der Figur
private static Position[] NaechstePositionen; //Mögliche Nächste Schritte
private static Position[] NaechstePosition = new Position[1]; //Nächster gewählter Schritt
//Start
private static int rStart=0;
private static int alphaStart=0;
private static Position Start = new Position(rStart, alphaStart);
//Ziel
private static int rZiel;
private static int alphaZiel;
private static Position Ziel = new Position(rZiel, alphaZiel);
private static int rMax = 20; //Kreis
private static int alphaMax = 359;
private static double[][] Kreis; // Array als Liste des aufgerollten Kreises mit: Kreis[Radius][Winkel]
private static Scanner sc = new Scanner(System.in); // Spielzug variablen
private static int Zugwunsch;
private static int Runden=0;
private static double EntfernungM;
private static double EntfernungAlpha;
//Startbedingungen
//================
//================
ImRundenRaumBewegen ()
{ //Raumerzeugung
Kreis = new double[2*rMax][2*alphaMax+1];
//Startposition
rStart = (int) Math.floor( Math.random() * rMax );
alphaStart =(int) Math.floor(Math.random()* alphaMax);
Start.r = rStart;
Start.alpha = alphaStart;
PositionFigur = Start;
//Zielposition
rZiel = (int) Math.floor( Math.random() * rMax );
alphaZiel =(int)Math.floor(Math.random()* alphaMax);
Ziel.r = rZiel;
Ziel.alpha =alphaZiel;
}
//aktuelle Position der Figur
//===========================
//===========================
public Position getPositionFigur()
{
return PositionFigur;
}
//Zielrückgabe
//============
//============
public Position getPositionZiel()
{
return Ziel;
}
//Mögliche neue Positionen
//========================
//========================
public Position[] getNaechstePositionen()
{
Position rPlus = PositionFigur;;
Position rMinus = PositionFigur;;
Position alphaPlus = PositionFigur;
Position alphaMinus = PositionFigur;;
Position rAlphaPlus = PositionFigur;;
Position rPlusAlphaMinus = PositionFigur;;
Position rAlphaMinus = PositionFigur;;
Position rMinusAlphaPlus = PositionFigur;;
// Radius vergrößern
if (PositionFigur.r != 2*rMax )
rPlus.r =PositionFigur.r +1;
// Radius verkleinern
if (PositionFigur.r != 0)
rMinus.r = PositionFigur.r -1;
// Alpha vergrößern
if (PositionFigur.alpha !=2*alphaMax+1 )
alphaPlus.alpha = PositionFigur.alpha +1;
else
alphaPlus.alpha = 0;
// Alpha verkleinern
if (PositionFigur.alpha != 0)
alphaMinus.alpha = PositionFigur.alpha -1;
else
alphaMinus.alpha = 2*alphaMax+1;
// Radius und Alpha vergrößern
if (PositionFigur.r != 2*rMax && PositionFigur.alpha !=2*alphaMax+1 )
{ // Nicht bei 364.5°
rAlphaPlus.r = PositionFigur.r +1;
rAlphaPlus.alpha = PositionFigur.alpha +1;
}else{
if (PositionFigur.r != 2*rMax && PositionFigur.alpha ==2*alphaMax+1)
{// überschreitung Alphamax zu 0°
rAlphaPlus.r = PositionFigur.r +1;
rAlphaPlus.alpha = 0;
}
}
// Radius vergrößern Alpha verkleinern
if (PositionFigur.r != 2*rMax &&PositionFigur.alpha != 0)
{ // Nicht bei 0°
rPlusAlphaMinus.r = PositionFigur.r +1;
rPlusAlphaMinus.alpha = PositionFigur.alpha -1;
}else{
if (PositionFigur.r != 2*rMax &&PositionFigur.alpha == 0)
{// bei 0° zu 364.5
rPlusAlphaMinus.r = PositionFigur.r +1;
rPlusAlphaMinus.alpha = 2*alphaMax+1;
}
}
//Radius und Alpha verkleinern
if (PositionFigur.r != 0 &&PositionFigur.alpha != 0)
{// Nicht bei 0°
rAlphaMinus.r = PositionFigur.r -1;
rAlphaMinus.alpha = PositionFigur.alpha -1;
}else{
if (PositionFigur.r != 0 &&PositionFigur.alpha == 0)
{// bei 0° zu 364.5
rAlphaMinus.r = PositionFigur.r -1;
rAlphaMinus.alpha = 2*alphaMax+1;
}
}
//Radius verkleinern Alpha vergrößern
if (PositionFigur.r != 0 && PositionFigur.alpha !=2*alphaMax+1)
{// Nicht bei 364.5°
rMinusAlphaPlus.r = PositionFigur.r -1;
rMinusAlphaPlus.alpha = PositionFigur.alpha +1;
}else{
if (PositionFigur.r != 0 && PositionFigur.alpha ==2*alphaMax+1)
{//überschreitung Alphamax zu 0°
rMinusAlphaPlus.r = PositionFigur.r -1;
rMinusAlphaPlus.alpha = 0;
}
}
NaechstePositionen = new Position[] {rPlus,rMinus,alphaPlus,alphaMinus,rAlphaPlus,rPlusAlphaMinus,rAlphaMinus,rMinusAlphaPlus};
return (NaechstePositionen);
}
//Nächste Position ermitteln
//==========================
//==========================
public Position[] getNaechstePosition()
{
System.out.println("");
System.out.println("Bitte beachten, dass beim nich möglichen Ausführen eines Zuges der Zug auf der Stelle durchgeführt wird,");
System.out.println("Welchen Weg wollen Sie gehen:");
System.out.println("1(Radius vergrößern)");
System.out.println("2(Radius verkleinern)");
System.out.println("3(Winkel vergrößern)");
System.out.println("4(Winkel verkleinern)");
System.out.println("5(Radius und Winkel vergrößern)");
System.out.println("6(Radius vergrößern Winkel verkleinern)");
System.out.println("7(Radius und Winkel verkleinern)");
System.out.println("8(Radius verkleinern Winkel vergrößern)");
Zugwunsch = sc.nextInt();
switch (Zugwunsch)
{
case(1):{NaechstePosition[0]=NaechstePositionen[0];} break;
case(2):{NaechstePosition[0]=NaechstePositionen[1];} break;
case(3):{NaechstePosition[0]=NaechstePositionen[2];} break;
case(4):{NaechstePosition[0]=NaechstePositionen[3];} break;
case(5):{NaechstePosition[0]=NaechstePositionen[4];} break;
case(6):{NaechstePosition[0]=NaechstePositionen[5];} break;
case(7):{NaechstePosition[0]=NaechstePositionen[6];} break;
case(8):{NaechstePosition[0]=NaechstePositionen[7];} break;
}
return NaechstePosition;
}
public void laufen(Position neu)
{
neu = PositionFigur;
PositionFigur = neu;
Runden++;
}
//Darstellung
//===========
//===========
public void darstellen()
{
if (PositionFigur!=Ziel)
{
EntfernungM = Math.abs(Ziel.r-PositionFigur.r);
if (Math.abs(Ziel.alpha-PositionFigur.alpha) < (alphaMax+1)/2)
EntfernungAlpha = Math.abs(Ziel.alpha-PositionFigur.alpha);
else
EntfernungAlpha = (alphaMax+1)-Math.abs(Ziel.alpha-PositionFigur.alpha);
System.out.print("Sie befinden sich bei:");
System.out.print("(");System.out.print(PositionFigur.r);System.out.print(",");System.out.print(PositionFigur.alpha);System.out.print(")");
System.out.println("");
System.out.print("Das Ziel liegt bei:");
System.out.print("(");System.out.print(Ziel.r);System.out.print(",");System.out.print(Ziel.alpha);System.out.print(")");
System.out.println("");
System.out.print("Sie sind noch ");System.out.print(EntfernungM);System.out.print(" Meter vom ziel entfernt");
System.out.println("");
System.out.print("Sie sind noch ");System.out.print(EntfernungAlpha);System.out.print(" Grad vom ziel entfernt");
}
else
{ //Ende
//====
//====
System.out.println("");
System.out.println("Sie haben das Ziel erreicht!");
System.out.printf("Sie haben ");System.out.print(Runden);System.out.print(" Rudnen gebraucht");
}
}
}
POSITIONSMETHODE
Java:
public class Position {
int r;
int alpha;
public Position(int r, int alpha) {
this.r = r;
this.alpha = alpha;
}
public int getr() {
return r;
}
public int getalpha() {
return alpha;
}
}
Sorry hab das mit dem Anhang nich hingekriegt