public void runGame() throws IOException {
		// nameInitialisation();
		fieldsInitialisation();

		boolean finishGame = false;
		
		while (finishGame == false) {
			printCurrentStatus();
			String choise = getChoise();

			int x, y;
			try {
				y = Character.getNumericValue(choise.charAt(2));
				x = Character.getNumericValue(choise.charAt(0));

				if (x >= 0 && x < 4 && y < 4 && x >= 0) {
					try {
						gameState = gameInstance.makeMove(x, y);
					} catch (CellAlreadyTakeException e) {
						System.out.println(e.getMessage());
						continue;
					}
				}
			} catch (StringIndexOutOfBoundsException e) {
				checkUserCommand(choise);
			} catch (IndexOutOfBoundsException e) {
				System.out.println("Index out of bound");
			}

			// Checks game state
			if (gameState != GameState.PLAYING) {
				System.out.println(printFinishGameState(gameState));
				finishGame = true; // finishes the game
			}
		}
	}