We are about to switch to a new forum software. Until then we have removed the registration on this forum.
I did a little clean up and change the code to make it shorter. I just want to swap the tile if and only if they are consecutive to each other but not in the diagonals. I used a different one before and it works fine. Please help.
Here's the code:
Game class
private Tile tile1,tile2;
private Vector v1;
public void mousePressed(MouseEvent e) {
v1 = new Vector(e.getX(),e.getY());
if(tile1 == null && tile2 == null) {
tile1 = grid.getTile(v1.y / tileSize,v1.x / tileSize);
}else if(tile1 != null) {
tile2 = grid.getTile(v1.y / tileSize,v1.x / tileSize);
if(tile1.canSwap(tile2)) {
tile1.swap(tile2);
System.out.println("Swapping " + tile1 + " with " + tile2);
}
tile1 = tile2 = null;
}
}
Tile class
public boolean canSwap(Tile other) {
int dr = Math.abs(row - other.row);
int dc = Math.abs(col - other.col);
return (dr == 1 && dc == 0) || (dc == 1 && dr == 0);
}
public void swap(Tile other) {
Tile temp = Tile.copy(this);
this.row = other.row;
this.col = other.col;
this.candy = other.candy;
other.row = temp.row;
other.col = temp.col;
other.candy = temp.candy;
}
I don't get what's wrong with my code. Sometimes it work though. You can check all my source code on my GitHub
Answers
And please check this too. Maybe you can solve that problem of mine. :D
this is a processing forum. i see a java project...
But it's the same Java right. I think somebody could help :-S
with a processing project i can take your code and paste it into my pde editor and it'll run
with your java i have to work out how to compile and run it. you've not provided anything like a makefile or a pom so i can't run your code. if i can run it, i can't debug it.
@xxMrPHDxx If it should be easy to make an MCVE from this, could you do it please?
It's an eclipse project. I think you can simply pull it off from my repository and run the code, am I right? Or maybe you guys know some forum I can ask about general java code?
http://www.Java-Gaming.org/
Thank you @GoToLoop for the link. Anyway, I have found the problem with my code.
I shouldn't interchange the row and col of the tiles.
Like this:
I just need to change the candy between the two tiles. My mistake :D