Hogyan írjunk egy játékot `stone, olló, paper on java

"Stone, olló, papír" - ez egy játék "az ujjakon" két. A játékosok azt mondják: "Stone, olló, papír", és eldobta előre a kéz, alkotó három szám (kő, olló vagy papír). A győztes a következőképpen határozható meg: olló verte papírt, papír verte egy kő, kőverseny olló. Ha mindkét játékos ugyanazt az értéket mutatja, akkor rajzolják. Egy egyszerű játékot fogunk írni a Java-ra, amely "kő, olló, papír" számítógéppel fog játszani.

Lépések

egy. Hozzon létre egy alaposztályt és nevezze meg Kő papír olló. Ebben az osztályban leírjuk a játékot. Másként hívhatja, például Játszma, meccs vagy . Írjon tervező hirdetést és fő módszert.

Nyilvános osztályú rockpaperscissors {Public Rockpaperscissors () {} Nyilvános Void Main (string [] args) {}}
  • 2. Hozzon létre egy listát (enum) a lehetséges mozdulatok (kő, olló, papír) leírásához. Megállíthatjuk a futó karakterláncokat, de a lista lehetővé teszi számunkra, hogy előre meghatározott legyen az állandó, így az enum használata jobb. Hívjuk fel a listát Mozog És állítsa be a jelentéseketSzikla, Papírés Olló.

    Magán enum mozog {Rock, Paper, Scissors}
  • 3. Hozzon létre két zárt osztályt (kulcsszó privát) osztály Felhasználó és Számítógép. Ezek az osztályok képviselik a játékosokat. Ezeket az osztályokat is megnyithatja (nyilvános kulcsszó). OsztályFelhasználó kéri a felhasználótól, milyen mozog - kő, olló vagy papír - így meg kell írnunk egy módszert getmove (). OsztálySzámítógép kell egy módszert isgetmove (), Úgy, hogy kaphatunk egy számítógépet. Eddig egyszerűen kijelentjük ezeket a módszereket, és később megírják a végrehajtást. Osztály Felhasználó Rendelkeznie kell egy olyan konstruktorral, amelyben az objektum inicializálása Scanner, amely a felhasználói bemenetet olvasja. KijelentScanner Zárt tagja az osztályadatoknak Felhasználó és inicializálja a tervezőben. Mivel az osztályt fogjuk használni Scanner, Kulcsszó segítségével kell csatlakoztatnunk Importálás . Osztály Számítógép A tervező nem szükséges, ezért nem fogjuk írni - az objektum inicializálásakor Számítógép Egyszerűen hívjuk az alapértelmezett tervezőt. Itt van az osztály Kő papír olló Most úgy néz ki:

    Import Java.Util.Scanner-Public Class RockPaperscissors {Private Felsorolt ​​Move {Rock, Paper, Scissors} Saját Class felhasználó {Private Scanner InputScanner-Public felhasználó () {inputScanner = Új Scanner (Rendszer.In) -} Public Move GetMove () {// TODO: A Meturn Null -} Végrehajtása}} Privát osztályú számítógép {Public Move GetMove () {Public Move GetMove () {// TODO: A METurn Null -} végrehajtása Nyilvános rockpaperscissors () {} nyilvános statikus üresség fő (string [] args) {}}
  • 4. Írja be a módszer végrehajtását getmove () Órára Számítógép. Ez a módszer véletlen értéket fog visszaadni Mozog.Kaphatunk egy sor értéket Mozog Módszer hívása Értékek () mint ez: Mozog.Értékek (). Véletlenszerű jelentés kiválasztása Mozog Ebből a tömbből véletlenszerű indexet kell létrehoznunk 0 és a tömbelem számának. Ehhez hívja a módszertNextint () osztályVéletlen , Amit összekapcsolunk:Import Java.Util.Véletlen. Miután véletlenszerű indexet kapott, visszatérítjük az értéket Mozog Ezzel az indexgel a tömbünkben.

    Nyilvános mozgalom getmove () {mozog [] mozog = mozog.Értékek () - véletlen véletlenszerű = új véletlen () - int index = véletlenszerű.Nextint (mozdulatok.Hossza) - A [Index] -} mozog
  • öt. Írja be a módszer végrehajtását getmove () Órára Felhasználó. Ez a módszer visszaadja az értéket Mozog Megfelelő felhasználói bemenet. A felhasználó beléphet "egy szikla", "olló", vagy "papír". Először, küldjön egy üzenetet: Rendszer.Ki.Nyomtatás ("Kő, olló vagy papír?"). Ezután a módszerrel Nextline () Tárgy Scanner, A felhasználói bemenetet egy karakterlánc formájában kapjuk meg. Most ellenőriznie kell a felhasználó helyességét. Azonban nem fogunk figyelmet fordítani a hibákra, és egyszerűen ellenőrizzük az első "K", "N" vagy "B" első betűt. Nem fogunk figyelmet fordítani a levelek nyilvántartására, mivel előre, hívjuk a módszert Touppercase () osztály Húr, Amikor belép a felhasználónak a felső regiszterre. Ha a felhasználó még nem lépett be körülbelül a helyes választás, kérem újra lépéseket. Ezután a felhasználói bemenet függvényében a módszerünk visszaadja a megfelelő értéket Mozog.

    Public Move GetMove () {// visszavonja a beírási kérelmet.Ki.Nyomtatás ("Kő, olló vagy papír? ") - // Olvassa el a Usersstring UserInput = InputScanner bemenetét.Nextline () - UserInput = UserInput.Touppercase () - char fastleter = userinput.Charat (0) -ab (tőke == `k` || tőke == `n` || tőke == `b`) {// A korrekcióba (elsőfokú) {Case `K`: Visszatérés.Rock-tok "H": visszatérés.Papír-tok "B": visszatérés.Olló -}} // Helytelen. Hozzon létre egy kérést.Visszatérés GetMove () -}
  • 6. Írja be a módszer végrehajtását Játszd újra () osztály Felhasználó. A felhasználónak újra és újra le kell játszania. Annak megállapításához, hogy a felhasználó újra szeretne játszani, írjon módját Játszd újra (), amely visszaadja a bool típusának értékét, és így elmondja a játéknak, hogy a felhasználó újra szeretne játszani. Ebben a módszerben az objektumot használjuk Scanner , amelyet a tervezőben inicializáltunk"Igen" vagy"Nem" A felhasználóból. Csak ellenőrizzük az első betűt, ha azt szeretné, hogy a felhasználó újra le akarja játszani, bármely más levél azt jelenti "Nem".

    Nyilvános Boolean PlayAgain () {rendszer.Ki.Nyomtatás ("Szeretne újra játszani? ") Userinput = inputscanner.Nextline () - UserInput = UserInput.Touppercase () - Visszatérő felhasználás.Charat (0) == `d`-}
  • 7. Kötési osztálykód Felhasználó és osztály Számítógép osztályban Kő papír olló. Osztályok írása Felhasználó és Számítógép, Maga a játékot is megtehetjük. Adja meg az osztályokat Felhasználó és Számítógép Zárt osztályadatok Kő papír olló. Rájuk utalunk, ami egy módszert okoz getmove (), A játékosok megszerzése. Inicializálja őket egy osztálytervezőben Kő papír olló. Szükségünk van egy fiókot is. Beállítani FelhasználókKerület és Computerscore, Linitiase őket nulla. Végül hozzon létre egy adatmezőt a játékok számának tárolásához, szintén nulla használatával.

    Privát felhasználói felhasználó-privát számítógépes számítógép-magán intruscore-private int computerscore-magán int számmames-nyilvános rockpaperscissors () {felhasználó = új felhasználó () - számítógép = új számítógép () - felhasználói core = 0-computerscore = 0-numberofgames = 0 -}
  • nyolc. Teljes lista Mozog módszer, amely összehasonlítja a lépéseket és meghatározza a győztest. Kódot kódolunk a módszerhez Összehasonlítás () amely vissza fog térni 0, ha a mozdulatok azonosak, 1 - ha az aktuális futás a másik és -1 - ha egy másik lépés üti az áramot. Az aktuális futtatást ez a mutató mutatja, a másik pedig a másikban a másik. Hasznos a győztes meghatározása. Először írjuk a kódot, amely meghatározza a rajzot és a visszatérést 0, majd írja be a kapcsoló utasítását a győztes meghatározásához.

    Magán enum Mozgás {Rock, Paper, Olló - / *** Összehasonlítja az aktuális lépést a Más Mondtexove paraméterben, és meghatározza a * győzelmet, vereséget vagy rajzot.** @param otherMove * Az aktuális * @return 1 pálya összehasonlítása, ha az aktuális lépés a másik, -1, -1 ha egy másik mozdulattal megveri az áramot, * 0-at a Draw * / Public In Összehasonlítás esetén (lépés) OtherMove) {// Draw == otherMove) Visszatérés 0-kapcsoló (ez) {Case Rock: Return (otherMove == olló ? 1: -1) -case papír: Visszatérés (otherMove == rock ? 1: -1) -case olló: Visszatérés (otherMove == Paper ? 1: -1) -} // Ez a kód soha nem kerül végrehajtásra 0-}}
  • kilenc. Bejelentse a módszert Játék kezdése () osztályban Kő papír olló. Ebben a módszerben lesz egy játék. Kezdődik a módszer hívásával Rendszer.Ki.Println.

    Nyilvános Void StartGame () {rendszer.Ki.Println ("KŐ PAPÍR OLLÓ!") -}
  • 10. Get Computer Strokes és Felhasználó. A módszerben Játék kezdése () Hívás getmove () osztályok Felhasználó és Számítógép , hogy mozogjanak.

    Mozgassa a USERMOVE = Felhasználó.Getmove () - Mozgassa a Computermove = számítógépet.GetMove () - rendszer.Ki.Println ("Nuta stroke" + USERMOVE + ".") -Rendszer.Ki.Println ("Számítógép futás" + Computermove + ".N")-
  • tizenegy. Hasonlítsa össze a számítógép menetét, és a játékos mozog, hogy meghatározza, ki nyert. Hívja a módszert Összehasonlítás () felsorolás Mozog, Annak megállapításához, hogy a felhasználó nyerte-e. Ha igen, növelje számláját 1. Ha nem, növelje a számítógép fiókját. Rajzolás esetén a törvényjavaslat ugyanaz marad. Ezt követően növelje az 1-es játékok számát.

    Int összehasonlítás = usermove.Összehasonlítás (összehasonlítás) {Case 0: // DrawSystem.Ki.Println ("Húz!") -Break-tok 1: // legyőzte a lejátszási rendszert.Ki.Println (USERMOVE + " Veri " + Computermove + ". Ön nyert!") -UsersCore ++ - Break-Case -1: // legyőzte a számítógépes rendszert.Ki.Println (Computermove + " Veri " + USERMOVE + ". Vesztettél.") -Computerscore ++ - Break-} Numberofgames++-
  • 12. Kérd meg a felhasználót, hogy újra akar játszani. Ha igen, hívja a módszert Játék kezdése () újra. Ha nem, hívja a módszert PrintGamestats (), amely a játék statisztikáit hozza. A következő lépésben írjuk be a megvalósítást.

    Ha (felhasználó.PlayAgain ()) {rendszer.Ki.Println () - StartGame () -} Else {PrintGamestats () -}
  • 13. Írja be a módszer végrehajtását PrintGamestats (). Ez a módszer visszavonja a játék statisztikáit: a győzelmek, elváltozások, felhívások száma, a játszott játékok száma és a játékos győzelmének százalékos aránya. A nyertes játékok százalékos aránya az alábbiak szerint történik: (a győzelmek száma + (rajzszámok száma / 2)) / (játszott játékok száma). Ez a módszer használ Rendszer.Ki.Printf A formázott szöveg kimenethez.

    Private Void PrintGamestats () ") -Printdashes (10) -System.Ki.Nyomtatás ("+") -Printdashes (10) -System.Ki.Nyomtatás ("+") -Printdashes (10) -System.Ki.Nyomtatás ("+") -Printdashes (16) -System.Ki.Nyomtatás ("+") -Printdashes (18) -System.Ki.Println ("
  • tizennégy. Játék kezdése. Főleg osztály Inicializálja az objektumot Kő papír olló és hívja az IT módszert Játék kezdése ().

    Nyilvános statikus üresség fő (string [] args) {rockpaperscissors játék = új rockpaperscissors () - játék.Játék kezdése () -}
  • Kép cím szerinti képernyő lövés 2013 06 23 2,27,50 am.jpg
    tizenöt. Tesztelje a játékot. Most, hogy minden munka mögött van, itt az ideje összeállítani és tesztelni a játékunkat!
  • Példa Program

    Import Java.Util.Véletlen-import Java.Util.Scanner-Public Class RockPaperscissors {privát felhasználói Felhasználó Private Számítógép Számítógép-Private INT Userscore-Private Int Computerscore-Private Int Numberofgames-Private Felsorolt ​​Move {Rock, Paper, Scissors - / *** összehasonlítja az aktuális menet közben továbbítani Othermove paraméter és meghatározza a * győzelmet, vereséget vagy rajzot.** @param otherMove * Az aktuális * @return 1 pálya összehasonlítása, ha az aktuális lépés a másik, -1, -1 ha egy másik mozdulattal megveri az áramot, * 0-at a Draw * / Public In Összehasonlítás esetén (lépés) OtherMove) {// Draw == otherMove) Visszatérés 0-kapcsoló (ez) {Case Rock: Return (otherMove == olló ? 1: -1) -case papír: Visszatérés (otherMove == rock ? 1: -1) -case olló: Visszatérés (otherMove == Paper ? 1: -1) -} // Ezt a kódot soha nem kell végrehajtani soha nem /}} Privát osztályú felhasználó {privát szkenner inputscanner-nyilvános felhasználó () {inputscanner = új szkenner (rendszer.In) -} Public Move GetMove () {// Megjeleníti a beírási kérést.Ki.Nyomtatás ("Kő, olló vagy papír? ") - // Olvassa el a Usersstring UserInput = InputScanner bemenetét.Nextline () - UserInput = UserInput.Touppercase () - char fastleter = userinput.Charat (0) -ab (tőke == `k` || tőke == `n` || tőke == `b`) {// A korrekcióba (elsőfokú) {Case `K`: Visszatérés.Rock-tok "H": visszatérés.Papír-tok "B": visszatérés.Olló -}} // Helytelen. Hozzon létre egy kérést.Visszatérés GetMove () -} Nyilvános Boolean PlayAgain () {rendszer.Ki.Nyomtatás ("Szeretne újra játszani? ") Userinput = inputscanner.Nextline () - UserInput = UserInput.Touppercase () - Visszatérő felhasználás.Charat (0) == `y` -}} Privát osztályú számítógép {Public Move GetMove () {mozog [] mozog = mozog.Értékek () - véletlen véletlenszerű = új véletlen () - int index = véletlenszerű.Nextint (mozdulatok.Hossza) - A [Index] -}} nyilvános rockpaperscissors () {felhasználó = új felhasználó () - számítógép = új számítógép () - felhasználói core = 0-computerscore = 0-numberofgames = 0-} nyilvános üresség STARTGAME ().Ki.Println ("KŐ PAPÍR OLLÓ!") - // Mozgás usermove = felhasználó.Getmove () - Mozgassa a Computermove = számítógépet.GetMove () - rendszer.Ki.Println ("Nuta stroke " + USERMOVE + ".") -Rendszer.Ki.Println ("Számítógép futás " + Computermove + ".N") - // A mozdulatok összehasonlítása és a Winnerint Comparemoves = usermove definíciója.Összehasonlítás (összehasonlítás) {Case 0: // DrawSystem.Ki.Println ("Nyakkendő!") -Break-tok 1: // legyőzte a lejátszási rendszert.Ki.Println (USERMOVE + " Veri " + Computermove + ". Ön nyert!") -UsersCore ++ - Break-Case -1: // legyőzte a számítógépes rendszert.Ki.Println (Computermove + " Veri " + USERMOVE + ". Vesztettél.") -Computerscore ++ - Break-} Numberofgames ++ - // A felhasználót újra lejátszjuk (felhasználó).PlayAgain ()) {rendszer.Ki.Println () - StartGame () -} Else {PrintGamestats () -}} / *** A statisztikák következtetése. A rajzokat félmélyekként veszik figyelembe * A győzelem százalékos aránya.* / Magán Void PrintGamestats ()% 13.2F %% Private Void PrintDashes (int NumberofDashes) {for (int i = 0- i < numberOfDashes- i++) {System.out.print("-")-}}public static void main(String[] args) {RockPaperScissors game = new RockPaperScissors()-game.startGame()-}}
    Hasonló publikációk