Hallo liebe Javaisten,
gerne möchte ich mich mit einem Problem an euch wenden. Ich bin Java-Neuling und versuche hier ein Programm ala Hamstersimulator zu programmieren.
In dem Programm geht es um mehrere Spielfiguren, die sich zufällig auf einem Spielfeld bewegen sollen. Diese sollen dabei Eigenschaften, wie zum Beispiel Lebenspunkte, Größe, Mana, wasauchimmer haben. In meinem bisherigen Quelltext habe ich es so weit gebracht, dass sich ein Spieler namens "X" in beispielsweise 30 Zügen zufällig bewegt :applaus: . Die zufällige Bewegung macht meiner Meinung nach keine Probleme. Was mir problematisch erscheint, ist dem "X" eine irgendwie geartete Eigenschaft zuzuordnen. Am Ende stelle ich mir sowas wie "player_xyz.move()" vor ???:L .
Habt ihr da eine Idee, wie ich das möglicherweise umsetzen könnte?
Vielen herzlichen Dank!
Fivo
Anbei der Quelltext:
gerne möchte ich mich mit einem Problem an euch wenden. Ich bin Java-Neuling und versuche hier ein Programm ala Hamstersimulator zu programmieren.
In dem Programm geht es um mehrere Spielfiguren, die sich zufällig auf einem Spielfeld bewegen sollen. Diese sollen dabei Eigenschaften, wie zum Beispiel Lebenspunkte, Größe, Mana, wasauchimmer haben. In meinem bisherigen Quelltext habe ich es so weit gebracht, dass sich ein Spieler namens "X" in beispielsweise 30 Zügen zufällig bewegt :applaus: . Die zufällige Bewegung macht meiner Meinung nach keine Probleme. Was mir problematisch erscheint, ist dem "X" eine irgendwie geartete Eigenschaft zuzuordnen. Am Ende stelle ich mir sowas wie "player_xyz.move()" vor ???:L .
Habt ihr da eine Idee, wie ich das möglicherweise umsetzen könnte?
Vielen herzlichen Dank!
Fivo
Anbei der Quelltext:
Java:
package movement_0_1;
import static java.lang.Math.round;
import java.util.Timer;
import java.util.TimerTask;
public class Bewegung {
public static Timer timer;
public static TimerTask timertask;
static int q = 0; //Zählvariable für den Timer
static int p = 0; //Zufallszahl für Wahrscheinlichkeit der Bewgungsrichtung
static int x_max = 5; //Maximale Feldgröße in x-Richtung (horizontal)
static int y_max = 5; //Maximale Feldgröße in y-Richtung (vertikal)
static int x =round(x_max/2); //Anfangsposition in x-Richtung Spieler "X"
static int y =round(y_max/2); //Anfangsposition in y-Richtung Spieler "X"
static boolean stop = false;
static String[][] felder = new String [y_max+1][x_max+1]; //Erstellen des Feldes
//Spielfeld initialisierung und setzen aller Felder auf 0
static void playground(){
for (int i=0; i< felder.length; ++i) // Zeile
{
for (int j=0; j<felder[0].length; ++j) // Spalte
{
felder[i][j]=".";
felder[round(y_max/2)][round(x_max/2)]="X";
System.out.print(felder[i][j]);
}
System.out.println();
}
}
static void up(){
if (y-1 < 0)
System.out.println("Außerhalb des Bereiches!");
else
{
updateGround(y,x,".");
y--;
updateGround(y,x,"X"); // macht probleme, wenn wir mehrere (verschiedene) X's haben
drawGround();
}
}
static void down(){
if (y+1 > y_max)
System.out.println("Außerhalb des Bereiches!");
else
{
updateGround(y,x,".");
y++;
updateGround(y,x,"X");
drawGround();
}
}
static void right(){
if (x+1 > x_max)
System.out.println("Außerhalb des Bereiches!");
else
{
updateGround(y,x,".");
x++;
updateGround(y,x,"X");
drawGround();
}
}
static void left(){
if (x-1 < 0)
System.out.println("Außerhalb des Bereiches!");
else
{
updateGround(y,x,".");
x--;
updateGround(y,x,"X");
drawGround();
}
}
public static void start() {
System.out.println("Fuer Start = 1");
int Richtung = new java.util.Scanner( System.in ).nextInt();
if (Richtung == 1) timerStarten(1000);
}
public static void timerStarten(long intervall){
if(timer==null){
timer = new Timer();
timertask = new TimerTask()
{
public void run()
{
timerAction();
}
};
timer.schedule(timertask, 0, intervall);
}
}
public static void timerStoppen(){
if(timer!=null)
{
timertask.cancel();
timer.cancel();
timertask=null;
timer=null;
}
}
public static void timerAction() {
if (q==30) timerStoppen();
else
{
q++;
move();
}
}
public static void move(){
p = (int) (Math.random()* 20);
if (p <= 5) {
up();
// updatePos();
}
if (p > 5 && p <= 10) {
down();
// updatePos();
}
if (p > 10 && p <= 15) {
right();
// updatePos();
}
if (p > 15 && p <= 20) {
left();
// updatePos();
}
}
//Ausgabe der aktuellen Koordinaten x/y
static void updatePos(){
System.out.println("x: " +x + ", y: " +y);
// System.out.println("p = " +p);
}
//Setzen des Wertes im Array "." = leer, "X" = Spieler
static void updateGround(int y,int x, String player){
felder[y][x] = player; //was passiert hier bei mehreren X's ??
}
//Zeichnung der Matrix
static void drawGround(){
for (int i=0; i< felder.length; ++i) // Zeile
{
for (int j=0; j<felder[0].length; ++j) // Spalte
{
System.out.print(felder[i][j]);
}
System.out.println();
}
System.out.println();
}
public static void main(String[] args) {
playground();
start();
}
}
Zuletzt bearbeitet: