Wie kann ich ein ganz grundlegendes Navigationssystem in Java umsetzen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Oh die Aufgabe die du dir gesucht hast ist sehr cool. Warum? weil es 1000 Wege gibt um daran zu gehen und das Problem zu lösen.

Du kannst z.b dran gehen in dem du das Feld als Graphen System betrachtest und die Graphen Algorithmen wie Diijkstra verwendest.

Da dich KI zu interessieren scheint kannst dir alternativ natürlich auch die Klassiker wie Tic Tac Toe anschauen. Dann wären Dinge wie der Min-Max Algorithmus für dich interessant. (Da bist du dann auch ganz schnell tief drin wenn du dann zu spielen wie 4 Gewinnt weiter gehst.)

per kürzestem Weg: um deinen Start werden herum die Felder mit aufsteigenden Nummern markiert; immer die 4 drumrum, wenn es da weiter geht mit z.B. der 1, dann gehst du alle Felder durch und guckst nach der Eins und testest die umliegenden Felder der 1 auf Leersein und setzt ggf. eine 2 usw. bis du das Ende erreichst. Der Weg ist nun vom Ende immer absteigend um 1 bis zum Start :D

http://img5.fotos-hochladen.net/uploads/minesweeperhit2yvnm7k.gif

Hatte ich mal für eine Schülprojektpräsentation (leicht anderes Thema) gebastelt (ist leicht langsam, damit man nebenbei das erklären kann :))

Schau dir mal den A* Algorithmus an

c++ lineare Suche?

ich muss eine klasse ergänzen um die Methode seqsuch(..) fur die sequentielle suche nach einer ganzen Zahl im Feld Die Methode erhält die gesuchte Zahl als parameter wir die Zahl gefunden wird der Index der gefundenen Zahl zurückgeliefert oder -1 wenn die Zahl nicht gefunden wird. kann jemand mir helfen es geht nicht ?

#include <iostream>

#include <cstdlib>

#include <conio.h>

#include <ctime>

using namespace std;

class CZahlen{

private:

  int maxZuf;

  int groesse;

  int anzahl;

  int feld[5000];

public:

  void start()

  {

    anzahl = 0;

    groesse = 5000;

    maxZuf = 100000;

    for(int i= groesse; i>0; i--) feld[i]=0;

  }

  void zufallszahlen(int gz){

    if(gz>groesse)

    {

      cout << "Fehler das Array ist nicht groß genug!" << endl;

      getch();

    }

    else{

      for(int i=0; i<gz;i++){

        feld[i]=rand()%(maxZuf+1);

        anzahl = i;

      }

    }

  }

  void ausgeben()

  {

    if(anzahl==0)

      cout << "Das Array ist leer!" << endl;

    for(int i=0; i<anzahl; i++)

      cout << feld[i] << ", ";

  }

  int seqSuch(int x)

  {

    int pos=0;

    bool gefunden=false;

    do

    {

      if(feld[pos]==x)

      {

        gefunden=true;

      }

    }while (gefunden=false && pos<anzahl);

    if(gefunden=true)

    {

      return pos;

    }

    else

    {

      return -1;

    }

  }

};

int main()

{

  srand(time(NULL));

  CZahlen z1,test;

  z1.start();

  z1.zufallszahlen(10);

  z1.ausgeben();

  cout<<endl;

  z1.zufallszahlen(20);

  z1.ausgeben();

  cout<<endl;

  

  cout<<z1.seqSuch(8);

  cout<< "-- Ende --" <<endl;

}

...zur Frage

Java: Methodenaufruf in einem Object-Array?

Guten Tag,

ich habe ein Spielfeld, welches durch ein Object-Array dargestellt wird. Der Spieler wird durch ein P dargestellt und hat am Anfang die Positionen x und y, welche ich beim Einlesen mit BufferedReader bestimmt habe.

Beispielcode:

abstract class Area {
    public boolean canMove();
}



class A extends Area {
    public boolean canMove() {...}
}



class B extends Area implements InterF {
    public boolean canMove() {...}
    public void trigger() {...}
}



interface InterF {
    public void trigger();
}


class Map {
    Area[][] area;
    ... 
    private void build {
         for (int y = 0; y < area.length; y++){
            for (int x = 0; x < area[y].length; x++) {
                 switch (area[y][x]) {
                    case A: 
                        area[y][x] = new A(); 
                        break;
                    case B: 
                        area[y][x] = new B(); 
                        break;
            }
        }
}

Wenn ich jetzt meinen Spieler in dem Array bewege, wie kann ich wissen, welches Object sich in dem Array-Feld [y][x] befindet (A oder B) und wie kann ich dann die Methode canMove() ausführen und ggf trigger() aus B?

...zur Frage

Was möchtest Du wissen?