Pob Zeb, Ntawv, Txiab yog tes ua si los ntawm ob tus neeg. Ob tus tib neeg yuav hais "pob zeb, ntawv, txiab txaij" thiab tom qab ntawd ib txhij tsim ib qho ntawm peb yam khoom (pob zeb, ntawv, lossis txiab) nrog txhais tes nthuav. Tus yeej yog txiav txim siab los ntawm tes tsim. Txiab ntaus ntawv, ntawv ntaus pob zeb, thiab pob zeb ntaus txiab. Yog tias ob tus neeg ua si ua tib lub tes tsim, nws suav tias yog khi. Peb yuav sau qhov kev ua si yooj yim hauv Java los simulates Pob Zeb, Ntawv, Txiab txiab uas ib tus neeg siv yog tus siv thiab lwm tus neeg siv yog lub khoos phis tawj.
Cov kauj ruam
Kauj Ruam 1. Tsim cov chav kawm tseem ceeb thiab hu rau nws
RockPaperScissors
.
Qhov no yuav yog chav kawm uas peb yuav sau qhov kev ua si. Koj tuaj yeem xaiv lub npe nws lwm yam xws li
Game
los yog
Lub ntsiab
. Sau hauv txoj kev tshaj tawm rau tus tsim thiab txoj hauv kev tseem ceeb.
pej xeem chav RockPaperScissors {pej xeem RockPaperScissors () {} pej xeem zoo li qub tsis muaj dab tsi tseem ceeb (Txoj hlua args) {}}
Kauj Ruam 2. Tsim kev suav sau rau tes taw (pob zeb, ntawv, lossis txiab)
Peb tuaj yeem siv cov hlua los sawv cev pob zeb, ntawv, lossis txiab, tab sis kev suav sau tso cai rau peb ua ntej ua ntej peb qhov txuas ntxiv uas txhais tau tias kev siv cov suav suav yog kev tsim qauv zoo dua. Peb yuav hu peb hom enum
Tsiv
nrog qhov tseem ceeb
ROCK
PAPER
thiab
SCISSORS
ntiag tug enum txav {ROCK, PAPER, SCISSORS}
Kauj Ruam 3. Tsim ob chav kawm ntiag tug
Tus neeg siv
thiab
Khoos phis tawj
.
Cov chav kawm no yuav sawv cev rau peb cov players hauv qhov kev ua si. Koj tuaj yeem xaiv ua cov chav kawm no rau pej xeem. Cov
Tus neeg siv
chav kawm yuav yog chav kawm uas qhia tus neeg siv rau pob zeb, ntawv, lossis txiab, yog li peb yuav tsum sau
tau txais ()
txoj kev. Cov
Khoos phis tawj
chav kawm tseem yuav tsum muaj a
tau txais ()
txoj hauv kev kom lub khoos phis tawj tseem tuaj yeem txav mus. Peb yuav muab cov neeg tso rau hauv cov txheej txheem no thiab siv lawv tom qab. Cov
Tus neeg siv
chav kawm yuav xav tau tus tsim tawm uas teeb tsa
Scanner
yam khoom siv rau hauv tus neeg siv tswv yim. Peb yuav tso
Scanner
raws li tus kheej ntiag tug rau tus neeg siv thiab tom qab ntawd pib nws hauv tus tsim. Txij li thaum peb siv lub
Scanner
chav kawm, peb yuav tsum sau cov lus hais tawm rau nws nyob rau sab saum toj ntawm peb cov cai. Cov
Khoos phis tawj
chav kawm tsis xav tau tus tsim khoom, yog li peb tsis tas yuav sau ib qho; thaum peb pib lub
Khoos phis tawj
yam khoom, peb yuav tsuas yog hu rau tus tsim ua haujlwm. Nov yog qhov peb paub
RockPaperScissors
chav kawm zoo li tam sim no:
ntshuam java.util. Scanner; pej xeem chav RockPaperScissors {tus kheej enum Txav mus {ROCK, PAPER, SCISSORS} tus kheej chav siv {tus kheej Scanner inputScanner; pej xeem neeg siv () {inputScanner = Scanner tshiab (System.in); } pej xeem Txav mus getMove () {// TODO: Siv txoj hauv kev no rov qab null; }} chav kawm ntiag tug Computer {pej xeem txav mus getMove () {// TODO: Siv txoj hauv kev no rov qab null; }} pej xeem RockPaperScissors () {} pej xeem zoo li qub tsis muaj dab tsi tseem ceeb (Txoj hlua args) {}}
Kauj Ruam 4. Sau
tau txais ()
method rau
Khoos phis tawj
chav kawm
Txoj kev no yuav rov ua qhov tsis raug
Tsiv
. Peb tuaj yeem tau txais ib qho array ntawm
Tsiv
kev suav sau los ntawm kev hu rau
qhov tseem ceeb ()
txoj kev:
Move.values ()
. Txhawm rau xaiv qhov tsis raug
Tsiv
kev suav sau hauv qhov tseem ceeb no, peb yuav tsum tsim kom muaj qhov ntsuas ntsuas tsis sib xws uas yog cov lej nruab nrab ntawm 0 thiab qhov ntev ntawm peb qhov txiaj ntsig zoo. Txhawm rau ua qhov no, peb tuaj yeem siv Cov
tom ntej no ()
method ntawm
Random
chav kawm uas peb xav tau los ntawm
java.util
. Tom qab peb tau txais qhov ntsuas ntsuas tsis raug, peb tuaj yeem xa rov qab
Tsiv
ntawm qhov ntsuas los ntawm peb qhov txiaj ntsig array.
pej xeem txav getMove () {Tsiv txav = Move.values (); Random random = Random tshiab (); int index = random.nextInt (moves.length); rov txav [index]; }
Kauj Ruam 5. Sau
tau txais ()
method rau
Tus neeg siv
chav kawm
Txoj kev no yuav rov qab a
Tsiv
sib thooj rau qhov tus neeg siv tau nkag mus. Peb yuav cia siab tias tus neeg siv yuav sau "pob zeb", "ntawv", lossis "txiab". Ua ntej, peb yuav tsum tau hais kom tus neeg siv nkag mus:
System.out.print ("Pob zeb, ntawv, lossis txiab?")
. Tom qab ntawd siv lub
tom ntejLine ()
method ntawm
Scanner
object kom tau txais cov neeg siv tswv yim ua ib txoj hlua. Peb xav tau tam sim no yuav tsum tau txheeb xyuas yog tias tus neeg siv tau xa qhov hloov pauv tau, tab sis peb tuaj yeem ua siab ntev yog tias tus neeg siv tau sau ib lo lus tsis raug. Yog li peb tsuas yog txheeb xyuas yog tias thawj tsab ntawv ntawm tus neeg siv nkag mus yog "R" (rau pob zeb), "P" (rau ntawv), lossis "S" (rau txiab), thiab peb yuav tsis quav ntsej txog rooj plaub vim tias peb yuav xub siv lub
toUpperCase ()
method ntawm
Txoj hlua
chav kawm kom ua rau cov neeg siv cov hlua nkag tau txhua tus ntawv loj. Yog tias tus neeg siv tsis tau nkag mus rau cov lus nkag teb chaws raug, peb yuav qhia tus neeg siv dua. Tom qab ntawd, nyob ntawm seb tus neeg siv tau muab tso rau hauv, peb yuav xa rov qab qhov sib xws.
pej xeem txav getMove () {// Hais kom tus neeg siv System.out.print ("Pob zeb, ntawv, lossis txiab?"); // Tau txais tus neeg siv cov lus siv txoj hlua userInput = inputScanner.nextLine (); userInput = userInput.toUpperCase (); char firstLetter = userInput.charAt (0); yog (firstLetter == 'R' || firstLetter == 'P' || firstLetter == 'S') {// Tus neeg siv tau nkag mus rau qhov hloov pauv siv tau (firstLetter) {case 'R': rov Move. ROCK; rooj plaub 'P': xa Move. PAPER; rooj plaub 'S': rov qab Move. SCISSORS; }} // Tus neeg siv tsis tau nkag mus rau qhov siv tau. Hais dua. rov getMove (); }
Kauj Ruam 6. Sau a
playAgain ()
method rau
Tus neeg siv
chav kawm
Tus neeg siv yuav tsum muaj peev xwm ua si qhov kev ua si ntau thiab ntau dua. Txhawm rau txiav txim siab seb tus neeg siv xav rov ua si dua, peb yuav tsum sau a
playAgain ()
txoj kev uas rov qab boolean qhia qhov kev ua si seb tus neeg siv tau txiav txim siab rov ua si dua lossis tsis. Hauv txoj kev no, peb tab tom siv
Scanner
uas peb tau pib ua ntej hauv tus tsim kom tau txais "Yog" lossis "Tsis Yog" los ntawm tus neeg siv. Peb yuav tsuas yog txheeb xyuas yog tias thawj tsab ntawv yog 'Y' los txiav txim seb tus neeg siv xav rov ua si dua. Lwm yam kev tawm tswv yim yuav txhais tau tias tus neeg siv tsis xav rov ua si dua.
pej xeem boolean playAgain () {System.out.print ("Koj puas xav rov ua dua?"); Txoj hlua userInput = inputScanner.nextLine (); userInput = userInput.toUpperCase (); rov qab userInput.charAt (0) == 'Y'; }
Kauj Ruam 7. Txuas lub
Tus neeg siv
thiab
Khoos phis tawj
cov chav kawm ua ke hauv
RockPaperScissors
chav kawm
Tam sim no peb tau ua tiav kev sau ntawv
Tus neeg siv
thiab
Khoos phis tawj
cov chav kawm, peb tuaj yeem tsom mus rau ua haujlwm ntawm peb qhov kev ua si tiag. Tsim cov chaw ntiag tug rau
Tus neeg siv
thiab
Khoos phis tawj
cov chav kawm hauv
RockPaperScissors
chav kawm Peb yuav tsum nkag mus rau cov haujlwm no txhawm rau nkag mus rau
tau txais ()
cov txheej txheem thaum peb tab tom ua si. Nyob rau hauv lub constructor rau
RockPaperScissors
chav kawm, pib ua cov haujlwm no. Peb tseem yuav tsum tau taug qab cov qhab nia hauv
userScore
thiab
ComputerScore
teb, uas peb xav tau pib ua 0 hauv tus tsim. Peb yuav tsum tau taug qab tus lej ntawm cov kev ua si ib yam, uas tseem yuav yog thaj chaw pib ua 0.
tus neeg siv ntiag tug; private Computer lub computer; ntiag tug int userScore; ntiag tug int computerScore; ntiag tug int numberOfGames; pej xeem RockPaperScissors () {user = user tshiab (); computer = tshiab Computer (); userScore = 0; ComputerScore = 0; numberOfGames = 0; }
Kauj Ruam 8. Ncua qhov
Tsiv
enum suav nrog txoj hauv kev uas qhia peb uas txav mus yeej hauv txhua kis.
Peb yuav tsum sau a
sib pivMoves ()
txoj kev uas rov qab 0 yog tias kev txav mus los zoo ib yam, 1 yog tias qhov kev txav tam sim no ntaus lwm qhov txav, thiab -1 yog tias qhov kev txav tam sim no poob rau lwm qhov txav. Qhov no yuav muaj txiaj ntsig rau kev txiav txim siab tus yeej hauv qhov kev ua si. Txhawm rau siv txoj hauv kev no, peb yuav xub rov qab 0 yog tias kev txav mus los zoo ib yam thiab yog li peb muaj txoj hlua khi. Tom qab ntawd sau cov lus hloov pauv rau rov qab 1 lossis -1.
ntiag tug enum Tsiv {ROCK, PAPER, SCISSORS; /** * Sib piv qhov kev txav no nrog lwm qhov txav mus rau kev txiav txim siab khi, yeej, lossis * poob. * * @param otherMove * txav los sib piv rau * @return 1 yog tias qhov kev txav no ntaus lwm qhov txav, -1 yog tias qhov kev txav no poob rau * lwm qhov txav, 0 yog tias cov kev txav no sib koom * / pej xeem int sib pivMoves (Txav mus rau lwm qhov txav) { / / Tie if (this == otherMove) return 0; hloov (qhov no) {rooj plaub ROCK: rov qab (otherMove == SCISSORS? 1: -1); rooj PAPER: rov qab (otherMove == ROCK? 1: -1); rooj SCISSORS: rov qab (otherMove == PAPER? 1: -1); } // Yuav tsum tsis txhob mus txog ntawm no rov qab 0; }}
Kauj Ruam 9. Tsim a
startGame ()
method hauv
RockPaperScissors
chav kawm
Txoj kev no yuav yog kev ua si ntawm qhov kev ua si. Pib tawm los ntawm kev muab qhov yooj yim
System.out.println
nyob rau hauv txoj kev.
pej xeem void startGame () {System.out.println ("ROCK, PAPER, SCISSORS!"); }
Kauj Ruam 10. Tau txav los ntawm tus neeg siv thiab lub khoos phis tawj
Hauv
startGame ()
method, siv cov
tau txais ()
cov txheej txheem los ntawm
Tus neeg siv
class thiab
Khoos phis tawj
chav kawm kom tau txais tus neeg siv thiab lub khoos phis tawj txav mus los.
Tsiv userMove = user.getMove (); Tsiv computerMove = computer.getMove (); System.out.println ("\ nKoj tau ua" + userMove + "."); System.out.println ("Computer ua si" + computerMove + ". / N");
Kauj Ruam 11. Sib piv ob qhov txav mus thiab txiav txim seb tus neeg siv yeej lossis lub khoos phis tawj yeej
Siv cov
sib pivMoves ()
method los ntawm
Tsiv
enum los txiav txim seb tus neeg siv yeej lossis tsis. Yog tias tus neeg siv yeej, nce tus neeg siv cov qhab nia los ntawm 1. Yog tias tus neeg siv poob, nce lub computer cov qhab nia los ntawm 1. Yog tias muaj kev sib khi, tsis txhob nce ib qho ntawm cov qhab nia. Tom qab ntawd nce tus naj npawb ntawm cov game ua si los ntawm ib qho.
int sib pivMoves = userMove.compareMoves (computerMove); hloov (sib pivMoves) {rooj plaub 0: // Tie System.out.println ("Tie!"); tawg; rooj plaub 1: // Tus neeg siv yeej System.out.println (userMove + "ntaus" + computerMove + ". Koj yeej!"); userScore ++; tawg; rooj plaub -1: // Lub computer yeej System.out.println (computerMove + "ntaus" + userMove + ". Koj poob lawm."); ComputerScore ++; tawg; } numberOfGames ++;
Kauj Ruam 12. Nug yog tias tus neeg siv xav rov ua si dua
Yog tias tus neeg siv xav rov ua si dua, hu
startGame ()
dua. Txwv tsis pub, hu
printGameStats ()
uas yuav luam tawm cov txheeb cais ntawm qhov kev ua si. Peb yuav sau txoj hauv kev no hauv cov kauj ruam tom ntej.
yog (user.playAgain ()) {System.out.println (); startGame (); } lwm {printGameStats (); }
Kauj Ruam 13. Sau
printGameStats ()
txoj kev.
Txoj hauv kev no yuav tso tawm qhov txheeb cais ntawm qhov kev ua si: tus lej yeej, tus lej poob, tus lej sib tw, tus lej ntawm cov kev ua si, thiab feem pua ntawm cov kev ua si yeej los ntawm tus neeg siv. Feem pua ntawm kev ua si yeej yog xam los ntawm (# yeej + (# sib txuas/2))/(# ua si ua si). Txoj kev no siv
System.out.printf
luam tawm cov ntawv uas tau muab kho dua.
ntiag tug void printGameStats () {int yeej = userScore; int losses = computerScore; int ties = numberOfGames - userScore - computerScore; ob feem puaWon = (yeej + ((ob npaug) kev sib raug zoo) / 2) / numberOfGames; // Kab System.out.print ("+"); printDashes (68); System.out.println ("+"); // Luam cov npe System.out.printf ("| %6s | %6s | %6s | %12s | %14s | / n", "WINS", "LOSSES", "TIES", "GAMES PLAYED", "PERCENTAGE YOG "); // Kab System.out.print ("|"); printDashes (10); System.out.print ("+"); printDashes (10); System.out.print ("+"); printDashes (10); System.out.print ("+"); printDashes (16); System.out.print ("+"); printDashes (18); System.out.println ("|"); // Luam qhov tseem ceeb System.out.printf ("| %6d | %6d | %6d | %12d | %13.2f %% | / n", yeej, poob, sib raug zoo, numberOfGames, feem puaWon * 100); // Kab System.out.print ("+"); printDashes (68); System.out.println ("+"); }
Kauj Ruam 14. Pib qhov kev ua si hauv chav kawm tseem ceeb
Hauv chav kawm tseem ceeb, pib ua piv txwv ntawm
RockPaperScissors
class thiab hu rau
startGame ()
txoj kev.
pej xeem tsis muaj nuj nqis zoo li qub (Txoj hlua args) {RockPaperScissors game = RockPaperScissors tshiab (); game.startGame (); }
Kauj Ruam 15. Kuaj koj qhov kev ua si
Tam sim no peb tau dhau los ntawm txhua qhov kev mob siab rau sau Pob Zeb, Ntawv, Txiab game, nws yog lub sijhawm los sau thiab sim txhua yam tawm!
Qauv Qauv
ntshuam java.util. Random; ntshuam java.util. Scanner; pej xeem chav RockPaperScissors {tus neeg siv ntiag tug; private Computer lub computer; ntiag tug int userScore; ntiag tug int computerScore; ntiag tug int numberOfGames; ntiag tug enum Tsiv {ROCK, PAPER, SCISSORS; /** * Sib piv qhov kev txav no nrog lwm qhov txav mus rau kev txiav txim siab khi, yeej, lossis * poob. * * @param otherMove * txav los sib piv rau * @return 1 yog tias qhov kev txav no ntaus lwm qhov txav, -1 yog tias qhov kev txav no poob rau * lwm qhov txav, 0 yog tias cov kev txav no sib koom * / pej xeem int sib pivMoves (Txav mus rau lwm qhov txav) { / / Tie yog (qhov no == otherMove) rov qab 0; hloov (qhov no) {rooj plaub ROCK: rov qab (otherMove == SCISSORS? 1: -1); rooj PAPER: rov qab (otherMove == ROCK? 1: -1); rooj SCISSORS: rov qab (otherMove == PAPER? 1: -1); } // Yuav tsum tsis txhob mus txog ntawm no rov qab 0; }} chav kawm ntiag tug Tus neeg siv {tus kheej Scanner inputScanner; pej xeem neeg siv () {inputScanner = Scanner tshiab (System.in); } pej xeem txav getMove () {// Hais kom tus neeg siv System.out.print ("Pob zeb, ntawv, lossis txiab?"); // Tau txais tus neeg siv cov khoom siv txoj hlua userInput = inputScanner.nextLine (); userInput = userInput.toUpperCase (); char firstLetter = userInput.charAt (0); yog (firstLetter == 'R' || firstLetter == 'P' || firstLetter == 'S') {// Tus neeg siv tau nkag mus rau qhov hloov pauv nkag tau siv tau (firstLetter) {case 'R': rov Move. ROCK; rooj plaub 'P': xa Move. PAPER; rooj plaub 'S': xa Move. SCISSORS; }} // Tus neeg siv tsis tau nkag mus rau qhov siv tau. Hais dua. rov getMove (); } pej xeem boolean playAgain () {System.out.print ("Koj puas xav rov ua dua?"); Txoj hlua userInput = inputScanner.nextLine (); userInput = userInput.toUpperCase (); rov qab userInput.charAt (0) == 'Y'; }} chav kawm ntiag tug Computer {pej xeem txav getMove () {Tsiv txav = Move.values (); Random random = Random tshiab (); int index = random.nextInt (moves.length); rov txav [index]; }} pej xeem RockPaperScissors () {neeg siv = neeg siv tshiab (); computer = tshiab Computer (); userScore = 0; ComputerScore = 0; numberOfGames = 0; } pej xeem void startGame () {System.out.println ("ROCK, PAPER, SCISSORS!"); // Tau txais txav txav userMove = user.getMove (); Tsiv computerMove = computer.getMove (); System.out.println ("\ nKoj tau ua" + userMove + "."); System.out.println ("Computer ua si" + computerMove + ". / N"); // Sib piv txav thiab txiav txim siab tus yeej int sib pivMoves = userMove.compareMoves (computerMove); hloov (sib pivMoves) {rooj plaub 0: // Tie System.out.println ("Tie!"); tawg; rooj plaub 1: // Tus neeg siv yeej System.out.println (userMove + "ntaus" + computerMove + ". Koj yeej!"); userScore ++; tawg; rooj plaub -1: // Lub computer yeej System.out.println (computerMove + "ntaus" + userMove + ". Koj poob lawm."); ComputerScore ++; tawg; } numberOfGames ++; // Nug tus neeg siv kom rov ua si yog (user.playAgain ()) {System.out.println (); startGame (); } lwm {printGameStats (); }} /*** Luam tawm cov txheeb cais ntawm qhov kev ua si. Laij kev sib raug zoo raws li 1/2 yeej hauv * feem pua yeej. */ ntiag tug tsis muaj dab tsi printGameStats () {int yeej = userScore; int losses = computerScore; int ties = numberOfGames - userScore - computerScore; ob feem puaWon = (yeej + ((ob npaug) kev sib raug zoo) / 2) / numberOfGames; // Kab System.out.print ("+"); printDashes (68); System.out.println ("+"); // Luam cov npe System.out.printf ("| %6s | %6s | %6s | %12s | %14s | / n", "WINS", "LOSSES", "TIES", "GAMES PLAYED", "PERCENTAGE YOG "); // Kab System.out.print ("|"); printDashes (10); System.out.print ("+"); printDashes (10); System.out.print ("+"); printDashes (10); System.out.print ("+"); printDashes (16); System.out.print ("+"); printDashes (18); System.out.println ("|"); // Luam qhov tseem ceeb System.out.printf ("| %6d | %6d | %6d | %12d | %13.2f %% | / n", yeej, poob, sib koom, numberOfGames, feem puaWon * 100); // Kab System.out.print ("+"); printDashes (68); System.out.println ("+"); } ntiag tug tsis muaj dab tsi printDashes (int numberOfDashes) {rau (int i = 0; kuv <numberOfDashes; i ++) {System.out.print ("-"); }} pej xeem zoo li qub tsis muaj qhov tseem ceeb (Txoj hlua args) {RockPaperScissors game = RockPaperScissors tshiab (); game.startGame (); }}