Help on path finding

Hello everyone!
Help me please!
Have you ever played games like Baldur's gate or Diablo or classic adventure games (like Monkey island)?
What I'm saying is:
I'm trying to implement a way to move my character, on a 2D space, to the point I clicked on.
If there is no obstacle between the start and the finish points, I can make it work pretty easily (I just let the charachter walk the straight line connecting the points).
The problem is when I introduce obstacles.
I'm trying to implement the A* algorithm for the path finding process.
Since the character and the obstacles lay on a 2D plane not divided into tiles or any sort of sub-division, it is quite hard to calculate a path.
What I thought of doing is:
when I click on a destination point, I create a 2D grid surrounding the character, at its actual position, and the destination point.
The intersections between the horizontal and the vertical lines of this grid, will be the possible nodes of the path to the destination. (I hope it's clear).
The A* will calculate the best path among these nodes, considering whether a node is reachable (i.e. not overlapping an obstacle) or not.
I still haven't implemented it, so it's just an idea, and I don't even know if it works!
Is it possible there is no other way of doing that?
How do the games I mentioned above work?
My problem is finding a way to determine the possible nodes (2D points on the 2D plane) for the A* algorithm to work on.
Please help, I'm stuck.
Any suggestion?
Thank you!
P.S: If you need me to make it more clear, I'll give it a try!

So far as I've tested it they haven't gotten stuck.
The best way I can think of to do it is with the Line2D.Double class.
- I draw a line between me and the enemy
- create two lines that are equal to that first line
- rotate the first line, from the enemy, to the left
- rotate the first line, from the enemy, to the right
- if both still intersect the obstacle, I rotate the two again
- if one of them no longer intersects the obstacle, that new line becomes my path
Once the clear path is found, I can use the endpoint of that line as the destination, rather than saying that MY coordinates are the destination. It takes a lot of math figuring so it gets messy written out, but in words it's very clean :)
For simplicity you could try:
- if he hits an obstacle do the following:
- draw a line between the entity and the center of the obstacle
- if you're on the left side of that line, make him turn left 90 degrees
- if you're on the right side, turn right 90 degrees
Based on how you're creating your obstacles you could think further how you want to do it, like tell them to move in that direction a set distance, that sort of thing.
Or you could give them set paths to follow, that's another solution, and just have them be able to aim at you freely to fire, provided that's how they attack.

Similar Messages

  • Help Using Path Finding Code

    Hi all.
    I found some open source code which implements the A Star algorithm to achieve path finding for the purpose of navigating something in a game (although it could really be used for anything). Problem is, I can't get it to work. I've e-mailed the author but no reply yet so I was hoping someone could shed some light on my situation.
    The code is meant to find a path on a 2 dimensional grid filled with obstacles using the following methods:
    PathFinder star = new PathFinder(grid);
    Path p = star.findShortest(startRow,startCol,goalRow,goalCol);
    I've made a simple Test class with a small 2D array but when I compile the code I recieve the error:
    Incompatible types.
    Found: int.
    Required: Test.Path
    on Path p = star.findShortest(1,1,2,2);
    I don't understand this error at all. The findShortest method takes 4 integers and I'm passing it 4 integers! Any ideas what this error means?
    Here's my Test class:
    import java.util.*;
    import javax.swing.plaf.basic.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import javax.swing.filechooser.*;
    import java.util.Random;
    public class Test
            public static void main(String args[])
                    Test test = new Test();
                    test.run();
           public final static class Path
                    /** 2 for down, 0 is up, 1 is right and 3 is left */
                    public int giveMove() {
                        if (size() < 2)
                            return -1;
                        Position last = (Position)positions.get(size() - 1);
                        Position forlast = (Position)positions.get(size() - 2);
                        if (forlast.col - last.col == 1)
                            return 2; //down
                        else if (forlast.col - last.col == -1)
                            return 0; //up
                        else if (forlast.row - last.row == 1)
                            return 1;//right
                        else if (forlast.row - last.row == -1)
                            return 3; //left
                        return -1;
                    /** list of positions */
                    public List positions;
                    public int getCost() { return positions.size() - 1; }
                    public int size() { return positions.size(); }
                    public void add(Object o) { positions.add(o); }
                    /** add (r,c) to the path */
                    public void add(int r, int c) {
                        positions.add(new Position(r,c));
                    /** get first position */
                    public Position head() { return (Position) positions.get(0); }
                    public Path(ArrayList positions) { this.positions = positions; }
                    public Path(Position initial) {
                        positions = new ArrayList(1);
                        positions.add(initial);
                    public Path(int cap) { positions = new ArrayList(cap); }
                    public void set(Position front, Path old) {
                        positions.add(front);
                        Iterator i = old.positions.iterator();
                        while (i.hasNext())
                            positions.add(i.next());
            /** position on the grid */
           public static final  class Position
                    public int row, col;
                    public Position(int row, int col) {
                        this.row = row; this.col = col;
            public void run()
                    System.out.println("Test");
                    PathFinder star = new PathFinder(grid);
                    for(int counter = 0; counter < grid.length; counter++)
                            for (int j=0; j < grid[counter].length; j++)
                                    grid[counter][j] = 0;
                    Path p = star.findShortest(1, 1, 2, 2);
         private static int[][] grid = new int[2][2];    
    } Here's the PathFinder class I downloaded:
    import java.util.*;
    import javax.swing.plaf.basic.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import javax.swing.filechooser.*;
    import java.util.Random;
    public final class PathFinder {
        /** the map grid to look on */
        private final int [][] grid;
        /** keep distances to each position here */
        private final int [][] distances;
        /** is gridposition (r, c) empty (empty is -1) ? */
        private boolean isEmpty(int r, int c) {
            return grid[r][c] == -1 ;
        /** pathfinder for grid */
        public PathFinder(int[][] grid) {
            this.grid = grid;
            this.distances = new int [grid.length][grid.length];
        /** clear distances */
        private void clear() {
            for (int i = 0 ; i < distances.length ; i++)
                for (int j = 0 ; j < distances.length ; j++)
    distances[i][j] = Integer.MAX_VALUE;
    /** position on the grid */
    public final static class Position {
    public int row, col;
    public Position(int row, int col) {
    this.row = row; this.col = col;
    /** path from start to a certain position */
    public final static class Path {
    /** 2 for down, 0 is up, 1 is right and 3 is left */
    public int giveMove() {
    if (size() < 2)
    return -1;
    Position last = (Position)positions.get(size() - 1);
    Position forlast = (Position)positions.get(size() - 2);
    if (forlast.col - last.col == 1)
    return 2; //down
    else if (forlast.col - last.col == -1)
    return 0; //up
    else if (forlast.row - last.row == 1)
    return 1;//right
    else if (forlast.row - last.row == -1)
    return 3; //left
    return -1;
    /** list of positions */
    public List positions;
    public int getCost() { return positions.size() - 1; }
    public int size() { return positions.size(); }
    public void add(Object o) { positions.add(o); }
    /** add (r,c) to the path */
    public void add(int r, int c) {
    positions.add(new Position(r,c));
    /** get first position */
    public Position head() { return (Position) positions.get(0); }
    public Path(ArrayList positions) { this.positions = positions; }
    public Path(Position initial) {
    positions = new ArrayList(1);
    positions.add(initial);
    public Path(int cap) { positions = new ArrayList(cap); }
    public void set(Position front, Path old) {
    positions.add(front);
    Iterator i = old.positions.iterator();
    while (i.hasNext())
    positions.add(i.next());
    /** gives the move to take for the shortest path from startRow to startCol
    * 0 up, 1 right, 2 down, 3 left
    * -1 if no move possible
    public final int findShortest
    (int startRow, int startCol, int goalRow, int goalCol) {
    clear();
    Position initial = new Position(startRow, startCol);
    //LinkedList list = new LinkedList();
    Position goal = new Position(goalRow, goalCol);
    BinaireHoop list = new BinaireHoop(200, new Path(goal), goal);
    list.add(new Path(initial));
    Position [] successors = new Position[4];
    int trie = 0;
    for ( ; ! list.isEmpty() && trie < 10000 ; trie++) {
    Path first = (Path) list.remove();
    Position firstPos = first.head();
    int r = firstPos.row; int c = firstPos.col;
    if (r == goalRow && c == goalCol) {  //goal found !             
    return first.giveMove();
    } else {
    int successorsCount = 0;
    if (isEmpty(r-1,c)) {
    successors[successorsCount++]
    = new Position(r-1, c);
    if (isEmpty(r+1,c)) {
    successors[successorsCount++]
    = new Position(r+1, c);
    if (isEmpty(r,c-1)) {
    successors[successorsCount++]
    = new Position(r, c-1);
    if (isEmpty(r,c+1)) {
    successors[successorsCount++]
    = new Position(r, c+1);
    while (successorsCount-- > 0) {
    Position succ = successors[successorsCount];
    int newPathCost = first.getCost() + 1;
    //add newPath if shorter than other path to this position
    if (distances[succ.row][succ.col] > newPathCost) { //shorter
    distances[succ.row][succ.col] = newPathCost;
    Path newPath = new Path(newPathCost + 1);
    newPath.set(succ, first);
    //add path to binary heap
    list.add(newPath);
    } // else longer: discard
    return -1;
    There's also a BinaireHoop class which the PathFinder class uses. I'll post that code if anyone thinks it's relevant but the error appears to be soley on my implementation. The Path and Position and just small subclass which for the sake of quickness I just placed into my Test class too instead of into a new class to themselves.
    Any thoughts appreciated! I would really like to get this working =)
    Thanks.

    Thanks for your reply. Doh, totally missed that one =)
    Anyway, I got the code working but it's still very buggy. I think this must just be a problem with the PathFinder class I downloaded.
    I create a 2D array
          int[][] array = {       
                                  {-1, -1, -1, -1, -1, -1, -1, -1},          
                                  {-1, -1, -1, -1, -1, -1, -1, -1},
                                  {-1, -1, -1, -1, -1, -1, -1, -1},
                                  {-1, -1, -1, -1, -1, -1, -1, -1},
                                  {-1, -1, -1, -1, -1, -1, -1, -1},
                                  {-1, -1, -1, -1, -1, -1, -1, -1},
                                  {-1, -1, -1, -1, -1, -1, -1, -1},
                                  {-1, -1, -1, -1, -1, -1, -1, -1}
                          };and choose starting and goal coordinates
    int p = star.findShortest(1, 1, 2, 2);The PathFinder will generate the coordinates to move to (I just stuck it all in a loop and updated the starting coordinates as appropriate to lead me to the goal). This is great!
    However, there seem to be a lot of bugs when I introduce "occupied squares". Basically, -1 in the array means that that square is empty whereas anything else means its full and the path finder should, in theory, generate a path around these obstacles. This isn't working correctly though.
    Sometimes a path wil be found around the obstacle, sometimes the path will go straight through it, and many times it just throws an array index out of bounds exception error!
    Anyone got any ideas? Or does anyone have any examples of a working path finder? =)
    Cheers

  • Path finding based on an image

    I know its possible to create a path finding algorithm based on an image... That is, if the color map is blue then there is water, if it is brown then there is land. So detection of land and water is not the problem.
    What I want to know is, is there an easy way to set up a path finder aside having a for loop try all the possibilities? The loop should follow logical paths rather than iterate through each turn...

    I'd try an image processing forum. This forum is typically for Java-specific issues and there might not be that many people who've done this here. Sorry I couldn't help. Have you read some image processing books?

  • Path Finder in a 2D Grid Map With Different Terrain Types

         I have been thinking for a while on path finding game algoritms and I can up with one idea witch I want to publish. The goal of my project is when I have a 2 dimensional grid map where squares can have different movement cost, like in Civilization II, to find the shortest way from one point in the map to another. I've used the Breathed First Search Engine. If you are not familiar to this search engine it is better to read about it first because I am not fcusing on it and I assume that you now how it works. You can read about it at the book "Practical Artificial Intelligence Programming in Java" writen by Mark Watson, witch is freely distributed at www.markwatson.com.
         Actually the idea of this 2D grid path finder is to use a third dimension witch have a size equal to the highest movement cost among all terrain types. This helps solving the problem with the different movement cost of the squates. By adding this abstract third dimension it is posible to use the Breadth First Search Engine.
         I this example the movementcost of a terrain type is always the same, no matter from witch square to with are you going (like in Civilization II but I haven't included roads or railroads). For example if you want to go from one square A to another square B with movement cost X (A and B are attached) you must go "up stairs" in the third dimension X - 1 times and then move to square B. But when you step on square B you are again at the lowest floor. So if you want to come back to the previous square A and it have movement cost Y first you must go floor Y and then jump in square A. And now you are again at the lowest floor at square A. When you move from one square to another you go always at the lowest floor. This is the way I handle with different movement costs.
         When you find the path to the goal point it is in 3 dimensions. So you must just project it in the 2D map and that's all you have the shortest path.
         I am sure this is not the best way to code this search engine but this is just the first scratch with no optimisation and so on. If I make a 100x100 randomly generated map it takes on my configuration(400Mhz Pentium II CPU with ASUS P2B MotherBoard on 100 MHz and 256 MB SD RAM on 133 MHz but because of my MB on 100MHz) around 1000 miliseconds (1000 miliseconds = 1 second) to find the shortest path from (1, 1) to (100, 100) witch is pretty good compare to the goTo function in Civilization II witch does not finds the shortest path at all and have made hundrets of gamers angry. This is amazing that nowadays there are so many games with bad path finding.
         This project includes:
    1. The PathFinder class witch does the jub.
    2. The Map class witch has a generator for a random map in it.
    3. The class TerrainType, every square on the map is based on this class.
    4. The class TerrainTypes witch is the set of all terrain types used in the map.
    5. The class PathFinderTest witch just test the path finder.
    To test this project put all files in one directory and run PathFinderTest.java.
    Map.java:
    import java.util.Vector;
    import java.util.Random;
    //This class just creates a random map and keeps it. I will not comment on this.
    class Map {
      //here is kept the information about the terrain types placed in the map. Where
      //every terrain type has a specific movement cost.
      private int[][] terrain;
      public TerrainTypes terrainTypes;
      private int landMass;
      private int width;
      private int height;
      private int highestMovementCost;
      public Map(int aWidth, int aHeight) {
        width = aWidth;
        height = aHeight;
        terrainTypes = new TerrainTypes();
        highestMovementCost = terrainTypes.getHighestMovementCost();
        terrain = new int[width][height];
        landMass = 0;
        generateRandomMap();
      public void clearGoalAndStartLocFromWater(int sx, int sy, int gx, int gy) {
        terrain[gx][gy] = 0;
        terrain[sx][sy] = 0;
      private void expandWater() {
        int waterConstant = 40;
        int waterExpansion = 2;
        int[][] moreWater = new int[width][height];
        Random randomizer = new Random();
        for (int t = 0; waterExpansion > t; t++) {
          for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
              if (i + 1 >= 0 && j >= 0 && i + 1 < width && j < height) {
                if (terrain[i + 1][j] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i + 1][j] = 1;
              if (i + 1 >= 0 && j - 1 >= 0 && i + 1 < width && j - 1 < height) {
                if (terrain[i + 1][j - 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i + 1][j - 1] = 1;
              if (i >= 0 && j - 1 >= 0 && i < width && j - 1 < height) {
                if (terrain[i][j - 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i][j - 1] = 1;
              if (i - 1 >= 0 && j - 1 >= 0 && i - 1 < width && j - 1 < height) {
                if (terrain[i - 1][j - 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i - 1][j - 1] = 1;
              if (i - 1 >= 0 && j >= 0 && i - 1 < width && j < height) {
                if (terrain[i - 1][j] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i - 1][j] = 1;
              if (i - 1 >= 0 && j + 1 >= 0 && i - 1 < width && j + 1 < height) {
                if (terrain[i - 1][j + 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i - 1][j + 1] = 1;
              if (i >= 0 && j + 1 >= 0 && i < width && j + 1 < height) {
                if (terrain[i][j + 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i][j + 1] = 1;
              if (i + 1 >= 0 && j + 1 >= 0 && i + 1 < width && j + 1 < height) {
                if (terrain[i + 1][j + 1] != 4) {
                  if (randomizer.nextInt(waterConstant) == 0)
                    moreWater[i + 1][j + 1] = 1;
        for (int i = 0; i < width; i++) {
          for (int j = 0; j < height; j++) {
            if (moreWater[i][j] == 1) {
              terrain[i][j] = 4;
      private void generateRandomMap() {
        Random randomizer = new Random();
        for (int i = 0; i < width; i++) {
          for (int j = 0; j < height; j++) {
            if (randomizer.nextInt(3) == 1)
              terrain[i][j] = 0;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 1;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 3;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 2;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 2;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 1;
            else if (randomizer.nextInt(2) == 1)
              terrain[i][j] = 3;
            else
              terrain[i][j] = randomizer.nextInt(5);
        expandWater();
        for (int i = 0; i < width; i++) {
          for (int j = 0; j < height; j++) {
            if (terrain[i][j] != 0)
              landMass++;
      public int getMapHeight() {
        return height;
      public int getMapWidth() {
        return width;
      public int getSquareID(int x, int y) {
        return terrain[x][y];
      public int getSquareMovementCost(int x, int y) {
        return terrainTypes.getMovementCost(terrain[x][y]);
    }PathFinder.java:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Vector;
    public class PathFinder {
      private BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
      //The array t3D[][] represents the 2D square map where t3D.leght = map width
      //and t3D[x].lenght = map width (-1 < x < t3D.leght). The third dimension
      //is refered to the square's movement cost, witch is definite by terrain.
      //The fourth dimension will be with lenght = 3. When running the search engine
      //(expanding the explored squares) this 3 values will keep the position of
      //the previous square in 3 dimension, witch are width, height and the maximum
      //movement cost among all squares.
      private int[][][][] squares3DReference;
      //Keeps information witch squares are visited.
      private boolean[][][] visitedSquares;
      private Map map;
      //this is the queue used in the Breathed First Seatch.
      private Vector queue3D;
      //Here is saved the shortest path
      private Vector path2D;
      private int highestMovementCost;
      public PathFinder(Map aMap) {
        map = aMap;
        queue3D = new Vector();
        path2D = new Vector();
        squares3DReference = new int[map.getMapWidth()][map.getMapHeight()][][];
        visitedSquares = new boolean[map.getMapWidth()][map.getMapHeight()][];
        highestMovementCost = map.terrainTypes.getHighestMovementCost();
        buildAbstract3DTerrain();
      private void buildAbstract3DTerrain() {
        for (int x = 0; x < map.getMapWidth(); x++) {
          for (int y = 0; y <map.getMapHeight(); y++) {
            int movementCost = map.terrainTypes.getMovementCost(map.getSquareID(x, y));
            if ( movementCost > 0) {
              visitedSquares[x][y] = new boolean[highestMovementCost];
              squares3DReference[x][y] = new int[highestMovementCost][3];
              for (int z = 0; z < highestMovementCost; z++) {
                for (int t = 0; t < 3; t++) {
                  squares3DReference[x][y][z][t] = -1;
      private boolean isMoveValid(int x, int y, int z, int x2, int y2, int z2) {
        if ( x < 0 || y < 0 || z < 0 || x2 < 0 || y2 < 0 || z2 < 0 || x >= map.getMapWidth() || y >= map.getMapHeight() || z >= highestMovementCost ||  x2 >= map.getMapWidth() || y2 >= map.getMapHeight() || z2 >= highestMovementCost)
          return false;
        if (map.terrainTypes.getMovementCost(map.getSquareID(x2, y2)) < 1)
          return false;
        if (visitedSquares[x2][y2][z2])
          return false;
        if (x == x2 && y == y2)
          return true;
        else {
          if (z == map.terrainTypes.getMovementCost(map.getSquareID(x2, y2)) - 1)
            return true;
          else
            return false;
      private void clearPreviousSearchData() {
        queue3D.clear();
        path2D.clear();
        for (int x = 0; x < map.getMapWidth(); x++) {
          for (int y = 0; y < map.getMapHeight(); y++) {
            if (squares3DReference[x][y] != null) {
              for (int z = 0; z < highestMovementCost; z++) {
                visitedSquares[x][y][z] = false;
                for (int t = 0; t < 3; t++) {
                  squares3DReference[x][y][z][t] = -1;
      private Vector copyPath2D() {
        Vector path = new Vector();
        for (int i = 0; i < path2D.size(); i++) {
          path.add(path2D.get(i));
        return path;
      public Vector findPath(int sX, int sY, int gX, int gY) {
        int head = 0;
        int tail = 0;
        int x = sX;
        int y = sY;
        int z = 0;
        visitedSquares[x][y][z] = true;
        mainLoop: {
          while (tail <= head) {
            int[][] moves = getPosibleMoves(x, y, z);
            for (int i = 0; i < 9; i++) {
              if (moves[i] != null) {
                squares3DReference[moves[0]][moves[i][1]][moves[i][2]][0] = x;
    squares3DReference[moves[i][0]][moves[i][1]][moves[i][2]][1] = y;
    squares3DReference[moves[i][0]][moves[i][1]][moves[i][2]][2] = z;
    queue3D.add(moves[i]);
    if (moves[i][0] == gX && moves[i][1] == gY) {
    break mainLoop;
    visitedSquares[moves[i][0]][moves[i][1]][moves[i][2]] = true;
    head++;
    if (queue3D.size() == 0 || queue3D.size() == tail)
    break mainLoop;
    int[] nextInQueue = ((int[]) queue3D.get(tail));
    x = nextInQueue[0];
    y = nextInQueue[1];
    z = nextInQueue[2];
    tail++;
    if (squares3DReference[gX][gY][0][0] == -1) {
    clearPreviousSearchData();
    return path2D;
    fillpath2D(sX, sY, gX, gY);
    Vector path = copyPath2D();
    clearPreviousSearchData();
    return path;
    private int[][] getPosibleMoves(int x, int y, int z) {
    int[][] moves = new int[9][3];
    if (isMoveValid(x, y, z, x + 1, y, 0)) {
    moves[0][0] = x + 1;
    moves[0][1] = y;
    moves[0][2] = 0;
    else
    moves[0] = null;
    if (isMoveValid(x, y, z, x + 1, y - 1, 0)) {
    moves[1][0] = x + 1;
    moves[1][1] = y - 1;
    moves[1][2] = 0;
    else
    moves[1] = null;
    if (isMoveValid(x, y, z, x, y - 1, 0)) {
    moves[2][0] = x;
    moves[2][1] = y - 1;
    moves[2][2] = 0;
    else
    moves[2] = null;
    if (isMoveValid(x, y, z, x - 1, y - 1, 0)) {
    moves[3][0] = x - 1;
    moves[3][1] = y - 1;
    moves[3][2] = 0;
    else
    moves[3] = null;
    if (isMoveValid(x, y, z, x - 1, y, 0)) {
    moves[4][0] = x - 1;
    moves[4][1] = y;
    moves[4][2] = 0;
    else
    moves[4] = null;
    if (isMoveValid(x, y, z, x - 1, y + 1, 0)) {
    moves[5][0] = x - 1;
    moves[5][1] = y + 1;
    moves[5][2] = 0;
    else
    moves[5] = null;
    if (isMoveValid(x, y, z, x, y + 1, 0)) {
    moves[6][0] = x;
    moves[6][1] = y + 1;
    moves[6][2] = 0;
    else
    moves[6] = null;
    if (isMoveValid(x, y, z, x + 1, y + 1, 0)) {
    moves[7][0] = x + 1;
    moves[7][1] = y + 1;
    moves[7][2] = 0;
    else
    moves[7] = null;
    if (isMoveValid(x, y, z, x, y, z + 1)) {
    moves[8][0] = x;
    moves[8][1] = y;
    moves[8][2] = z + 1;
    else
    moves[8] = null;
    return moves;
    private void fillpath2D(int sX, int sY, int gX, int gY) {
    int[] gLoc = {gX, gY};
    path2D.add(gLoc);
    int x = gX;
    int y = gY;
    int z = 0;
    while (x != sX || y != sY) {
    int x2 = squares3DReference[x][y][z][0];
    int y2 = squares3DReference[x][y][z][1];
    int z2 = squares3DReference[x][y][z][2];
    x = x2;
    y = y2;
    z = z2;
    if (z == 0) {
    int[] loc = {x, y};
    path2D.insertElementAt(loc, 0);
    PathFinderTest.java
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Vector;
    public class PathFinderTest {
      static BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
      static Map map;
      static int startX;
      static int startY;
      static int goalX;
      static int goalY;
      public static void main(String[] args) throws Exception {
        System.out.print("Enter map size.\nx = ");
        int width = Integer.parseInt(consoleReader.readLine());
        System.out.print("y = ");
        int height = Integer.parseInt(consoleReader.readLine());
        System.out.print("Enter strting location.\nx = ");
        startX = Integer.parseInt(consoleReader.readLine()) - 1;
        System.out.print("y = ");
        startY = Integer.parseInt(consoleReader.readLine()) - 1;
        System.out.print("Enter goal location.\nx = ");
        goalX = Integer.parseInt(consoleReader.readLine()) - 1;
        System.out.print("y = ");
        goalY = Integer.parseInt(consoleReader.readLine()) - 1;
        if (goalX < 0 || goalY < 0 || startX < 0 || startY < 0 || goalX >= width || goalY >= height || startX >= width || startY >= height) {
          System.out.println("Invalid parameters found. Program will exit");
          System.exit(0);
        map = new Map(width, height);
        map.clearGoalAndStartLocFromWater(startX, startY, goalX, goalY);
        printSolution(new Vector());
        PathFinder pathFinder = new PathFinder(map);
        long before = System.currentTimeMillis();
        Vector path = pathFinder.findPath(startX, startY, goalX, goalY);
        long after = System.currentTimeMillis();
        long time = after - before;
        printSolution(path);
        if (path.size() == 0)
          System.out.println("No path found.");
        else
          System.out.println("Path found.");
        System.out.println("Finding the path took " + time + " milliseconds");
      static void printSolution(Vector path) {
        boolean[][] pathOnMap = new boolean[map.getMapWidth()][map.getMapHeight()];
        for (int i = 0; path.size() > i; i++) {
          int[] move = (int[]) path.get(i);
          pathOnMap[move[0]][move[1]] = true;
        for (int y = 0; y < map.getMapHeight(); y++) {
          for (int x = 0; x < map.getMapWidth(); x++) {
            System.out.print(" ");
            if (pathOnMap[x][y] == false)
              System.out.print(" ");
            else
              System.out.print("0");
            if (x == startX && y == startY)
              System.out.print("S");
            else if (x == goalX && y == goalY)
              System.out.print("G");
            else
              System.out.print(map.terrainTypes.getNameFirstLetter(map.getSquareID(x, y)));
          System.out.println();
        System.out.println();
    }TerrainType.java:
    public class TerrainType {
      private int movementCost;
      private String name;
      TerrainType(int aMovementCost, String aName) {
        movementCost = aMovementCost;
        name = aName;
      public int getMovementCost() {
        return movementCost;
      public String getName() {
        return name;
      public String getNameFirstLetter() {
        return name.substring(0, 1).toUpperCase();
    }TerrainTypes.java:
    import java.util.Vector;
    public class TerrainTypes {
      //Here are saved the terrain types with the map has. ElementAt 'i' in
      //setOfTypes is represented by the number in Map.terrain[x][y] witch is
      //equal to i, were x, y are random integer as soon as they do not
      //throw ArrayIndexOutOfBoundsException. Actually this is a coding to know
      //a specific square in the map to witch terrain type is refered in setOfTypes.
      private Vector setOfTypes;
      public TerrainTypes() {
        setOfTypes = new Vector();
        setOfTypes.add(new TerrainType(1, "Plains"));
        setOfTypes.add(new TerrainType(2, "Forst"));
        setOfTypes.add(new TerrainType(3, "Jungle"));
        setOfTypes.add(new TerrainType(4, "Mountain"));
        setOfTypes.add(new TerrainType(-1, "X"));
      public int getMovementCost(int i) {
        return ((TerrainType) setOfTypes.get(i)).getMovementCost();
      public String getName(int i) {
        return ((TerrainType) setOfTypes.get(i)).getName();
      public String getNameFirstLetter(int i) {
        return ((TerrainType) setOfTypes.get(i)).getNameFirstLetter();
      public int getHighestMovementCost() {
        int max = 1;
        for (int i = 0; setOfTypes.size() > i; i++) {
          int movementCost = ((TerrainType) setOfTypes.get(i)).getMovementCost();
          if ( movementCost > 0) {
            if (max < movementCost)
              max = movementCost;
        return max;
    }I hope this program will be helpful.
    Sogartar

    Why is such a smart guy like you not using A*
    It is a general known algorithm which will find the
    optimal solution in a finite search-space (within a minimal time).
    The calculation time for the A* algorithm is influenced by two parameters:
    1 - cumulative cost
    2 - minimal expected additional cost
    The calculation of these two costs has a great influence on the
    solution.
    I think the actual problems most games experience with shortest path calculatoin are
    1 - very little time to spent calculating the shortest path
    The quickest solution might be the best for the game
    If your solution takes 1 second for the calculation of a path for one element on the board (100x100)
    What would it take for the game to calculate the path for all elements controlled by the computer ??
    If the computer controls two players which each have 50 elements to control, it would take forever...
    Don't even consider the usage of a larger board (200x200 would take 4 seconds/element when
    algorithm has complexity O(n))
    2 - low priority.
    Users tend to forgive a bad shortest path-algorithm most of the time,
    but not a bad display, bad pictures,...
    This is why most shortest-path algorithms within games were
    developed as a depth first search,
    within some earlier games this was even developed as
    a rule which went straight to the endlocation and
    takes a right/left turn when blocked by water/wall/...
    So the actual steps you should take are:
    1 - develop a normal breath-first search (to get going)
    2 - develop a normal depth-first search (to compare speed and solution with)
    3 - develop a normal dijkstra algorithm (sometimes called A)
    4 - develop a best first algorithm (called A*)
    5 - develop other AI-algorithms building upon A* (tabu-search, limited memory A*,...)
    6 - develop some other AI-algorithms (Genetic Algorithms, Simulated Annealing,...)
    7 - compare and tweak/change all search-algorithms for
    7 - a - size of maps (small versus huge)
    7 - b - optimality of the solution
    7 - c - actual usage for your game
    8 - !!! very important !!!
    Share the developed path algorithms along with remarks about speed, map-size,...
    with the rest of us. I would be very interested in such library.
    kind regards,

  • Solution: A-Star Path Finding Algorithm (games)

    Hello everyone. I have developed several A-Star implementations for games, if you come across anyone with questions relating to path finding, please direct them to [email protected]

    I'll also be directing several rich Nigerians who need your help, too, if that is OK.

  • I could not find network utility option in mavericks. i was using os x lion.there is a network utility option in utility menu.help me to find out the option in mavericks.

    i could not find network utility option in mavericks. i was using os x lion.there is a network utility option in utility menu.help me to find out the option in mavericks.

    Choose Go to Folder from the Finder's Go menu, provide /System/Library/CoreServices/Applications/ as the path, and open it.
    (109612)

  • Help me to find whats causing this crash?

    Hello there!
    After I have update my Ableton Live app, it just keeps crashing
    wherever I try to launch.
    Can someone help me to find out in the crash report what plugin/lib
    is causing this error?
    Thanks!
    Process: Live [831]
    Path: /Applications/Live 8.1 OS X/Live.app/Contents/MacOS/Live
    Identifier: com.ableton.live
    Version: 8.1 (8.1)
    Code Type: X86 (Native)
    Parent Process: launchd [78]
    Interval Since Last Report: 1852 sec
    Crashes Since Last Report: 2
    Per-App Interval Since Last Report: 6 sec
    Per-App Crashes Since Last Report: 1
    Date/Time: 2009-12-09 16:32:21.290 +0000
    OS Version: Mac OS X 10.5.8 (9L31a)
    Report Version: 6
    Anonymous UUID: 2138FAB6-CED1-4714-8F68-9E2B3367FE57
    Exception Type: EXCBADACCESS (SIGBUS)
    Exception Codes: KERNPROTECTIONFAILURE at 0x0000000000000000
    Crashed Thread: 8
    Thread 0:
    0 libSystem.B.dylib 0x96c2d286 machmsgtrap + 10
    1 libSystem.B.dylib 0x96c34a7c mach_msg + 72
    2 libSystem.B.dylib 0x96c71a85 threadpolicyset + 190
    3 ...lemony.MelodyneRewireDevice 0x15fc1a72 GNThread::setThreadPriority(int) + 100
    4 ...lemony.MelodyneRewireDevice 0x15fdfd08 GNMessagePort::registerMessagePortWithName(GNString*, GNData* ()(GNMessagePort, GNData*), int, int, GNDictionary*) + 304
    5 ...lemony.MelodyneRewireDevice 0x15f81dae GNReWire2AudioDeviceHost::create() + 172
    6 ...lemony.MelodyneRewireDevice 0x15f7ff0f RWDEFOpenDevice + 89
    7 ...opellerheads.rewire.library 0x15d3d84e 0x15d39000 + 18510
    8 ...opellerheads.rewire.library 0x15d3d9b8 0x15d39000 + 18872
    9 ...opellerheads.rewire.library 0x15d408e0 RWPUnregisterDeviceImp + 5438
    10 ...opellerheads.rewire.library 0x15d3e689 RWM2OpenDeviceImp + 57
    11 com.ableton.live 0x00e50d6f AReWireAudioInUnit::~AReWireAudioInUnit() + 4889
    12 com.ableton.live 0x00e4c301 std::rangeerror::~rangeerror() + 16113
    13 com.ableton.live 0x00e52278 AReWireAudioInUnit::~AReWireAudioInUnit() + 10274
    14 com.ableton.live 0x0120ca35 AGroupDeviceBranch::~AGroupDeviceBranch() + 18749
    15 com.ableton.live 0x0120cf6f AGroupDeviceBranch::~AGroupDeviceBranch() + 20087
    16 com.ableton.live 0x0111b9c3 AAbstractGroove::~AAbstractGroove() + 23675
    17 com.ableton.live 0x0164303f AChooserBarDefault::~AChooserBarDefault() + 72541
    18 com.ableton.live 0x01643591 AChooserBarDefault::~AChooserBarDefault() + 73903
    19 com.ableton.live 0x0148dff5 ABigBrotherView::~ABigBrotherView() + 21645
    20 com.ableton.live 0x014954d4 ABigBrotherView::~ABigBrotherView() + 51564
    21 com.ableton.live 0x0163b7d3 AChooserBarDefault::~AChooserBarDefault() + 41713
    22 com.ableton.live 0x016481c5 AChooserBarDefault::~AChooserBarDefault() + 93411
    23 com.ableton.live 0x01439577 ALetter::~ALetter() + 6785
    24 com.ableton.live 0x014398ee ALetter::~ALetter() + 7672
    25 com.ableton.live 0x01449cf7 AApplication::~AApplication() + 55527
    26 com.apple.Foundation 0x9193752c nsnotecallback + 364
    27 com.apple.CoreFoundation 0x9685547a __CFXNotificationPost + 362
    28 com.apple.CoreFoundation 0x96855753 _CFXNotificationPostNotification + 179
    29 com.apple.Foundation 0x91934680 -[NSNotificationCenter postNotificationName:object:userInfo:] + 128
    30 com.apple.Foundation 0x9193ded8 -[NSNotificationCenter postNotificationName:object:] + 56
    31 com.apple.AppKit 0x952c0df2 -[NSApplication _postDidFinishNotification] + 125
    32 com.apple.AppKit 0x952c0d01 -[NSApplication _sendFinishLaunchingNotification] + 77
    33 com.apple.AppKit 0x9523a81b -[NSApplication(NSAppleEventHandling) _handleAEOpen:] + 284
    34 com.apple.AppKit 0x9523a014 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 98
    35 com.apple.Foundation 0x9195ca9f -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 655
    36 com.apple.Foundation 0x9195c7af _NSAppleEventManagerGenericHandler + 223
    37 com.apple.AE 0x90141648 aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned long, unsigned char*) + 144
    38 com.apple.AE 0x9014157e dispatchEventAndSendReply(AEDesc const*, AEDesc*) + 44
    39 com.apple.AE 0x90141425 aeProcessAppleEvent + 177
    40 com.apple.HIToolbox 0x94a85981 AEProcessAppleEvent + 38
    41 com.apple.AppKit 0x952378e9 _DPSNextEvent + 1189
    42 com.apple.AppKit 0x95236f88 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
    43 com.apple.AppKit 0x9522ff9f -[NSApplication run] + 795
    44 com.ableton.live 0x01441a32 AApplication::~AApplication() + 22050
    45 com.ableton.live 0x01438b93 ALetter::~ALetter() + 4253
    46 com.ableton.live 0x00002a02 0x1000 + 6658
    47 com.ableton.live 0x00002929 0x1000 + 6441
    Thread 1:
    0 libSystem.B.dylib 0x96c2d2c2 semaphorewaittrap + 10
    1 com.ableton.live 0x00398ae8 OAudioMeterProcess::~OAudioMeterProcess() + 57730
    2 com.ableton.live 0x00434c1d AAbletonRpcService::~AAbletonRpcService() + 3079
    3 com.ableton.live 0x00434c41 AAbletonRpcService::~AAbletonRpcService() + 3115
    4 com.ableton.live 0x00390a47 OAudioMeterProcess::~OAudioMeterProcess() + 24801
    5 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    6 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 2:
    0 libSystem.B.dylib 0x96c2d286 machmsgtrap + 10
    1 libSystem.B.dylib 0x96c34a7c mach_msg + 72
    2 com.apple.audio.midi.CoreMIDI 0x0292ff0f XServerMachPort::ReceiveMessage(int&, void*, int&) + 101
    3 com.apple.audio.midi.CoreMIDI 0x02922477 MIDIInPortThread::Run() + 111
    4 com.apple.audio.midi.CoreMIDI 0x0292607d XThread::RunHelper(void*) + 17
    5 com.apple.audio.midi.CoreMIDI 0x029309ee CAPThread::Entry(CAPThread*) + 96
    6 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    7 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 3:
    0 libSystem.B.dylib 0x96c3446e _semwaitsignal + 10
    1 libSystem.B.dylib 0x96c5edcd pthreadcondwait$UNIX2003 + 73
    2 libGLProgrammability.dylib 0x96342b32 glvmDoWork + 162
    3 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    4 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 4:
    0 libSystem.B.dylib 0x96c2d2c2 semaphorewaittrap + 10
    1 com.ableton.live 0x00398ae8 OAudioMeterProcess::~OAudioMeterProcess() + 57730
    2 com.ableton.live 0x0003e4a3 OCallProcessor::~OCallProcessor() + 30723
    3 com.ableton.live 0x00390a47 OAudioMeterProcess::~OAudioMeterProcess() + 24801
    4 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    5 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 5:
    0 libSystem.B.dylib 0x96c2d2c2 semaphorewaittrap + 10
    1 com.ableton.live 0x00398ae8 OAudioMeterProcess::~OAudioMeterProcess() + 57730
    2 com.ableton.live 0x002d89bb NMultiSamplePlayer::TMultiSamplePartUpdateMessage::~TMultiSamplePartUpdateMessa ge() + 28689
    3 com.ableton.live 0x00390a47 OAudioMeterProcess::~OAudioMeterProcess() + 24801
    4 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    5 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 6:
    0 libSystem.B.dylib 0x96c2d286 machmsgtrap + 10
    1 libSystem.B.dylib 0x96c34a7c mach_msg + 72
    2 com.apple.CoreFoundation 0x96873e7e CFRunLoopRunSpecific + 1790
    3 com.apple.CoreFoundation 0x96874aa8 CFRunLoopRunInMode + 88
    4 com.apple.audio.CoreAudio 0x96db15f8 HALRunLoop::OwnThread(void*) + 160
    5 com.apple.audio.CoreAudio 0x96db1480 CAPThread::Entry(CAPThread*) + 96
    6 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    7 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 7:
    0 libSystem.B.dylib 0x96c2d3a6 machwaituntil + 10
    1 ...ple.CoreServices.CarbonCore 0x971f1913 MPDelayUntil + 39
    2 ...ple.CoreServices.CarbonCore 0x971f17a7 Delay + 104
    3 ...opellerheads.rewire.library 0x15d447e8 RWPUnregisterDeviceImp + 21574
    4 ...opellerheads.rewire.library 0x15d5fa5c RWPUnregisterDeviceImp + 132794
    5 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    6 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 8 Crashed:
    0 ??? 0000000000 0 + 0
    1 ...lemony.MelodyneRewireDevice 0x15fc18da GNThreadHandler(void*) + 94
    2 libSystem.B.dylib 0x96c5e155 pthreadstart + 321
    3 libSystem.B.dylib 0x96c5e012 thread_start + 34
    Thread 8 crashed with X86 Thread State (32-bit):
    eax: 0x15e02a10 ebx: 0x15fdf94c ecx: 0x15e02b84 edx: 0x15e02850
    edi: 0x15e02b80 esi: 0xb0438000 ebp: 0xb0437f38 esp: 0xb0437f0c
    ss: 0x0000001f efl: 0x00010202 eip: 0x00000000 cs: 0x00000017
    ds: 0x0000001f es: 0x0000001f fs: 0x0000001f gs: 0x00000037
    cr2: 0x00000000

    I have no idea what 'Ableton Live' is, but the thread that's crashing clearly references MelodyneRewireDevice,. A search on Melodyne turns up a slew of issues.
    This one might be your solution.
    http://support.apple.com/kb/TA25071

  • Help needed in Finding Download location for Sun One Portal 7

    Hi,
    help needed for finding download location for Sun ONE Portal 7. I tried to find in Oracle Download page ,
    http://www.oracle.com/us/sun/sun-products-map-075562.html, But unable to find.
    Please share the link for download location.
    I am totally new in Sun ONE Portal.
    Thanks,
    Edited by: 945439 on Oct 5, 2012 3:41 AM

    try edelivery.oracle.com under sun products.

  • Plz help me to find out tables and fields........based on SD,PM,FICO Module

    Hi plz help me to find out the table name and field names as i am unable to find .....In the spec am given requirements in the following pattern.
    Description          SAP-Term                                       Explaination
    1.Salesman        Equipment AC Mgr.                          VBPA2 – this is the salesman code - I need the                                                                               
    description for this.
    2.Vendor              MEPO_TOPLINE-SUPERFIELD     Vendor field is pull from me23n where the                                                                               
    condition will be that COBL-KDAUF (this is a
                                                                                    structure from me23n in item data-account
                                                                                    assignment-sales order. The number here should
                                                                                    be the corresponding contract number. This field
                                                                                    should include a multiple selection function. User                                                                               
    can put more than one description to search for.
    3. Val. Period   Val. Period Category                           Val. Period Category from va41 header-contract
        Category                                                               data. This field should include a multiple selection                                                                               
    function. User can put more than one description                                                                               
    to search for.
    4. Service Order/    CAUFVD-GSTRP/                         This should be the document date where by it is in
        Purchase Order      MEPO_TOPLINE-BEDAT          between the range the user input
        Document Date    
    5. B2B Vendor      MEPO_TOPLINE-SUPERFIELD     Vendor field is pull from me23n where the condition                                                                               
    will be that COBL-KDAUF (this is a structure from
                                                                                    me23n in item data-account assignment-sales                                                                               
    order. The number here should be the                                                                               
    corresponding contract number.
    6. B2B Cost         MEPO1211-NETPR                       This cost is pulled from PO (me23n) however take
                                                                                    note that the price will be pulled out base on line                                                                               
    item Net Price. Make sure that price is taken                                                                               
    corresponding only to the equipment tied to it.                                                                               
    Check on Number 7 to see how is the line item tied                                                                               
    to the equipment.                                                                               
    If this is in other currency please make it to SGD                                                                               
    with the exchange rate field Exchange rate                                                                               
    (MEPO1226-WKURS)
                                                                                  NOTE:: I need to know the table from which I can                                                                               
    determine the currency type as can be seen in the                                                                               
    ME23N transaction and also te exchange rate for                                                                               
    that particular currency.
    7. No of faults                                                          The service order (CAUFVD-AUFNR) created base                                                                               
    on the equipment in Number 8. This should exclude                                                                               
    the service order of type RD08. Service order can be                                                                               
    access by IW33.
    8. Faults Completed                                                This would be the number of faults (Number 13)                                                                               
    which has a system status (CAUFVD-STTXT) of                                                                               
    TECO. System status can be viewed in IW33 Sys.                                                                               
    Status. Take note service order type RD08 will be                                                                               
    excluded
    9. Time Spent on Fault   AFVGD-ISMNW                   This field is in IW41 in confirmation base on the                                                                               
    order created. This field will be the actual time                                                                               
    spent. This will correspond to the Faults                                                                               
    Completed (Number 14). This means only orders                                                                               
    with system status TECO will be pull. Take not                                                                               
    service order type RD08 will be excluded
    10. Fault Cost         RIHAUFK_LIST- DGESKOSIST   This will be the total cost for a service order which                                                                               
    have the status TECO. Those which are not TECO                                                                               
    will not be needed. This field can be obtain from                                                                               
    IW39 (standard report). Execute the report and                                                                               
    there will be a field for Total Actual Cost. You might                                                                               
    need to change the screen layout to be able to view                                                                               
    this. Take note service order type RD08 will be                                                                               
    excluded
    11. PM Hours      AFVGD-ISMNW                            This field is in IW41 in confirmation base on the
                                                                                 order created. This field will be the actual time
                                                                                 spent. This will correspond to the Faults Completed
                                                                                 This means only orders with system
                                                                                 status TECO will be pull. Take note service only
                                                                                 take order type RD08.
    12. Spare Cost   Spare part cost                              This field will be in IW33 under cost tab, and cost
                             PMCOEA-IKOSTENKGR                tab in item level. This will be the actual cost of spare
                                                                                 part after TECO. This will include all order type.
    13. Credit Note   Credit Memo                                 The programs need to pull out credit memo which is
                                                                                 reference from the contract. If there is a credit memo
                                                                                 reference from the contract then the value will be net
                                                                                 price per equipment.

    Can u tell me purpose of this spec ?
    Regards,
    pandu.

  • Can somebody help me in finding a solution or an explanation to the problem I am currently experiencing as well as others wherein we cannot connect to the iTunes store (iTunes could not connect to the store. An unknown error occurred (0x80096004))?

    Can somebody help me in finding a solution or an explanation to the problem I am currently experiencing as well as others wherein we cannot connect to the iTunes store. An error message appears and either says "iTunes could not connect to the store. An unknown error occurred (0x80096004). Make sure your network connection is active and try again" or "iTunes could not connect to the store.Make sure your network connection is active and try again." Despite the fact that my network connection is working quite fine, this problem still persists. I can say that my connection is fine because I can surf the internet and furthermore, I used to connect to the iTunes store just before this incident happened which started from April 17, 2014 and persists until today. I tried to solve the problem by following the troubleshoot procedures given in the support section of this site but it really did not solve the problem. I believe that others are experiencing this situation as well very similar to mine when it comes to the time of occurrence as I have read in the discussions in this site. Even though we have different network connections, operating systems and other specifications, we still experience the same problem, so is there really a problem with our computers or is it with the iTunes? And by the way, my computer works under Windows XP. Thanks a lot. God bless.

    Try this...
    Triple click anywhere in the line below to select it and press Ctrl+C to copy it.
    cmd /k netsh winsock reset
    Press the WinLogoKey+R to open the run dialog, then Ctrl+V to paste, then press enter/return.
    You should get something similar to this:
    Reboot the computer and the problem should be resolved.
    If it doesn't work then perhaps a full tear down and rebuild of iTunes will fix things. See Troubleshooting issues with iTunes for Windows updates for details.
    tt2

  • I actually need help but cannot find the answer. Please.......Lately when open a new tab it does not open with a blank page. I don't want to set my homepage as

    I actually need help but cannot find the answer.
    Please.......Lately when open a new tab it does not open with a blank page. I don't want to set my homepage as blank as when I first open Firefox, it automatically loads my hotmail page. But then if I open other pages I don't get a blank page. Help, please?
    Thank you.
    ''[Personal information removed by moderator. Please read [[Forum and chat rules and guidelines]], thanks.]''

    hello, please refer to [[New Tab Page – show, hide and customize top sites]] in order to switch the feature off.

  • I have 2 computers (1 Pc and 1 MAC) and 1 Iphone.The I phone is synchronised with the PC. I want to synchronised it also with my MAC, without erasing all my music and files. Someone can help me to find the answer ?

    I have 2 computers (1 Pc and 1 MAC) and 1 Iphone.The I phone is synchronised with the PC. I want to synchronised it also with my MAC, without erasing all my music and files. Someone can help me to find the answer ?
    i have already try the copy/paste thing with the ID of the file "iTunes Music Library.xml" it didn't change a thing. each time I relaunched Itunes, the ID is the first I have in the MAC.
    I have more than 5 000 files of music. I don't want to recreate one by one all my playlits.
    Many thnaks for your answers.
    Constance

    You can sync iphone with one and only one computer at a time.  If you sync to another, it will erase the current content and replace with content form the new computer.  There is no way around this.
    Put everything on one computer and sync from there.
    BTW, you posted in the Home Share forum.  Your question seems to have nothing to do with home share.

  • Please help me to find my iPad and iPhone 5C. I lost all of them last night. I set up icloud for my devices but i can't find them because they were not connect to the Internet. Please guide me other ways to find my "best friends".

    Dear Apple,
    Please help me to find my iPad Air 2 64 GB and iPhone 5C 8GB. They're in IOS 8.0 maybe...I lost all of them last night. I set up icloud for my devices but i can't find them because they were not connect to the Internet. Please guide me other ways to find my "best friends". They're very important to me. Many important files for my job in here and it has sentimental value to me. My boyfriend gave it for me so i don't want to lose them. And because i just lost my iPad Air last 3 month, and now i just bought iPad Air 2 two months ago. I'm so sad and lost. I want to catch the thief to the police so bad because they keep my bag and many other important things. I can not do anything without them. Please help me and contact me via my email or my phone. Thank you very much. Hope to receive your answer soon.

    Hey there thaovy309,
    Welcome to Apple Support Communities.
    The linked article below provides a lot of great information and suggestions that should address your concerns about your data and finding your lost or stolen iPhone 5c and iPad Air 2.
    If your iPhone, iPad, or iPod touch is lost or stolen - Apple Support
    Take care,
    -Jason

  • Hello i forgot my i cloud password..anyone can help me to find my password.i already make a new apple id..but my icloud use another account..so how to reset my iCloud account plz hel me

    hello i forgot my i cloud password..anyone can help me to find my password.i already make a new apple id..but my icloud use another account..so how to reset my iCloud account plz hel me

    Making a new Apple ID is not a good idea, since you have to reset the password for that Apple ID anyway. All of your purchases are tied to the Apple ID that the iCloud account was created under. So, you have to retrieve the password for that Apple ID in order to sign into iCloud anyway.
    Go to Manage your Apple ID, and click on the Reset Password option (Apple - My Apple ID). Sign on with the Apple ID that the iCloud account was created under, and answer the security questions. If you do not remember the answers to the Security Questions, contact Apple Support to have them reset:
    ACCOUNT SECURITY CONTACT NUMBERS
    Cheers,
    GB

  • PLEASE HELP ME TO FIND THE SOLUTION REGARDING "LOGICAL SYSTEM CHANGED"

    HAI EVERYBODY,
    PLEASE HELP ME TO FIND THE SOLUTION REGARDING "LOGICAL SYSTEM CHANGED" during the material master replication by using middleware parameters.
    step1 : i have taken SRM client 810 and named it as CHINNISRM
    step2 : i  have taken r3 client 810 and named it as CHINNIR3
    step3: During material master replication i maintained tables like crmconsum,crmrfcpar,crmparoltp in   r3   and smofparsfa in srm client and filtered the objects and loaded the objects through r3ac3,r3ac1,r3as.
    step4 : And later i have checked in r3 queues to activate the objects,but i have seen a message like  "LOGICAL SYSTEM CHANGED:SEE 588701".according to the oss instructions i have checked in CRMPRLS table in se16 in R3 .there i found out there is one logical client  named with T90CLNT810.
    oss :588701
    Solution
    There are different cases in which different forms of processing are
    required or where several options exist:
    - The logical system name of an R/3 Backend client was changed in
    current operation. In this case, the data hangs in the outbound
    queues of the R/3 Backend system as specified under point 1 of
    the symptom. In this case, the logical system name must be
    changed back to the original value. Then the outbound queues
    can be reactivated. If no data was transferred to the EBP/CRM
    server before the change, also a correctioin of the check table
    is possible.
    - The same logical system name was used again in a new client of
    an R/3 Backend system that was linked to the EBP/CRM server. In
    this case, the data is in the inbound queue of the EBP/CRM
    server with the exception GUID_FOR_LOGSYS_CHANGED. In this
    case, the queue entries which have status SYSFAIL must be rejected, however, not the entire queues. If the new client of  the R/3 Backend system you have linked has exactly the same
    data as the old client and if it is meant to replace the old
    client (that is, this was deactivated), also a correction of
    the check tables is possible. In this case, the inbound queues
    can be reactivated after the correction.
    oss:765018
    1. If the situation in your system corresponds to the situation described
    under "Reason and Prerequisites" and if symptom 1 occurs, you can
    delete the table entry from table CRMPRLS table (there is just one
    entry). Since there is no maintenance dialog for this table and you
    cannot maintain it using transaction SE16, you must use a report to
    delete it. This report is attached to this note as correction
    instructions.
    Create the report ZZ_DELETE_CRMPRLS in your system and copy the source
    code from the correction instructions. You cannot implement this
    source code using transaction SNOTE.
    You can use the report in every plug-in or plug-in basis system, even
    if it is not specified in the validity section.
    After you have run the report, you can trigger existing queues again
    in transaction SMQ1.
    2. If the situation in your system corresponds to the situation described
    under "Reason and prerequisite" and if symptom 2 occurs, you can
    delete the entry from table CRMMLSGUID (there is just one entry).
    Since there is no maintenance entry for this table and you cannot
    maintain it using transaction SE16, you must use a report to delete
    it. This report is attached to this note as correction instructions.
    If they do not yet exist, add the following messages to message class SMOF in your logon language:
    Message Message short text
    303 User &1 is not allowed to change table &2.
    304 User &1 IS not allowed to display table &2.
    305 Logical system &1 was not found in table &2.
    306 System error! The current client was not
    found in table T000.
    Create the report ZZ_DELETE_CRMMLSGUID in your system and copy the
    source code from the correction instructions. You cannot implement
    this source code using transaction SNOTE.
    You can use the report for every release of the CRM system, even if it
    is not specified in the validity section. The only exceptions are CRM
    releases with Support Package versions that are too low such as CRM
    Release 3.0 with Support Package 12.
    After you have run the report, you can trigger existing queues again
    in transaction SMQ1 of the R/3 back-end system or transaction SMQ2 of
    the CRM system.
    so what should i do to do the replication.please suggest me .untill and unless i solve my problem i cant move to the further activity.i hope you people can solve my problem.thanks in advance.
    thanks and best regards,
    n.chakradhar

    Hi chakradhar,
    Did you find a solution to your issue? We are facing a similar issue and looking to figure out how this can be resolved.
    BR// 420

Maybe you are looking for

  • 3G iPod not recognized by iTunes 7

    I installed iTunes 7 and now my 3G iPod no longer shows up in iTunes. I'm running WinXP Pro SP2, and my iPod still shows up in Explorer and can be removed with the Safely Remove Hardware wizard. The iPod functions perfectly when removed. I've tried e

  • Pass PO Customer Field to Backend System

    Hi, I added a customer field to purchase order using notes 458591 and 672960. What are the steps to transfer and save the value of the field in the SRM and in the backend system, SAP R3. We are using the extended classic scenario. Thanks a lot, Eyal.

  • Help Storing Images in rms

    Hola, Did someone get to stored sussecfully images in teh rms? I capture an image using MMAPI : snapshot() and i get a byte[] tyhat is waht I store in teh rms, but when open teh application again I get a error, I guess for the size of the picl, but I

  • Order and Quote

    Hi, In the following link: http://crmondemand.oracle.com/en/products/product-demos/index.html Go to Sales and click on the Link: Play (4 mins) In the demo, it publishes Quote in the second Diagram/Slide. However, Quotes are not found in the Vanilla o

  • Resetting "current passes" in iTunes

    Hi - I would like to change my country in iTunes after a recent move. However, iTunes won't let me do this as - according to iTunes - I have two current season passes for TV shows. However, both season passes are long finished (Mentalist season 6 and