JAVA

[Exercise] 001.Guess The Movie

1. Intro

<This is exercise Java code>
Guess the Movie title

 

2. Source Code

package com.company;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws FileNotFoundException {
        FileControl filecontrol = new FileControl();
        CheckValue checkvalue = new CheckValue();
        String movieName = filecontrol.getMovieName();
        String movieGuess = movieName.replaceAll("[A-Z,a-z,0-9]","_");
        if (checkvalue.playGame(movieName, movieGuess)) {
            System.out.println("You win!!!");
        } else {
            System.out.println("You lose...");
        }
        System.out.println("Answer is '" + movieName + "'.");
    }
}
// Control File I/O
class FileControl {
    private String fileName = "movielist.txt";
    private String movieName = null;
    private File movieFile = new File(fileName);
    Scanner scanByFile;
    private int fileLineCount = 0;
    private int movieSelectNumber = 0;
    public String getMovieName () throws FileNotFoundException {
        // Calculate Line Count
        scanByFile = new Scanner(movieFile);
        while (scanByFile.hasNextLine()) {
            scanByFile.nextLine();
            fileLineCount++;
        }
        // Select random number
        movieSelectNumber = (int)(Math.random() * fileLineCount);
        // Get the movie Name
        scanByFile = new Scanner(movieFile);
        for (int cnt = 0; cnt < movieSelectNumber; cnt++) {
            movieName = scanByFile.nextLine();
        }
        return movieName;
    }
}
// Comparison two value
class CheckValue {
    private String movieGuess;
    private int wrongCnt;
    private String wrongChar = "";
    // Print to Screen
    private String showScreen() {
        Scanner scanByUser = new Scanner(System.in);
        System.out.println("You are guessing : " + movieGuess);
        System.out.println("You have guessed (" + wrongCnt + ") wrong letters: " + wrongChar);
        System.out.print("==> ");
        return scanByUser.nextLine().toLowerCase();
    }
    public boolean playGame(String movieName, String movieGuessIn) {
        movieGuess = movieGuessIn;
        String inputByUser = null;
        for (wrongCnt = 0; (wrongCnt < 10) && !(movieGuess.equals(movieName)); ) {
            inputByUser = showScreen();
            if(!inputByUser.matches("[a-z]")) {
                continue;
            }
            // Check character contain input value by user.
            if (movieName.contains(inputByUser)) {  // Exist input character
                int existPoint = 0;
                // if Exist then get how many exist and position.
                for (int cnt = 0; cnt < movieName.length(); cnt++) {
                    if (movieName.indexOf(inputByUser, cnt) != -1) {
                        existPoint = movieName.indexOf(inputByUser, cnt);
                        StringBuilder modifyGuess = new StringBuilder(movieGuess);
                        try {   // If Input value is error. then Go for statement
                            modifyGuess.setCharAt(existPoint, inputByUser.charAt(0));
                        } catch (StringIndexOutOfBoundsException e) {
                            continue;
                        }
                        movieGuess = modifyGuess.toString();
                        cnt = existPoint;
                    }
                }
            } else {    // Not Exist input character : wrongCnt + 1, Add wrongChar + character
                if (!wrongChar.contains(inputByUser)) {
                    wrongCnt++;
                    wrongChar = wrongChar.concat(inputByUser + " ");
                }
            }
        }
        if (wrongCnt == 10) {
            return false;
        } else {
            return true;
        }
    }
}

 

3. File “movielist.txt”

the shawshank redemption
the godfather
the dark knight
schindler's list
pulp fiction
the lord of the rings
the good the bad and the ugly
fight club
the lord of the rings
forrest gump
star wars
inception
the lord of the rings
the matrix
samurai
star wars
city of god
the silence of the lambs
batman begins
die hard
chinatown
room
dunkirk
fargo
no country for old men

 

Back To Top