Bug 689

Summary: Garbled characters shown in user interface
Product: River-Crossing-Puzzle-Solver Reporter: tsunychau2-c
Component: UIAssignee: tsunychau2-c
Status: RESOLVED FIXED    
Severity: critical    
Priority: High    
Version: v0.9.5   
Hardware: PC   
OS: Mac OS   

Description tsunychau2-c 2022-11-05 18:37:18 HKT
Way to Reproduce:

1. Run Main.java inside the folder (Puzzle.UI)

2. Input character "2" on the console and press enter.

3. Input character "1" on the console and press enter.

Actual result:

Please enter the number to select the mode:  1-Solver  2-One Player
2
Please enter the number to select the game level: 1-easy  2-hard  3-import custom rule json file path.
1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The puzzle name: 	Farmer-tiger-sheep-grass
The game rule: 		tiger eat sheep, but farmer can protect sheep. Sheep eat grass if farmer not around. Only farmer can drive the boat
The game role: 		[farmer, tiger, sheep, grass]


[0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [1;36m. . . . . . . . . B o a t . . . . . . . . . [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [1;36m[                                       [1;36m  ][0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ [0;37m~ 
[0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= [0;32m= 
[1;33mfarmer [1;33mtiger [1;33msheep [1;33mgrass [0;37m

---------------------------------------------------------------------------------------------------------

Please use the following command to take action: 
FULL NAME 			 Choose a role on the boat side and Enter the full role name put the role to the boat
's' 				 To start the boat
'e' 				 To exit the program
'u' 				 To undo the action if exist
'r' 				 To redo the action if exist
You command: 

Expect result:

Please enter the number to select the mode:  1-Solver  2-One Player
2
Please enter the number to select the game level: 1-easy  2-hard  3-import custom rule json file path.
1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The puzzle name: 	Farmer-tiger-sheep-grass
The game rule: 		tiger eat sheep, but farmer can protect sheep. Sheep eat grass if farmer not around. Only farmer can drive the boat
The game role: 		[farmer, tiger, sheep, grass]


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ . . . . . . . . . B o a t . . . . . . . . . ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
~ ~ ~ ~ ~ ~ ~ [                                         ]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
farmer tiger sheep grass 

---------------------------------------------------------------------------------------------------------

Please use the following command to take action: 
FULL NAME 			 Choose a role on the boat side and Enter the full role name put the role to the boat
's' 				 To start the boat
'e' 				 To exit the program
'u' 				 To undo the action if exist
'r' 				 To redo the action if exist
You command:
Comment 1 tsunychau2-c 2022-11-05 18:39:07 HKT
Bug is confirmed.

The reason should be missing "AnsiConsole.systemInstall();".

Modification of code (Main.java inside folder Puzzle.UI):

package Puzzle.UI;
import java.util.*;
import org.fusesource.jansi.AnsiConsole;

public class Main{
 
    public static void main(String[] args) {
    	AnsiConsole.systemInstall();
    	GameFlow m;
    	GameFlowFactory f = new GameFlowFactory();
    	Scanner s = new Scanner(System.in);
    	
    	if(args.length > 0) {
	    	if(args[0].equals("-s")) {
	    		String jsonPath = args[1];
	    		m = f.getGameFlow("1", jsonPath);
		        m.run();
	    	}else if(args[0].equals("-p")) {
	    		String jsonPath = args[1];
	    		m = f.getGameFlow("2", jsonPath);
		        m.run();
	    	}
    	}else {
	    	ArrayList<String> commandList = new ArrayList<String>();
	    	commandList.add("1");
	    	commandList.add("2");
	    	    	
	    	String mode;
	    	do{
		        System.out.println("Please enter the number to select the mode:  1-Solver  2-One Player");
		        mode = s.next();
	    	}while(!commandList.contains(mode));
	    	
	        m = f.getGameFlow(mode);
	        m.run();
    	}	    	
    	
        s.close();
    }
}