Я разрабатываю игру, похожую на поиск слов. Для этого я использовал AndEngine, а для отображения сетки слов использовал TiledMap. В этой игре нам нужно соединять буквы, чтобы составить слово, когда мы перетаскиваем палец, он будет рисовать линии на плитках и соединять буквы. Я могу точно рисовать линии по вертикали и горизонтали, но когда я пытаюсь провести линию по диагонали, она идет к ближайшей плитке и рисует линию от последней затронутой плитки до соседней плитки. Но когда я осторожно перехожу к диагональным плиткам, линия рисуется точно.
Может ли кто-нибудь помочь мне решить эту проблему?
e.g.
----------------
|1 2 3 4 |
|5 6 7 8 |
|9 10 11 12 |
|13 14 15 16 |
----------------
как показано выше, например.
Я могу нарисовать линию для "1234" & "159"
, это означает, что все горизонтальные и вертикальные положения работают точно. Но для "963"
это не так точно, как я рисую для горизонтали и вертикали.
case TouchEvent.ACTION_MOVE:
xMove = pSceneTouchEvent.getX();
yMove = pSceneTouchEvent.getY();
TMXLayer tmxLayer1 = mTMXTiledMap.getTMXLayers().get(0);
TMXTile tmxTile1 = tmxLayer1.getTMXTileAt(xMove, yMove);
tmxTile1.setTextureRegion(mPlayerTextureRegion);
if (tmxTile1.getTileRow() == 1 && tmxTile1.getTileColumn() == 1) {
//letter M
xMove = pSceneTouchEvent.getX();
yMove = pSceneTouchEvent.getY();
//yMove = pSceneTouchEvent.getX();
if (xMove >= (TILESQUARE * 1)+20 && yMove >= (TILESQUARE * 1)+20) {//added
yMove = (TILESQUARE * 1) + 30;//gets x-cordinate of center
xMove = (TILESQUARE * 1) + 30;//gets y-cordinate of center
Log.i("On Action Move X11", ""+xMove);
Log.i("On Action Move Y11", ""+yMove);
//tmxTile1.setTextureRegion(mPlayerTextureRegion);
if (!addedAmazeM) {
addedAmazeM = true;
System.out.println("You are in (1,1) tile");
wordArray.add("M");
HashMap<Float, Float> moveXY = new HashMap<Float, Float>();
moveXY.put(xMove, yMove);
//linePath.add(moveXY);
Point tile11Pt = new Point();
tile11Pt.x = (int) xMove;
tile11Pt.y = (int) yMove;
linePoints.add(tile11Pt);
}
}
}