diff --git a/src/main/java/com/github/zipcodewilmington/casino/games/hangman/HangmanGame.java b/src/main/java/com/github/zipcodewilmington/casino/games/hangman/HangmanGame.java new file mode 100644 index 0000000..fb76e8e --- /dev/null +++ b/src/main/java/com/github/zipcodewilmington/casino/games/hangman/HangmanGame.java @@ -0,0 +1,85 @@ +package com.github.zipcodewilmington.casino.games.hangman; +import java.util.HashSet; +import java.util.Set; + +import com.github.zipcodewilmington.casino.GameInterface; +import com.github.zipcodewilmington.casino.PlayerInterface; + +public class HangmanGame implements GameInterface { + private HangmanPlayer player; + private String secretWord; + private Set guessedLetters = new HashSet<>(); + private int maxIncorrectGuesses = 6; + private String[] words = {"casino", "hangman", "player"}; + + @Override + public void add(PlayerInterface player) { + this.player = (HangmanPlayer)player; + } + + @Override + public void remove(PlayerInterface player) { + this.player = null; + } + + @Override + public void run() { + secretWord = words[(int)(Math.random() * words.length)]; + guessedLetters.clear(); + maxIncorrectGuesses = 6; + + System.out.println("Welcome to Hangman, " + player.getName() + "!"); + + while (maxIncorrectGuesses > 0 && !isWon()) { + displayWord(); + System.out.println("Remaining attempts: " + maxIncorrectGuesses); + System.out.println("Guessed letters: " + guessedLetters); + + char guess = player.guessLetter(); + + if (guessLetter(guess)) { + System.out.println("Good guess!"); + } else { + System.out.println("Wrong! -1 attempt"); + } + } + + if (isWon()) { + System.out.println("You win! The word was: " + secretWord); + } else { + System.out.println("Game over! The word was: " + secretWord); + } + } + + public boolean guessLetter(char c) { + guessedLetters.add(c); + if (secretWord.indexOf(c) >= 0) { + return true; + } + maxIncorrectGuesses--; + return false; + } + + public boolean isLost() { + return maxIncorrectGuesses <= 0; + } + + public boolean isWon() { + for (char c : secretWord.toCharArray()) { + if (!guessedLetters.contains(c)) return false; + } + return true; + } + + public void displayWord() { + StringBuilder sb = new StringBuilder(); + for (char c : secretWord.toCharArray()) { + if (guessedLetters.contains(c)) { + sb.append(c).append(" "); + } else { + sb.append("_ "); + } + } + System.out.println("Word: " + sb.toString().trim()); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/zipcodewilmington/casino/games/hangman/HangmanPlayer.java b/src/main/java/com/github/zipcodewilmington/casino/games/hangman/HangmanPlayer.java new file mode 100644 index 0000000..991d94c --- /dev/null +++ b/src/main/java/com/github/zipcodewilmington/casino/games/hangman/HangmanPlayer.java @@ -0,0 +1,35 @@ +package com.github.zipcodewilmington.casino.games.hangman; +import java.util.Scanner; + +import com.github.zipcodewilmington.casino.CasinoAccount; +import com.github.zipcodewilmington.casino.PlayerInterface; + +public class HangmanPlayer implements PlayerInterface +{ + private String name; + private CasinoAccount account; + private Scanner scanner = new Scanner(System.in); + + public HangmanPlayer(String name, CasinoAccount account) { + this.name = name; + this.account = account; + } + @Override + public CasinoAccount getArcadeAccount() { + return account; + } + + @Override + public String play() { + return name + " is playing Hangman YAYYYYY!"; + } + public String getName() { return name; } + + public char guessLetter() { + System.out.print("Enter a letter to guess: "); + String input = scanner.nextLine(); + return input.charAt(0); + } +} + + \ No newline at end of file diff --git a/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsGame.java b/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsGame.java index 8cb20c7..58eecee 100644 --- a/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsGame.java +++ b/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsGame.java @@ -1,7 +1,65 @@ package com.github.zipcodewilmington.casino.games.slots; +import java.util.Random; +import java.util.Scanner; -/** - * Created by leon on 7/21/2020. - */ -public class SlotsGame { -} +import com.github.zipcodewilmington.casino.GameInterface; +import com.github.zipcodewilmington.casino.PlayerInterface; + + +public class SlotsGame implements GameInterface{ + private SlotsPlayer player; + private Random random = new Random(); + private String[] symbols = {"🍒", "🍋", "⭐", "🔔", "💎"}; + + @Override + public void add(PlayerInterface player) { + this.player = (SlotsPlayer)player; + } + + @Override + public void remove(PlayerInterface player) { + this.player = null; + } + + + @Override + public void run() { + Scanner scanner = new Scanner(System.in); + System.out.println("Welcome to Slots, " + player.getName() + "!"); + + while (player.getBalance() > 0 ) { + System.out.println("Balance: $" + player.getBalance()); + System.out.print("Enter bet amount (or 0 to quit): "); + double bet = scanner.nextDouble(); + if (bet == 0) { + break; + } + if (bet > player.getBalance()) { + System.out.println("Insufficient balance!"); + continue; + } + + String result = spin(); + System.out.println("Spinning..."); + + String[] reels = result.split(" \\| "); + if (reels[0].equals(reels[1]) && reels[1].equals(reels[2])) { + double winnings = bet * 3; + player.setBalance(player.getBalance() + winnings); + System.out.println("Jackpot! You win $" + winnings); + } else { + player.setBalance(player.getBalance() - bet); + System.out.println("You lose $" + bet); + } + } + System.out.println("Game over! Final balance: $" + player.getBalance()); + } + + public String spin() { + String reel1 = symbols[random.nextInt(symbols.length)]; + String reel2 = symbols[random.nextInt(symbols.length)]; + String reel3 = symbols[random.nextInt(symbols.length)]; + return reel1 + " | " + reel2 + " | " + reel3; + } + +} \ No newline at end of file diff --git a/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsPlayer.java b/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsPlayer.java index f89ebd7..fcef631 100644 --- a/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsPlayer.java +++ b/src/main/java/com/github/zipcodewilmington/casino/games/slots/SlotsPlayer.java @@ -1,7 +1,30 @@ package com.github.zipcodewilmington.casino.games.slots; - +import com.github.zipcodewilmington.casino.PlayerInterface; +import com.github.zipcodewilmington.casino.CasinoAccount; /** * Created by leon on 7/21/2020. */ -public class SlotsPlayer { -} \ No newline at end of file +public class SlotsPlayer implements PlayerInterface { + private String name; + private CasinoAccount account;// replaced. double balance of my own so it will take into account for what the casino account for the player has, to place bets. + + public SlotsPlayer(String name, CasinoAccount account) { + this.name = name; + this.account = account; + } + + @Override + public CasinoAccount getArcadeAccount() { + return account; + } + @Override + public String play() { + return name + " is playing Slots YAYYYYY!"; + } + + public String getName() { return name; } + + public double getBalance() { return account.getActiveBalance(); } + + public void setBalance(double amount) { account.setActiveBalance(amount); } +}