Cum de a scrie un joc `piatră, fearfece, hârtie" pe java

"Piatră, Fearfece, hârtie" - acesta este un Joc "pe dentru" pentru două. Jucătorii se spusti "Piatră, Fearfece, hârtie" şi Aruncaţi mâna în Faţă, Formând Una Din Cele Trei Figuri (Piatră, Fearfecă Sau hârtie). Câştigătorul este determinat după cum urmează: Fearfece pobijediti hârtie, hârtie bate o piatră, piatră bate fearfece. Dacă ambii jucători arată aceeaşi cifră, este razmatra, remiză. VOM Scrie Un Joc Simuru PE Java, Care VA Juca "Piatră, Fearfece, Hârtie" Cu UN računalo.

Pasi

un. Creaţi o Clasă de Bază şi Spuneţi-o Rockerchipsors. În Acearaă Clasă Vom opisuje Jocul. Puteţi să l Numiţi Altfel, de Exemplu Joc Sau Glavni. Scriber Anunţuri de Dizajner şi Metoda Principală.

CLASA publică RockpersCisors {javni rockperscssors () {} javni afirmat void ravnatelj (şir [] args) {}}
  • 2. Creaţi o liste (enum) pentru opis Posibilele mişcări (Piatră, Fearfece, hârtie). Puvem stabili şiruri de alergare, dar listarea ne dopustiti să predeminăm constanta, astfel încât utilizarea Enum Ene este Mai Bună. Să Numum Listarea Noastă Mutare Şi setaţi semnificaţileStijena, Hârtiesi Fearfece.

    Privatni Enum potez {rock, hârtie, fearfece}
  • 3. Creaţi Două Cheie Cheie (Clasa de cuvinte Cheie) Korisnik si Kalkulator. Aceste oznaka vor reprezenta jucătorii. De asemenea, puteţi lice aceste klase Deschise (Cuvinte Cheie Publice). ClasăKorisnik VA Cere de la Utilizator, CeA C je mişcă - Piatra, Fearfece sau hârtie - aşa că trebuie scribem o metodi getmove (). ClasăKalkulator Ar Trebui să aibă, de asemenea, o metodigetmove (), Astfel încât să putem obţene UN računalo. Până Acum, VOM DECATRA PUR ŞI SUMURA ​​ACEST METODE Ş. Clasă Korisnik Trebuie Să Aibă UN konstrukcija na skrbi Obiestel este Iniţializat Skeniraj, Care VA Citi Intrarea UtilizatorUlui. DeklaraSkeniraj Membru închis al Datelor de Clasă Korisnik şi Iniţializaţi-l în dizajner. Din trenutak CE VOM folsi Clasa Skeniraj, Trebuie să l conectăm folosind Un cuvânt cheie Uvoz . Clasă Kalkulator Dizajnerul nu este necesar, aşa că nu îl Vom Scrie - când Iniţializează obistla Kalkulator VOM NUMI PUR Şi Simpu Desearul implicitno. Iată Clasa Rockerchipsors Arată acum:

    Invespondeţi Java.UTIL.Scaleer-class javni rockProperssors {privatni Enum potez {rock, hârtie, fearfece} clasa privată utilizator {skener privata ulazni-korisnici () {inputscanner = skener nou (sistem.In) -} Javni potez Getmove () {// TODO: implearea calcularluului de Clasa Meturn null -}} {javni potez Getmove () {Javni potez Getmove () {// ToDO: Implementarstvo membur null -}} Javni rockpersciseri () {} Javni statički ravnatelj praznine (şir [] args) {}}
  • 4. Scribeţi Implementar Metodei getmove () Pentru clasă Kalkulator. Aceara Metodă valora Valoaarea Aleatorie Mutare.Putem obţene o serie de valori Mutare Apelarea Unei Metode Valori () KAO: Mutare.Valori (). Pentru aleal aleator Mutare DIN ACaastă Matrice, Trebuie să Genem Indice Aleatoriu între 0 şi numărul de Element de Matrice. Pentru lica Acest Lucru, Sunaţi la MetodaUrmătorul () ClasăAleatoriu , PE Care Le Conectăm aşa:Invespondeţi Java.UTIL.Aleatoriu. După Primirea Unui Indice Aleatoriu, Vom Restturio Valoaarea Mutare Cu acest Indice în matrice bez.

    Javni potez getmove () {muy [] mişcări = mutare.Valori () - slučajni slučajni = novi slučajni () - ind indeks = aleatoriu.Următorul (se mişcă.Lungime) - SE mişcă [indeks] -}
  • Cinci. Scribeţi Implementar Metodei getmove () Pentru clasă Korisnik. Aceara Metodă valoa Valoaarea Mutare Neutralit adecvată utilizatorlui. Utilizatorul poate intra "o Piatra", "Fearfece", Sau "Hârtie". În Primul rând, retrageţi Un mesaj: Sistem.Van.Impaima ("Piatră, Fearfece sau hârtie?"). Apoi, Folosind Metoda Linia Urmăare () Poticaj Skeniraj, Obţinem uvođenje utilizatoruui pod forma unui şir. Acum Trebuie să verificaţi corectitudinea utilizatorului skrb ulova. Cu toite acestea, NU Vom Acorda Atenţie Lui Typos şi Pur şi Simpu Verificaţi prima litreă "k", "n" sau "b". De asemenea, NU Vom AcORDA Atenţie Registrirajte Scrisorilor, Deoarece, în Prearabil, Vom Numi Metoda Touppercase () Clasă Şir, C1ND UVOĐENJE UTILIMATOR îN registral des. Dacă utilizatorul nu predstava nici o alegere mai corectă, îmi cer din nou mişrearea. Apoi, în Funcţie de iTrarea UtilizatorUlui, Metoda Noastă valoa Valoarea Corspinzăare Mutare.

    Publicati Move Getmove () {// retrageţi o cerre de a intra.Van.Impaima ("Piatră, Fearfece sau hârtie? ") - // Citiţi intrarea de Koritator Usecinput = Inputscanner.Linia Urmăoare () - UsnicayPut = UsnicayPut.Touppercass () - Char FirstTter = Userputput.Charat (0) - ako (ferletter == `K` || Prvi tter == `n` || || `prvi ==` B `) {// Uvod Corectăswitch (prvi put) {Case` K `: Reveniţi.Rock-Caz "H": Reveniţi.Cazul de hârtie "B": Reveniţi.FOARFECE -}} // Pridržavati se. Aluceţi o cerere de intra din nou.Retur Getmove () -}
  • 6. Scribeţi Implementar Metodei Joaca Din Nou () Clasă Korisnik. Utilizatorul Trebuie să Poată Red Din Nou şi Din Nou. Pentru a deternu dacă utilizatorul doreşte să Redea Din Nou, Scribeţi Metoda Joaca Din Nou (), Care VA RUTA Valoarea Tipului de Bool şi, Asterfel, Spuneţi Jocului Dacă Utilizatorul doreşte să joace din nou. În aceara Metodă, Folosim obižul Skeniraj , PE Care l-am Itiţializati în dizajner pentru a oboman"Da" Sau"Ne" De la utilizator. Tocmai verifififi primaeteră, dacă aţi fi, atuncija utilizatorul doreşte să Joace Din Nou, Orice Altc Scrisoare Va "Ne".

    Public Boolean Playagain () {sistem.Van.Impaima ("Doriţi să Jucaţi Din Nou? ") -String Usnicationput = Inputscanner.Linia Urmăoare () - UsnicayPut = UsnicayPut.Touppercase () - povratak userput.Charat (0) == d`-}
  • 7. Codul de clasă kravata Korisnik şi Clasa Kalkulator u Clasi Rockerchipsors. Codul de Scriber pentru Korisnik si Kalkulator, Putem lice Jocul na sinusu. Anunţă Clasele Korisnik si Kalkulator Datele de Clasă închise Rockerchipsors. Ne vomu preporuči la la Ele, provokat o metodi getmove (), Pentru a oboman jucători. Iniţializaţi-le nttr-Un dizajner de Clasă Rockerchipsors. De asemenea, trebuie să Stocăm UN kontakt. Regla Utilizatorcore si Računala računala, Linitiasese-le nula. Şi în CELE DIN URMă, Creaţi Un câmp de datum pentru stocarea numărului de jocuri, iniţializând-o cu nula.

    Korisnik Privat Korisnici-privatni Computer-privatni INTILIZATSCORE-PRIVATNI INT Computerscore-Privatni INT NoteFames-Javni RockpersCisors () {Utilizator = Utilizator Nou () - Računalo = Računalo Nou () - Userscore = 0-Computerscore = 0 - NumureOfgame = 0 - }
  • Odlučiti. Lista dom Mutare Metoda Care VA usporedba mişcările şi determină câştigătorul. Ne manifestni codul pentru metodă Usporedi () Njega se va întoarce 0 dacă mişcările Sunt aceleaşi, 1 - DACă rulaaa Late Caaltă şi -1 - Dacă o Altă Mişcare Bate Curetul. RULAAAA KUADENă Este Asişată de Acest Indikator, Iar Celălalt este transmis în paramatlul cealtăve. Este util să determinaţi câştigătorul. Mai înti Schiber Codul Care Definirajte O Remiză şi povratak 0, Apoi Scribi Instrucţiunile de Comutare pentru a detrina câştigătorul.

    Privatni Enum potez {rock, hârtie, Fearfece - / *** Usporedna mişrearea Curentă Cu transmiter în Parametrul Ostalo t.** @param Altamove * Cursul Cu Care Accul * @return 1 este Usporedi Dacă Mutarea Curenă Bate Cealtă, -1 dacă o altă mişcare Bate Curetul, * 0 în Cazul Unei Remoi Remoze * / Javna int Usporedi (Mutare Ostalo Mimove) {/ / Draw == OTHERMOVE) RETACI 0-prekidač (Acest) {Case Rock: întocere (ostalo) == FOARFECE ? 1: -1) Hârtie: povratak (Altcalmime == Rock ? 1: -1) -Foarfece: întorcere (Altcineva == hârtie ? 1: -1) -} // Acest Cod Nu Trebuuie Executat Niciodată 0-}}}}
  • nouă. Anunţă o metodi Presjeci Jocul () u Clasi Rockerchipsors. În acaaraă metodă va fi un joc. Îcepeţi Prin Apelarea Metodei Sistem.Van.Println.

    Javni vodgame () {sistem.Van.Println ("Fizuare de haltie rock!") -}
  • 10. Obţineţi prokletstvo şi utilizator de kalkulator. În Metoda Presjeci Jocul () Apel getmove () Vezati Korisnik si Kalkulator , Pentru a-şi lice mişcările.

    Mutaţi UserMove = Korištenje.Getmove () - Mutare ComputerMove = računalo.Getmove () - sistem.Van.Println ("Nut-nesreća vaskularni cerebralni" + Usermave + ".") -Sustav.Van.Println ("Compulal Care Direază" + Computermove + ".N")-
  • nesprešnica. Compalaţi cursul calculalui şi mişcării jucătorului pentru a determinal cine câştigat. Apelaţi Metoda Usporedi () Popis Mutare, Pentru a detrina dacă utilizatorula câştigat. Dacă da, Creşteţi Contul Său La 1. Dacă nu, măriţi contul compulalui. În caz de remiză, proiectul de lege rămâne acelaşi. După acea, Creştea Numărului de Jocuri Jukate de 1.

    Int comparemoves = usemove.Usporediti (comparemoves) {caz 0: // crta.Van.Println ("Desena!") -Ak-CAZ 1: // învins sistemul de Jucători.Van.Println (UseMove + " Beats " + Computermove + ". AI Castigat!") -Usersercore ++ - break-caz -1: // a învins komplicizam.Van.Println (ComputerMove + " Beats " + Usermave + ". Ai Pierdut.") -Computerscore ++ - Break-} număr de numere++-
  • 12. Cereţi utilizatorlui dacă vrea să joace din nou. Dacă da, Sunaţi la Metoda Presjeci Jocul () DIN Nou. Dacă nu, sunaţi la Metoda PrintGamestats (), Care VA arece statistike joclui. VOM Scrie Primjena SA în Pasul Următor.

    Dacă (korisnik.PlayGain ()) {sistem.Van.Println () - StartGame () -} Alte {PrintGamestats () -}
  • 13. Scribeţi Implementar Metodei PrintGamestats (). Aceara Metodă VA prebacuje statistike: numărul de Victorii, Leziuni, ATRAGE, NUMărul de Jocuri Jukate şi Procentul Victoriilor Jucătorului. Procentul de jocuri câktigate este razmatrat după cum urmează: (numărul de Victorii + (numărul de Remiză / 2)) / (Numărul de Jocuri Jucate). Această metodă utilizează Sistem.Van.Printf Pentru Ieşirea tekstului format.

    Volumul Privat PrintGamestati () ") -Printsheshesheshesheshess (10) -System.Van.Impaima ("+") -Printsheshesheshesheshess (10) -System.Van.Impaima ("+") -Printsheshesheshesheshess (10) -System.Van.Impaima ("+") -Printshesheshesheshess (16) - Sustav.Van.Impaima ("+") -Printshesheshesheshes (18) -System.Van.Println ("
  • paisprezece. Presjeci Jocul. În ravnatelj, Clasa Iniţializează obistla Rockerchipsors şi Spuneţi-i Metoda Presjeci Jocul ().

    Javni statički ravnatelj praznine (şir [] Args) {RockpersCiss Game = Novi Rockperscascassassors () - Joc.Potpustiti Jocul () -}
  • Zamislite Intiturită Shot 2013 06 23 LA 2.27.50 AM.jpg
    Cincisprezece. Testaţi jocul. Acum Că toată Munca este în Urmă, este Timpul Să compilaţi şi să vă testaţi jocul!
  • Exemplu de Program

    Invespondeţi Java.UTIL.Random-uvoz Java.UTIL.Scaleer-klasa javni rockProperssors {utilizator Privat Korisnici-privatno računalo-privatni korisnički korisnici - privatni INT Computerscore-Privatni INT Noterofgames-privatni Enum Premjestiti {Rock, hârtie, Fearfece - / *** Usporedite mişrearea Curentă Cu transmisere Victorie, înfran`ngere sau remiză.** @param Altamove * Cursul Cu Care Accul * @return 1 este Usporedi Dacă Mutarea Curenă Bate Cealtă, -1 dacă o altă mişcare Bate Curetul, * 0 în Cazul Unei Remoi Remoze * / Javna int Usporedi (Mutare Ostalo Mimove) {/ / Draw == OTHERMOVE) RETACI 0-prekidač (Acest) {Case Rock: întocere (ostalo) == FOARFECE ? 1: -1) Hârtie: povratak (Altcalmime == Rock ? 1: -1) -Foarfece: întorcere (Altcineva == hârtie ? 1: -1) -} // acest cod nubuuie să fie fe executat niciodată /}} Utilizator de Clasă Privată {Private Scanner Inputscanner-korisnici () {Inputscanner = Scanner Nou (sistem.U) -} javni potez getmove () {// afisează o cerere de intrare.Van.Impaima ("Piatră, Fearfece sau hârtie? ") - // Citiţi intrarea de Koritator Usecinput = Inputscanner.Linia Urmăoare () - UsnicayPut = UsnicayPut.Touppercass () - Char FirstTter = Userputput.Charat (0) - ako (ferletter == `K` || Prvi tter == `n` || || `prvi ==` B `) {// Uvod Corectăswitch (prvi put) {Case` K `: Reveniţi.Rock-Caz "H": Reveniţi.Cazul de hârtie "B": Reveniţi.FOARFECE -}} // Pridržavati se. Aluceţi o cerere de intra din nou.Retur Getmove () -} Public Boolean Playagain () {sistem.Van.Impaima ("Doriţi să Jucaţi Din Nou? ") -String Usnicationput = Inputscanner.Linia Urmăoare () - UsnicayPut = UsnicayPut.Touppercase () - povratak userput.Charat (0) == y `-}} kalkulator de clasă privată {javni potez getmove () {mutare [] mişcări = mutare.Valori () - slučajni slučajni = novi slučajni () - ind indeks = aleatoriu.Următorul (se mişcă.Lungime) -Recture Mută ​​[Index] -}} Public RockpersCises () {utilizator = Korištenje nou () - računalo = računalo nou () - utilizatorcore = 0-computerscore = 0-NumereOfgames = 0-} Javni Vodgame () { Sistem.Van.Println ("Fizuare de haltie rock!") - // Obţineaa Mişcării UserMove = Korisnik.Getmove () - Mutare ComputerMove = računalo.Getmove () - sistem.Van.Println ("Nut-nesreća vaskularni cerebralni " + Usermave + ".") -Sustav.Van.Println ("Compulal Care Direază " + Computermove + ".N") - // kompatarea mişcărilor şi defiţia winnentint comparemoves = usemove.Usporediti (comparemoves) {caz 0: // crta.Van.Println ("Cravată!") -Ak-CAZ 1: // învins sistemul de Jucători.Van.Println (UseMove + " Beats " + Computermove + ". Ai Castigat!") -Usersercore ++ - break-caz -1: // a învins komplicizam.Van.Println (ComputerMove + " Beats " + Usermave + ". Ai Pierdut.") - Computerscore ++ - Break-} NumarofGames ++ - // oferim utilizatorului s redea din nou (korisnik.PlayGain ()) {sistem.Van.Println () - StartGame () -} Alte {PrintGamestats () -}} / *** Concluzie de statistici. Datale Sunt DayUM în se ponašati ca p pe jumătate de adgncime * atuncija când numără Procentajul de Victorii.* / Volumul Privat PrintGamestats ()% 13.2f %% privatni Vorid Prinsadshes (INTROFDASHES) {pentru (int i = 0- i < numberOfDashes- i++) {System.out.print("-")-}}public static void main(String[] args) {RockPaperScissors game = new RockPaperScissors()-game.startGame()-}}
    Slične publikacije