Jak napisać grę "kamień, nożyczki, papier" na javie

"Kamień, nożyczki, papier" - to gra "na palcach" dla dwóch. Gracze mówią "kamień, nożyczki, papier" i rzucony do przodu, tworząc jedną z trzech postaci (kamień, nożyczki lub papier). Zwycięzca jest ustalany w następujący sposób: Nożyczki pokonują papier, papier bije kamień, kamień bije nożyczki. Jeśli obaj gracze pokazują tę samą figurę, jest uważany za rysunek. Napiszemy prostą grę na Javie, która gra "kamień, nożyczki, papier" z komputerem.

Kroki

jeden. Utwórz podstawową klasę i nazwij ją RockpapersCordsors. W tej klasie opiszemy grę. Możesz nazwać to inaczej, na przykład Gra lub Główny. Napisz reklamy projektantów i metodę główną.

Klasa publiczna RockpapersCords {publiczne rockpapersCordsCords () {} Public Staning Void Main (String [] Args) {}}
  • 2. Utwórz aukcję (enum), aby opisać możliwe ruchy (kamień, nożyczki, papier). Możemy ustawić do biegania ciągów, ale aukcja pozwala nam predesterminować stałą, więc użycie enum jest lepsze. Zadzwońmy do naszej aukcji Ruszaj się I ustaw znaczeniaSkała, Papieri Nożyce.

    Prywatny Enum Move {Rock, Paper, Nożyczki}
  • 3. Utwórz dwie zamknięte klasę (słowa kluczowe) klasy Użytkownik i Komputer. Te klasy będą reprezentować graczy. Możesz także wprowadzić te klasy (słowo kluczowe). KlasaUżytkownik poprosi od użytkownika, co przeniesie go - kamień, nożyczki lub papier - więc musimy napisać metodę getmave (). KlasaKomputer powinien mieć również metodęgetmave (), Abyśmy mogli uzyskać komputer. Do tej pory po prostu zadeklarujemy te metody i napiszemy wdrożenie później. Klasa Użytkownik Musi mieć konstruktor, w którym obiekt jest inicjowany Skaner, który odczytuje dane wejściowe użytkownika. OgłosićSkaner Zamknięty członek danych klasy Użytkownik i zainicjuj go w projektantku. Ponieważ zamierzamy użyć klasy Skaner, Musimy go połączyć za pomocą słowa kluczowego Import . Klasa Komputer Projektant nie jest potrzebny, więc nie piszemy go - podczas inicjowania obiektu Komputer Po prostu zadzwonimy do domyślnego projektanta. Oto klasa RockpapersCordsors Wygląda teraz:

    Importuj Java.UTIL.Scanner-Class Class RockpapersCissors {Private Enum Move {Rock, Paper, Nożyczki} Użytkownik Prywatny Użytkownik {Prywatny Skaner InputScanner-Public Użytkownik () {InputScanner = Nowy Skaner (System.W) -} Public Move GetMove () {// Todo: Implementacja Meturn Null -}} Prywatna klasa Komputer {Publiczny Move GetMove () {Public Move GetMove () {// Todo: Wdrożenie Meturn Null -}} Publiczne rockpapersCords () {} publiczna statyczna void main (string [] argss) {}}
  • cztery. Napisz implementację metody getmave () Dla klasy Komputer. Ta metoda zwróci wartość losową Ruszaj się.Możemy uzyskać tablicę wartości Ruszaj się Wywołanie metody Wartości () lubię to: Ruszaj się.Wartości (). Wybrać sens losowy Ruszaj się Z tej tablicy musimy wygenerować losowy indeks między 0 a liczbą elementu tablicy. Aby to zrobić, zadzwoń do metodyNEODINT () klasaLosowy , Które się łączymy:Importuj Java.UTIL.Losowy. Po otrzymaniu przypadkowego indeksu, zwrócimy wartość Ruszaj się Z tym indeksem w naszej tablicy.

    Publiczny ruch GetMove () {Move [] ruchy = ruch.Wartości () - Random Random = Nowy Random () - IND INDEX = Random.NEODINT (ruchy.Długość) -Return ruchy [indeks] -}
  • pięć. Napisz implementację metody getmave () Dla klasy Użytkownik. Ta metoda zwróci wartość Ruszaj się Odpowiednie wprowadzanie użytkownika. Użytkownik może wejść "skała", "nożyce", lub "papier". Najpierw wycofaj wiadomość: System.Na zewnątrz.Wydrukować ("Kamień, nożyczki lub papier?"). Następnie używając metody Dalnline () Obiekt Skaner, Dostajemy dane wejściowe użytkownika w postaci sznurka. Teraz musisz sprawdzić poprawność wprowadzania użytkownika. Nie będziemy jednak zwracać uwagi na literówki i po prostu sprawdzić pierwszą literę "K", "N" lub "B". Nie zwracamy również uwagi na rejestr listów, ponieważ z góry, zadzwonimy do metody Taperek () klasa Strunowy, Przy wejściu do użytkownika na najlepszy rejestr. Jeśli użytkownik nie wprowadził nawet w przybliżeniu prawidłowy wybór, poproś o jego ruch. Następnie, w zależności od wejścia użytkownika, nasza metoda zwróci odpowiednią wartość Ruszaj się.

    Publiczny ruch GetMove () {// Wycofaj prośbę o wejście.Na zewnątrz.Wydrukować ("Kamień, nożyczki lub papier? ") - // Przeczytaj wprowadzanie użytkowników UserInput = InputScanner.Dalnline () - UserInput = UserInput.Touppercase () - Char Firstlestter = UserInput.Charat (0) -if (Firstlestter == `K` || Firstlestter == `n` || Firstlestter == `B`) {// Wprowadzanie prawidłowego przełącznika (Firstlettletter) {Case "K": Return Ruch.Rock-Case `H`: Return Ruch.Paper-Case `B`: Return Move.Nożyczki -}} // Nieprawidłowe. Przynieś żądanie, aby ponownie wejść.Return GetMove () -}
  • 6. Napisz implementację metody Zagraj ponownie () klasa Użytkownik. Użytkownik musi być w stanie zagrać ponownie. Aby ustalić, czy użytkownik chce ponownie grać, napisz metodę Zagraj ponownie (), co zwróci wartość typu Bool, a tym samym, powiedz grę, czy użytkownik chce ponownie grać. W tej metodzie używamy obiektu Skaner , które zainicjowaliśmy w projektancie"tak" lub"Nie" Od użytkownika. Właśnie sprawdzamy pierwszą literę, jeśli chcesz, użytkownik chce ponownie grać, każdy inny list oznacza "Nie".

    Public boolean playagain () {system.Na zewnątrz.Wydrukować ("Chcesz znowu grać? ") -String UserInput = InputScanner.Dalnline () - UserInput = UserInput.Taperska () - Powrót UserInput.Charat (0) == `d`-}
  • 7. Kod klasowy Użytkownik i klasa Komputer w klasie RockpapersCordsors. Kod pisania dla zajęć Użytkownik i Komputer, Możemy wykonać samą grę. Ogłosić klasy Użytkownik i Komputer Dane klasy zamkniętej RockpapersCordsors. Będziemy się do nich odnosić, powodując metodę getmave (), zdobyć graczy. Zainicjuj je w projektantku klasowym RockpapersCordsors. Musimy również przechowywać konto. Dostosować UżytkownicyCore i Computercore, Linija zero. I wreszcie, utwórz pole danych do przechowywania liczby gier, także inicjując ją za pomocą zera.

    Prywatny użytkownik User-Private Computer Computer-Private INT Userscore-Private Int ComputerCore-Private Int Numery NumerofGames-Public RockpapersCordsCords () {User = Nowy Użytkownik () - Computer = Nowy komputer () - UżytkownicyCore = 0-Computercore = 0-NumberOfGames = 0 -}
  • osiem. Pełna aukcja Ruszaj się Metoda, która porównuje ruchy i określa zwycięzcę. Kodeks ręki do metody Porównanie () co powróci 0, jeśli ruchy są takie same, 1 - jeśli bieżące uruchomienie bije drugą i -1 - jeśli inny ruch bije prąd. Bieżący bieg jest pokazany przez ten wskaźnik, a drugi jest przesyłany w parametrze OtherMove. Przydatne jest określenie zwycięzcy. Najpierw piszemy kod definiujący rysunek i zwracamy 0, a następnie napisz instrukcję przełącznika, aby określić zwycięzcę.

    Prywatny Enum Move {Rock, Paper, Nożyczki - / *** porównuje bieżący ruch z transmitowaną w parametrze Othermove i określa * zwycięstwo, porażka lub rysować.** @param Othermove * Kurs, z którym prąd * @return 1 jest porównywany, jeśli bieżący ruch bije drugi, -1, jeśli inny ruch bije prąd, * 0 w przypadku losowania * / Public Int porównanie (ruch porównawczy Othermove) {// draw == Othermove) Zwróć 0-przełącznik (to) {Case Rock: Return (OtherMove == Nożyczki ? 1: -1) - Papier: Powrót (Othermove == Rock ? 1: -1) -Case nożyczki: Powrót (Othermove == Paper ? 1: -1) -} // Ten kod nigdy nie musi być wykonywany 0-}}
  • dziewięć. Ogłosić metodę Rozpocząć grę () w klasie RockpapersCordsors. W tej metodzie będzie gra. Zacznij dzwoniąc do metody System.Na zewnątrz.Println.

    Publiczny void StartGame () {System.Na zewnątrz.Println ("Nożyczki do papieru rockowego!") -}
  • 10. Uzyskaj pociągnięcia komputera i użytkownika. W metodzie Rozpocząć grę () Połączenie getmave () zajęcia Użytkownik i Komputer , zdobyć ruchy.

    Przesuń usermove = użytkownik.Getmave () - Move Computmove = komputer.Getmave () - System.Na zewnątrz.Println ("Nutaf Sowoke" + Usermove + ".") -System.Na zewnątrz.Println ("Komputer działa" + Computermove + ".N")-
  • jedenaście. Porównaj przebieg komputera i ruch gracza, aby określić, kto wygrał. Zadzwoń do metody Porównanie () wymienianie kolejno Ruszaj się, Aby ustalić, czy użytkownik wygrał. Jeśli tak, zwiększ jego konto na 1. Jeśli nie, zwiększ konto komputera. W przypadku remisu rachunek pozostaje taki sam. Po tym zwiększyć liczbę gier zagranych przez 1.

    Int porównawcze = usermove.Porównanie (porównawcze) {Case 0: // DrawsSystem.Na zewnątrz.Println ("Remis!") -Break-case 1: // pokonał gracza.Na zewnątrz.Println (usermove + " Bije " + Computermove + ". Wygrałeś!") -UsersScore ++ - Break-Case -1: // pokonał Compersystem.Na zewnątrz.Println (computermove + " Bije " + Usermove + ". Przegrałeś.") -Computercore ++ - Break-} Numery++-
  • 12. Poproś użytkownika, czy chce ponownie grać. Jeśli tak, zadzwoń do metody Rozpocząć grę () jeszcze raz. Jeśli nie, zadzwoń do metody PrintGamestats (), który przyniesie statystyki gry. Napiszymy jego wdrożenie w następnym kroku.

    jeśli (użytkownik.Playagain ()) {system.Na zewnątrz.Println () - startGame () -} else {printgamestats () -}
  • 13. Napisz implementację metody PrintGamestats (). Ta metoda wycofuje statystyki gry: liczba zwycięstw, zmian, rysuje, liczba granych gier i odsetek zwycięstw gracza. Procent wygranych gier jest uważany za następujący: (liczba zwycięstw + (liczba rysunków / 2)) / (liczba graczy). Ta metoda używa System.Na zewnątrz.Printf Do formatowanego wyjścia tekstowego.

    Prywatne pustkowe printgamestats () ") -PrintDashes (10) -system.Na zewnątrz.Wydrukować ("+") -PrintDashes (10) -system.Na zewnątrz.Wydrukować ("+") -PrintDashes (10) -system.Na zewnątrz.Wydrukować ("+") -PrintDashes (16) -System.Na zewnątrz.Wydrukować ("+") -PrintDashes (18) -System.Na zewnątrz.Println ("
  • czternaście. Rozpocząć grę. Głównie klasa zainicjuj obiekt RockpapersCordsors i nazwij to metodą Rozpocząć grę ().

    Publiczny statyczny Void Main (String [] Args) {RockpapersCissors gry = New rockpapersCissors () - Gra.Rozpocząć grę () -}
  • Obraz zatytułowany Screen Shot 2013 06 23 na 2.27.50 am.jpg
    piętnaście. Przetestuj grę. Teraz, kiedy wszystko jest za sobą, nadszedł czas, aby skompilować i przetestować naszą grę!
  • Przykładowy program

    Importuj Java.UTIL.Random-import Java.UTIL.Skaner-klasa i określa * zwycięstwo, porażka lub rysować.** @param Othermove * Kurs, z którym prąd * @return 1 jest porównywany, jeśli bieżący ruch bije drugi, -1, jeśli inny ruch bije prąd, * 0 w przypadku losowania * / Public Int porównanie (ruch porównawczy Othermove) {// draw == Othermove) Zwróć 0-przełącznik (to) {Case Rock: Return (OtherMove == Nożyczki ? 1: -1) - Papier: Powrót (Othermove == Rock ? 1: -1) -Case nożyczki: Powrót (Othermove == Paper ? 1: -1) -} // Ten kod nie musi być wykonywany Nigdy /}} Użytkownik Prywatnych klasy {Private Scanner InputScanner-Public Użytkownika () {InputScanner = Nowy skaner (system.W) -} Public Move GetMove () {// Wyświetla żądanie do wejścia.Na zewnątrz.Wydrukować ("Kamień, nożyczki lub papier? ") - // Przeczytaj wprowadzanie użytkowników UserInput = InputScanner.Dalnline () - UserInput = UserInput.Touppercase () - Char Firstlestter = UserInput.Charat (0) -if (Firstlestter == `K` || Firstlestter == `n` || Firstlestter == `B`) {// Wprowadzanie prawidłowego przełącznika (Firstlettletter) {Case "K": Return Ruch.Rock-Case `H`: Return Ruch.Paper-Case `B`: Return Move.Nożyczki -}} // Nieprawidłowe. Przynieś żądanie, aby ponownie wejść.RETURN GETMOCH () -} Public Boolean Playagain () {System.Na zewnątrz.Wydrukować ("Chcesz znowu grać? ") -String UserInput = InputScanner.Dalnline () - UserInput = UserInput.Taperska () - Powrót UserInput.Charat (0) == `Y` -}} Prywatny komputer Computer {Public Move GetMove () {Move [] Moves = Ruch.Wartości () - Random Random = Nowy Random () - IND INDEX = Random.NEODINT (ruchy.Długość) -Return ruchy [indeks] -}} publiczne rockpapersorsCordsCords () {user = Nowy użytkownik () - Computer = Nowy komputer () - UżytkownicyCore = 0-Computercore = 0-Numbergames = 0-} Public Void StartGame () {System.Na zewnątrz.Println ("Nożyczki do papieru rockowego!") - // Uzyskanie Move Usermove = Użytkownik.Getmave () - Move Computmove = komputer.Getmave () - System.Na zewnątrz.Println ("Nutaf Sowoke " + Usermove + ".") -System.Na zewnątrz.Println ("Komputer działa " + Computermove + ".N") - // Porównanie ruchów i definicję porównania Winnerint = USERMOVE.Porównanie (porównawcze) {Case 0: // DrawsSystem.Na zewnątrz.Println ("Wiązanie!") -Break-case 1: // pokonał gracza.Na zewnątrz.Println (usermove + " Bije " + Computermove + ". Wygrałeś!") -UsersScore ++ - Break-Case -1: // pokonał Compersystem.Na zewnątrz.Println (computermove + " Bije " + Usermove + ". Przegrałeś.") -Computercore ++ - Break-} NumberOofames ++ - // Oferujemy użytkownikowi ponownie grać (użytkownik.Playagain ()) {system.Na zewnątrz.Println () - StartGame () -} else {printgamestats () -}} / *** Zawarcie statystyk. Rysowania są brane pod uwagę jako pół głębokości *, gdy licząc procent zwycięstw.* / Private Void PrintGamestats ()% 13.2F %% Prywatne pustki printdashes (int Numberofdashes) {dla (int i = 0- i < numberOfDashes- i++) {System.out.print("-")-}}public static void main(String[] args) {RockPaperScissors game = new RockPaperScissors()-game.startGame()-}}
    Podobne publikacje