Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.ioffe.andreystar.hangman;
- import java.util.Arrays;
- import java.util.Scanner;
- public class HangmanConsoleView {
- HangmanModel model;
- static Scanner in = new Scanner(System.in);
- static String lang;
- public HangmanConsoleView(HangmanModel model) {
- this.model = model;
- }
- public static char getLetter() {
- if (lang.equals("ru")) {
- System.out.println("Введите одну букву: ");
- } else {
- System.out.println("Type in one letter: ");
- }
- return in.next().charAt(0);
- }
- public static void userView() {
- lang = HangmanController.lang;
- if (lang.equals("ru")) {
- System.out.println("Ваше слово: " + HangmanModel.getUserView());
- } else {
- System.out.println("Your word: " + HangmanModel.getUserView());
- }
- System.out.println();
- }
- public static String lang() {
- System.out.println("Choose language: ");
- return in.next();
- }
- public static void info() {
- System.out.println();
- userView();
- if (lang.equals("ru")) {
- System.out.println("Ошибки: " + HangmanModel.getMistakes());
- System.out.print("Неподходящие буквы: ");
- } else {
- System.out.println("Mistakes: " + HangmanModel.getMistakes());
- System.out.print("Incorrect guesses: ");
- }
- if (HangmanModel.getMistakes() == 0) {
- if (lang.equals("ru")) {
- System.out.println("Нет");
- } else {
- System.out.println("none");
- }
- } else {
- String mistakes = HangmanModel.getMissedLetters();
- char[] mistakesArray = new char[mistakes.length()];
- for (int i = 0; i < mistakesArray.length; i++) {
- mistakesArray[i] = mistakes.charAt(i);
- }
- for (int i = 0; i < mistakesArray.length; i++) {
- Arrays.sort(mistakesArray);
- if (i + 1 < mistakesArray.length) {
- System.out.print(mistakesArray[i] + ", ");
- } else {
- System.out.print(mistakesArray[i]);
- }
- }
- System.out.println();
- System.out.println();
- }
- }
- public static void victory() {
- if (lang.equals("ru")) {
- System.out.println("Победа!!!");
- } else {
- System.out.println("You Won!!!");
- }
- System.out.println(HangmanModel.getUserView());
- }
- public static void usedLetter() {
- if (lang.equals("ru")) {
- System.out.println("Вы уже пробовали эту букву! Введите другую. ");
- } else {
- System.out.println("You already tried this letter! Try another one. ");
- }
- }
- }
- package ru.ioffe.andreystar.hangman;
- public class HangmanController {
- HangmanModel model;
- HangmanConsoleView consoleView;
- static int go = 0;
- public static String lang;
- public HangmanController(HangmanModel model, HangmanConsoleView consoleView) {
- this.model = model;
- this.consoleView = consoleView;
- }
- public void run() {
- while (!model.isVictorius()) {
- go++;
- if (go == 1) {
- HangmanConsoleView.userView();
- //System.out.println(HangmanModel.word);
- } else {
- HangmanConsoleView.info();
- }
- char letter = HangmanConsoleView.getLetter();
- while(HangmanModel.wasLetterUsed(letter)) {
- HangmanConsoleView.usedLetter();
- letter = HangmanConsoleView.getLetter();
- }
- HangmanModel.makeMove(letter);
- }
- HangmanConsoleView.info();
- HangmanConsoleView.victory();
- }
- public static void main(String[] args) throws Exception {
- lang = HangmanConsoleView.lang();
- System.out.println(lang);
- HangmanModel model = new HangmanModel();
- HangmanConsoleView consoleView = new HangmanConsoleView(model);
- HangmanController controller = new HangmanController(model, consoleView);
- controller.run();
- }
- }
- package ru.ioffe.andreystar.hangman;
- import java.util.ArrayList;
- public class HangmanModel {
- public static String word;
- static ArrayList<Character> guessesList;
- public HangmanModel() throws Exception {
- if (HangmanController.lang.equals("ru")) {
- word = WordBase.generateRuWord().toUpperCase();
- } else {
- word = WordBase.generateEnWord().toUpperCase();
- }
- guessesList = new ArrayList<>();
- }
- public static void makeMove(char letter) {
- letter = ("" + letter).toUpperCase().charAt(0);
- guessesList.add(letter);
- }
- public static String getUserView() {
- String userViewStr = "";
- for (int i = 0; i < word.length(); i++) {
- if (guessesList.contains(word.charAt(i))) {
- userViewStr += word.charAt(i) + " ";
- } else {
- userViewStr += "_ ";
- }
- }
- return userViewStr;
- }
- public static String getMissedLetters() {
- String missed = "";
- mark: for (int i = 0; i < guessesList.size(); i++) {
- char curLetter = guessesList.get(i);
- for (int j = 0; j < word.length(); j++) {
- if (word.charAt(j) == curLetter) {
- continue mark;
- } else {
- continue;
- }
- }
- missed += curLetter;
- }
- return missed;
- }
- public static int getMistakes() {
- return getMissedLetters().length();
- }
- public static boolean wasLetterUsed(char letter) {
- letter = ("" + letter).toUpperCase().charAt(0);
- if (!guessesList.contains(letter)) {
- return false;
- } else {
- return true;
- }
- }
- public boolean isVictorius() {
- for (int i = 0; i < word.length(); i++) {
- if (!guessesList.contains(word.charAt(i))) {
- return false;
- }
- }
- return true;
- }
- }
- package ru.ioffe.andreystar.hangman;
- import java.io.File;
- import java.util.Random;
- import java.util.Scanner;
- public class WordBase {
- public static String generateEnWord () throws Exception {
- Random random = new Random();
- Scanner in = new Scanner(new File("enwordbase.txt"));
- int n = random.nextInt(4308) + 1;
- String word = "world";
- for (int i = 0; i < n; i++) {
- word = in.next();
- }
- in.close();
- return word;
- }
- public static String generateRuWord () throws Exception {
- Random random = new Random();
- Scanner in = new Scanner(new File("enwordbase.txt"));
- int n = random.nextInt(4308) + 1;
- String word = "world";
- for (int i = 0; i < n; i++) {
- word = in.next();
- }
- in.close();
- return word;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement