// Guess.java
// Andrew Davison, ad@coe.psu.ac.th, March 2023

/* A guess-the-number game.

   Uses Lanterna 3
   https://github.com/mabe02/lanterna

   Usage (Windows):
     > compile.bat Guess.java
     > run.bat Guess

   Usage (Linux):
     > ./compile.sh Guess.java
     > ./run.sh Guess

*/


import java.io.*;
import java.util.*;

import com.googlecode.lanterna.*;
import com.googlecode.lanterna.gui2.*;
import com.googlecode.lanterna.screen.*;
import com.googlecode.lanterna.terminal.*;

import com.googlecode.lanterna.bundle.LanternaThemes;


public class Guess
{
  private static final int MAX_NUM = 10;

  public static void main(String[] args)
  {
    Screen scr = Utils.createScreen();
    scr.setCursorPosition(null);

    boolean[] wasTried = new boolean[MAX_NUM];
    int number = (int)(Math.random()*MAX_NUM);

    Utils.header(scr, "Guess the number 0-" + (MAX_NUM-1));

    int guess = -1;
    do {
      drawNumbers(scr, wasTried);
      guess = Utils.readInt(scr);

      if (guess < number) {
        Utils.putString(scr, 5, 7, guess + ": too low ");
        wasTried[guess] = true;
      }
      else if (guess > number) {
        Utils.putString(scr, 5, 7, guess + ": too high");
        wasTried[guess] = true;
      }
      else
        Utils.putString(scr, 5, 7, guess + ": correct!");
    } while (guess != number);

    Utils.statusLine(scr, "Press <esc> to exit");
    Utils.hasQuit(Utils.readInput(scr));
    Utils.close(scr);
  }  // end of main()


  private static void drawNumbers(Screen scr, boolean[] wasTried)
  {
    for (int i=0; i < wasTried.length; i++) {
      int col = 5 +(i*2);
      char ch = (char)('0'+i);
      if (wasTried[i])
        Utils.setCharacter(scr, col, 5, ch, TextColor.ANSI.RED);
      else
        Utils.setCharacter(scr, col, 5, ch, TextColor.ANSI.GREEN);
      Utils.setCharacter(scr, col+1, 5, ' ');
    }
    Utils.refresh(scr);
  }  // end of drawNumbers()


} // end of Guess class