Index: src/com/medievaltech/advancewars/GameView.java
===================================================================
--- src/com/medievaltech/advancewars/GameView.java	(revision 6a639f78980344c51b6264c59bd408e52ed8630f)
+++ src/com/medievaltech/advancewars/GameView.java	(revision b97a61801c2efdfad66c28c6dcde99b537243f98)
@@ -61,5 +61,4 @@
         private com.medievaltech.gui.Window wndMainMenu, wndBattleMap;
         private Unit selectedUnit;
-        private boolean test = false;
         
         public DrawingThread(SurfaceHolder surfaceHolder, Context context, Handler handler) {
@@ -111,5 +110,5 @@
             Tile oceanTile = new Tile(mTilePaint2);
             
-            mMap = new Map(grassTile, 6, 8);
+            mMap = new Map(grassTile, 6, 8, new Point(10, 25));
             
             boolean land = true;
@@ -127,7 +126,5 @@
             
             mMap.getTile(2, 3).addUnit(new Soldier(mUnitPaint));
-            mMap.getTile(5, 7).addUnit(new Soldier(mUnitPaint));
-            
-            selectedUnit = mMap.getTile(2, 3).currentUnit;
+            mMap.getTile(5, 6).addUnit(new Soldier(mUnitPaint));
             
             mGameState = GameState.MAIN_MENU;
@@ -350,15 +347,14 @@
         		mTextPaint.setTextSize(12);
             	
-            	mMap.draw(canvas, 10, 25);
+            	mMap.draw(canvas);
             	
-            	for(Point p : selectedUnit.getMovementRange()) {
-            		canvas.drawRect(p.x*50+10, p.y*50+25, p.x*50+50+10, p.y*50+50+25, mSelectionPaint);
-            		if(!test)
-            			Log.i("AdvanceWars", "("+p.x+","+p.y+")");
+            	if(selectedUnit != null) {
+	            	for(Point p : selectedUnit.getMovementRange()) {
+	            		canvas.drawRect(p.x*50+10, p.y*50+25, p.x*50+50+10, p.y*50+50+25, mSelectionPaint);
+	            	}
             	}
-            	test = true;
             	
-            	text = "Advance Wars grid test";
-            	canvas.drawText(text, 0, 450-(metrics.ascent+metrics.descent)/2, mTextPaint);
+            	mMap.drawUnits(canvas);
+            	
         		break;
         	}
@@ -432,5 +428,12 @@
     		case BATTLE_MAP:
     			Log.i("AdvanceWars", "Touch event detected on battle map");
-    			thread.mGameState = GameState.MAIN_MENU;
+    			
+    			if(event.getX() >= thread.mMap.offset.x && event.getY() >= thread.mMap.offset.y) {
+    				int x = ((int)event.getX() - thread.mMap.offset.x) / 50;
+    				int y = ((int)event.getY() - thread.mMap.offset.y) / 50;
+    				
+    				thread.selectedUnit = thread.mMap.getTile(x, y).currentUnit;
+    			}
+    			
     			break;
     		}
Index: src/com/medievaltech/game/Map.java
===================================================================
--- src/com/medievaltech/game/Map.java	(revision 6a639f78980344c51b6264c59bd408e52ed8630f)
+++ src/com/medievaltech/game/Map.java	(revision b97a61801c2efdfad66c28c6dcde99b537243f98)
@@ -6,11 +6,14 @@
 public class Map {
 	private Tile[][] grid;
+	public Point offset;
 	
-	public Map(int width, int height) {
+	public Map(int width, int height, Point offset) {
 		grid = new Tile[width][height];
+		this.offset = offset;
 	}
 	
-	public Map(Tile t, int width, int height) {
+	public Map(Tile t, int width, int height, Point offset) {
 		grid = new Tile[width][height];
+		this.offset = offset;
 		
 		for(int x=0; x<getWidth(); x++)
@@ -39,8 +42,14 @@
 	}
 	
-	public void draw(Canvas c, int xStart, int yStart) {
+	public void draw(Canvas c) {
 		for(int x=0; x<getWidth(); x++)
 			for(int y=0; y<getHeight(); y++)
-				grid[x][y].draw(c, xStart+50*x, yStart+50*y);
+				grid[x][y].draw(c, offset.x+50*x, offset.y+50*y);
+	}
+	
+	public void drawUnits(Canvas c) {
+		for(int x=0; x<getWidth(); x++)
+			for(int y=0; y<getHeight(); y++)
+				grid[x][y].drawUnit(c, offset.x+50*x, offset.y+50*y);
 	}
 }
Index: src/com/medievaltech/game/Tile.java
===================================================================
--- src/com/medievaltech/game/Tile.java	(revision 6a639f78980344c51b6264c59bd408e52ed8630f)
+++ src/com/medievaltech/game/Tile.java	(revision b97a61801c2efdfad66c28c6dcde99b537243f98)
@@ -43,5 +43,7 @@
 	public void draw(Canvas c, int x, int y) {
 		c.drawRect(x, y, x+50, y+50, p);
-		
+	}
+	
+	public void drawUnit(Canvas c, int x, int y) {
 		if(currentUnit != null)
 			currentUnit.draw(c, x+25, y+25);
Index: src/com/medievaltech/game/Unit.java
===================================================================
--- src/com/medievaltech/game/Unit.java	(revision 6a639f78980344c51b6264c59bd408e52ed8630f)
+++ src/com/medievaltech/game/Unit.java	(revision b97a61801c2efdfad66c28c6dcde99b537243f98)
@@ -60,5 +60,5 @@
 					visited[p.x-location.x+move-1][p.y-location.y+move] = true;
 				}
-				if(p.x<8 && p.x<location.x+move && !visited[p.x-location.x+move+1][p.y-location.y+move]) {
+				if(p.x<5 && p.x<location.x+move && !visited[p.x-location.x+move+1][p.y-location.y+move]) {
 					cur.add(new Point(p.x+1, p.y));
 					visited[p.x-location.x+move+1][p.y-location.y+move] = true;
@@ -68,5 +68,5 @@
 					visited[p.x-location.x+move][p.y-location.y+move-1] = true;
 				}
-				if(p.y<6 && p.y<location.y+move && !visited[p.x-location.x+move][p.y-location.y+move+1]) {
+				if(p.y<7 && p.y<location.y+move && !visited[p.x-location.x+move][p.y-location.y+move+1]) {
 					cur.add(new Point(p.x, p.y+1));
 					visited[p.x-location.x+move][p.y-location.y+move+1] = true;
