วิธีสร้างเกม Rock, Paper, Scissors ใน Java (พร้อมรูปภาพ)

สารบัญ:

วิธีสร้างเกม Rock, Paper, Scissors ใน Java (พร้อมรูปภาพ)
วิธีสร้างเกม Rock, Paper, Scissors ใน Java (พร้อมรูปภาพ)

วีดีโอ: วิธีสร้างเกม Rock, Paper, Scissors ใน Java (พร้อมรูปภาพ)

วีดีโอ: วิธีสร้างเกม Rock, Paper, Scissors ใน Java (พร้อมรูปภาพ)
วีดีโอ: แบบฝึกปฏิบัติที่ 6 การเพิ่มพื้นผิวบนรูปทรงวัตถุ 2024, อาจ
Anonim

Rock, Paper, Scissors เป็นเกมเล่นด้วยมือที่เล่นโดยคนสองคน ทั้งสองคนจะพูดว่า "หิน กระดาษ กรรไกร" แล้วทำสิ่งใดสิ่งหนึ่งจากสามสิ่งพร้อมกัน (หิน กระดาษ หรือกรรไกร) ด้วยมือที่ยื่นออกไป ผู้ชนะจะถูกกำหนดโดยรูปแบบของมือ กรรไกรตีกระดาษ กระดาษทุบหิน และกรรไกรทุบหิน หากผู้เล่นทั้งสองเล่นในรูปแบบมือเดียวกัน ถือว่าเสมอกัน เราจะเขียนเกมอย่างง่ายในภาษา Java เพื่อจำลอง Rock, Paper, Scissors โดยที่ผู้เล่นคนหนึ่งเป็นผู้ใช้และผู้เล่นอีกคนคือคอมพิวเตอร์

ขั้นตอน

1585279 1 1
1585279 1 1

ขั้นตอนที่ 1. สร้างคลาสหลักและเรียกมันว่า

RockPaperScissors

.

นี่จะเป็นคลาสที่เราจะเขียนเกม คุณอาจเลือกที่จะตั้งชื่ออย่างอื่นเช่น

เกม

หรือ

หลัก

. เขียนการประกาศเมธอดสำหรับคอนสตรัคเตอร์และเมธอดหลัก

RockPaperScissors คลาสสาธารณะ { RockPaperScissors สาธารณะ () { } โมฆะคงที่สาธารณะหลัก (สตริง args) { } }

1585279 2 1
1585279 2 1

ขั้นตอนที่ 2 สร้างการแจงนับสำหรับท่าทางของมือ (หิน กระดาษ หรือกรรไกร)

เราสามารถใช้สตริงแทนหิน กระดาษ หรือกรรไกร แต่การแจงนับช่วยให้เรากำหนดค่าคงที่ล่วงหน้าได้ ซึ่งหมายความว่าการใช้การแจงนับเป็นการออกแบบที่ดีกว่า เราจะเรียกประเภท enum ของเรา

เคลื่อนไหว

ด้วยคุณค่า

หิน

กระดาษ

และ

กรรไกร

enum ส่วนตัว ย้าย { ROCK, PAPER, SCISSORS }

1585279 3 1
1585279 3 1

ขั้นตอนที่ 3 สร้างสองคลาสส่วนตัว

ผู้ใช้

และ

คอมพิวเตอร์

.

คลาสเหล่านี้จะเป็นตัวแทนของผู้เล่นของเราในเกม คุณสามารถเลือกกำหนดให้ชั้นเรียนเหล่านี้เป็นแบบสาธารณะได้ NS

ผู้ใช้

class จะเป็น class ที่เตือนผู้ใช้ให้ใส่ rock, paper or scissors ดังนั้นเราจะต้องเขียน a

getMove()

กระบวนการ. NS

คอมพิวเตอร์

คลาสก็จะต้องมี a. ด้วย

getMove()

วิธีเพื่อให้คอมพิวเตอร์สามารถเคลื่อนไหวได้ เราจะใส่ตัวยึดตำแหน่งในวิธีการเหล่านี้และนำไปใช้ในภายหลัง NS

ผู้ใช้

คลาสจะต้องใช้ตัวสร้างที่ตั้งค่า

สแกนเนอร์

วัตถุที่จะใช้ในการป้อนข้อมูลของผู้ใช้ เราจะใส่

สแกนเนอร์

เป็นฟิลด์ส่วนตัวสำหรับผู้ใช้แล้วเริ่มในคอนสตรัคเตอร์ เนื่องจากเราใช้

สแกนเนอร์

เราต้องเขียนคำสั่งนำเข้าที่ด้านบนสุดของรหัสของเรา NS

คอมพิวเตอร์

คลาสไม่ต้องการคอนสตรัคเตอร์ ดังนั้นเราจึงไม่จำเป็นต้องเขียนคลาสใดคลาสหนึ่ง เมื่อเราเริ่มต้น

คอมพิวเตอร์

วัตถุ เราจะเรียกตัวสร้างเริ่มต้น นี่คือสิ่งที่.ของเรา

RockPaperScissors

คลาสดูเหมือนตอนนี้:

นำเข้า java.util. Scanner; RockPaperScissors คลาสสาธารณะ { enum ส่วนตัว ย้าย { ROCK, PAPER, SCISSORS } ผู้ใช้คลาสส่วนตัว { สแกนเนอร์ส่วนตัว inputScanner; ผู้ใช้สาธารณะ () { inputScanner = สแกนเนอร์ใหม่ (System.in); } public Move getMove () { // สิ่งที่ต้องทำ: ใช้วิธีนี้คืนค่า null; } } คลาสส่วนตัว คอมพิวเตอร์ { public Move getMove () { // สิ่งที่ต้องทำ: ใช้วิธีนี้คืนค่า null; } } RockPaperScissors สาธารณะ () { } โมฆะคงที่สาธารณะหลัก (สตริง args) { } }

1585279 4 1
1585279 4 1

ขั้นตอนที่ 4. เขียน

getMove()

วิธีการ

คอมพิวเตอร์

ระดับ.

วิธีนี้จะคืนค่าสุ่ม

เคลื่อนไหว

. เราสามารถรับอาร์เรย์ของ

เคลื่อนไหว

การนับโดยเรียก

ค่า ()

กระบวนการ:

ย้าย.values()

. เพื่อเลือกสุ่ม

เคลื่อนไหว

การแจงนับในอาร์เรย์ค่านี้ เราจำเป็นต้องสร้างดัชนีสุ่มที่เป็นจำนวนเต็มระหว่าง 0 ถึงความยาวของอาร์เรย์ค่าของเรา ในการดำเนินการนี้ เราสามารถใช้

ต่อไปInt()

วิธีการของ

สุ่ม

คลาสที่เราต้องนำเข้าจาก

java.util

. หลังจากที่เราได้รับดัชนีสุ่มแล้ว เราสามารถส่งคืน

เคลื่อนไหว

ของดัชนีนั้นจากอาร์เรย์ค่าของเรา

ย้ายสาธารณะ getMove () { ย้าย ย้าย = Move.values (); สุ่มสุ่ม = สุ่มใหม่ (); ดัชนี int = random.nextInt(moves.length); ย้ายกลับ[ดัชนี]; }

1585279 5 1
1585279 5 1

ขั้นตอนที่ 5. เขียน

getMove()

วิธีการ

ผู้ใช้

ระดับ.

วิธีนี้จะส่งคืน a

เคลื่อนไหว

สอดคล้องกับสิ่งที่ผู้ใช้ป้อน เราคาดหวังให้ผู้ใช้เขียนว่า "ร็อค" "กระดาษ" หรือ "กรรไกร" ขั้นแรก เราต้องแจ้งให้ผู้ใช้ป้อนข้อมูล:

System.out.print("หิน กระดาษ หรือกรรไกร?")

. จากนั้นใช้

ต่อไปบรรทัด()

วิธีการของ

สแกนเนอร์

วัตถุเพื่อรับอินพุตของผู้ใช้เป็นสตริง ตอนนี้เราต้องตรวจสอบว่าผู้ใช้ได้ส่งการย้ายที่ถูกต้องหรือไม่ แต่เราสามารถผ่อนผันได้หากผู้ใช้สะกดคำผิด ดังนั้นเราจะตรวจสอบเฉพาะตัวอักษรตัวแรกของข้อมูลที่ผู้ใช้ป้อนเป็น "R" (สำหรับร็อค), "P" (สำหรับกระดาษ) หรือ "S" (สำหรับกรรไกร) และเราจะไม่ใส่ใจกับกรณีนี้เพราะ ก่อนอื่นเราจะใช้

toUpperCase()

วิธีการของ

สตริง

คลาสเพื่อทำให้สตริงอินพุตของผู้ใช้เป็นตัวพิมพ์ใหญ่ทั้งหมด หากผู้ใช้ไม่ได้ป้อนข้อมูลที่ถูกต้องจากระยะไกล เราจะแจ้งผู้ใช้อีกครั้ง จากนั้นเราจะส่งคืนการย้ายที่เกี่ยวข้อง ทั้งนี้ขึ้นอยู่กับสิ่งที่ผู้ใช้ใส่เข้าไป

public Move getMove () { // แจ้งผู้ใช้ System.out.print ("หิน กระดาษ หรือกรรไกร"); // รับอินพุตของผู้ใช้ String userInput = inputScanner.nextLine(); userInput = userInput.toUpperCase (); ถ่าน firstLetter = userInput.charAt(0); if (firstLetter == 'R' || firstLetter == 'P' || firstLetter == 'S') { // ผู้ใช้ป้อนสวิตช์อินพุตที่ถูกต้อง (firstLetter) { กรณี 'R': return Move. ROCK; กรณี 'P': ส่งคืน Move. PAPER; กรณี 'S': ส่งคืน Move. SCISSORS; } } // ผู้ใช้ไม่ได้ป้อนข้อมูลที่ถูกต้อง แจ้งอีกครั้งครับ ส่งคืน getMove(); }

1585279 6
1585279 6

ขั้นตอนที่ 6. เขียน

เล่นอีกครั้ง()

วิธีการ

ผู้ใช้

ระดับ.

ผู้ใช้ควรจะสามารถเล่นเกมซ้ำแล้วซ้ำอีก เพื่อกำหนดว่าผู้ใช้ต้องการเล่นอีกครั้งหรือไม่ เราต้องเขียน a

เล่นอีกครั้ง()

วิธีที่ส่งคืนบูลีนที่บอกเกมว่าผู้ใช้ตั้งใจจะเล่นอีกครั้งหรือไม่ ในวิธีนี้ เราใช้

สแกนเนอร์

ที่เราได้เริ่มต้นใน Constructor เพื่อรับ "ใช่" หรือ "ไม่ใช่" จากผู้ใช้ เราจะตรวจสอบเฉพาะตัวอักษรตัวแรกคือ 'Y' เท่านั้นเพื่อพิจารณาว่าผู้ใช้ต้องการเล่นอีกครั้งหรือไม่ อินพุตอื่น ๆ จะหมายความว่าผู้ใช้ไม่ต้องการเล่นอีก

playAgain บูลีนสาธารณะ () { System.out.print ("คุณต้องการเล่นอีกครั้งหรือไม่ "); สตริง userInput = inputScanner.nextLine(); userInput = userInput.toUpperCase (); ส่งคืน userInput.charAt(0) == 'Y'; }

1585279 7
1585279 7

ขั้นตอนที่ 7 เชื่อมต่อ

ผู้ใช้

และ

คอมพิวเตอร์

เรียนด้วยกันใน

RockPaperScissors

ระดับ.

ตอนนี้เราเขียน. เสร็จแล้ว

ผู้ใช้

และ

คอมพิวเตอร์

คลาสต่างๆ เราสามารถโฟกัสไปที่เกมจริงๆ ของเราได้ สร้างฟิลด์ส่วนตัวสำหรับ

ผู้ใช้

และ

คอมพิวเตอร์

ชั้นเรียนใน

RockPaperScissors

ระดับ. เราจะต้องเข้าถึงฟิลด์เหล่านี้เพื่อเข้าถึง

getMove()

วิธีการเมื่อเราเล่นเกม ในตัวสร้างสำหรับ

RockPaperScissors

คลาส เริ่มฟิลด์เหล่านี้ เราจะต้องติดตามคะแนนใน.ด้วย

คะแนนผู้ใช้

และ

คะแนนคอมพิวเตอร์

ฟิลด์ ซึ่งเราต้องเริ่มต้นเป็น 0 ในตัวสร้าง เราจำเป็นต้องติดตามจำนวนเกมด้วย ซึ่งจะเป็นฟิลด์ที่เริ่มต้นเป็น 0 ด้วย

ผู้ใช้ส่วนตัว; คอมพิวเตอร์คอมพิวเตอร์ส่วนบุคคล userScore int ส่วนตัว; computerScore int ส่วนตัว; int number OfGames ส่วนตัว; RockPaperScissors สาธารณะ () { ผู้ใช้ = ผู้ใช้ใหม่ (); คอมพิวเตอร์ = คอมพิวเตอร์ใหม่ (); คะแนนผู้ใช้ = 0; คะแนนคอมพิวเตอร์ = 0; จำนวนเกม = 0; }

1585279 8
1585279 8

ขั้นตอนที่ 8 ขยาย

เคลื่อนไหว

enum เพื่อรวมวิธีการที่บอกเราว่าการย้ายใดชนะในแต่ละกรณี

เราต้องเขียน

เปรียบเทียบย้าย()

วิธีที่คืนค่า 0 หากการเคลื่อนไหวเหมือนกัน 1 หากการเคลื่อนไหวปัจจุบันเอาชนะการเคลื่อนไหวอื่น และ -1 หากการเคลื่อนไหวปัจจุบันแพ้การเคลื่อนไหวอื่น ซึ่งจะเป็นประโยชน์ในการตัดสินผู้ชนะในเกม ในการใช้วิธีนี้ เราจะคืนค่า 0 ก่อนหากการเคลื่อนไหวเหมือนกัน ดังนั้นเราจึงมีความเสมอกัน จากนั้นเขียนคำสั่ง switch เพื่อคืนค่า 1 หรือ -1

enum ส่วนตัว ย้าย { ROCK, PAPER, SCISSORS; /** * เปรียบเทียบการเคลื่อนไหวนี้กับการเคลื่อนไหวอื่นเพื่อตัดสินว่าเสมอ ชนะ หรือ * แพ้ * * @param otherMove * ย้ายไปเปรียบเทียบกับ * @return 1 หากการย้ายนี้ชนะการย้ายอื่น -1 หากการย้ายนี้แพ้ * การย้ายอื่น 0 หากการเคลื่อนไหวเหล่านี้เสมอกัน */ int สาธารณะ comparisonMove (Move otherMove) { / / Tie if (this == otherMove) คืนค่า 0; สวิตช์ (นี่) { กรณี ROCK: ผลตอบแทน (otherMove == กรรไกร ? 1: -1); กรณี PAPER: return (otherMove == ROCK ? 1: -1); กรณีกรรไกร: return (otherMove == PAPER ? 1: -1); } // ไม่ควรกลับมาที่นี่ให้คืนค่า 0; } }

1585279 9
1585279 9

ขั้นตอนที่ 9 สร้าง

เริ่มเกมส์()

วิธีการใน

RockPaperScissors

ระดับ.

วิธีนี้จะเป็นการเล่นเกมส์ เริ่มด้วยการใส่คำง่ายๆ

System.out.println

ในวิธีการ

โมฆะสาธารณะ startGame () { System.out.println ("ร็อค กระดาษ กรรไกร!"); }

1585279 10
1585279 10

ขั้นตอนที่ 10 รับการเคลื่อนไหวจากผู้ใช้และคอมพิวเตอร์

ใน

เริ่มเกมส์()

วิธี ใช้

getMove()

วิธีการจาก

ผู้ใช้

ชั้นเรียนและ

คอมพิวเตอร์

คลาสเพื่อรับผู้ใช้และการเคลื่อนไหวของคอมพิวเตอร์

ย้าย userMove = user.getMove(); ย้าย computerMove = computer.getMove(); System.out.println("\nคุณเล่น " + userMove + "."); System.out.println("คอมพิวเตอร์เล่น " + computerMove + ".\n");

1585279 11
1585279 11

ขั้นตอนที่ 11 เปรียบเทียบทั้งสองการเคลื่อนไหวและพิจารณาว่าผู้ใช้ชนะหรือคอมพิวเตอร์ชนะ

ใช้

เปรียบเทียบย้าย()

วิธีการจาก

เคลื่อนไหว

enum เพื่อตรวจสอบว่าผู้ใช้ชนะหรือไม่ หากผู้ใช้ชนะ ให้เพิ่มคะแนนผู้ใช้ 1 หากผู้ใช้แพ้ ให้เพิ่มคะแนนคอมพิวเตอร์ 1 หากเสมอกัน อย่าเพิ่มคะแนนใดๆ จากนั้นเพิ่มจำนวนเกมที่เล่นทีละเกม

int CompareMove = userMove.compareMoves(computerMove); สวิตช์ (compareMoves) { กรณี 0: // Tie System.out.println ("Tie!"); หยุดพัก; กรณีที่ 1: // ผู้ใช้ชนะ System.out.println(userMove + " beats " + computerMove + ". You won!"); คะแนนผู้ใช้++; หยุดพัก; กรณี -1: // คอมพิวเตอร์ชนะ System.out.println (computerMove + " เต้น " + userMove + ". คุณแพ้"); คะแนนคอมพิวเตอร์++; หยุดพัก; } จำนวนเกม++;

1585279 12
1585279 12

ขั้นตอนที่ 12. ถามว่าผู้ใช้ต้องการเล่นอีกครั้งหรือไม่

หากผู้ใช้ต้องการเล่นอีกครั้งโทร

เริ่มเกมส์()

อีกครั้ง. หรือโทร

printGameStats()

ซึ่งจะพิมพ์สถิติของเกมออกมา เราจะเขียนวิธีนี้ในขั้นตอนต่อไป

ถ้า (user.playAgain()) { System.out.println(); เริ่มเกมส์(); } อื่น ๆ { printGameStats(); }

1585279 13
1585279 13

ขั้นตอนที่ 13 เขียน

printGameStats()

กระบวนการ.

วิธีนี้จะแสดงสถิติของเกม: จำนวนชนะ จำนวนแพ้ จำนวนเสมอ จำนวนเกมที่เล่น และเปอร์เซ็นต์ของเกมที่ชนะโดยผู้ใช้ เปอร์เซ็นต์ของเกมที่ชนะจะคำนวณโดย (# ชนะ + (# เสมอ/2))/(# เกมที่เล่น) วิธีนี้ใช้

System.out.printf

เพื่อพิมพ์ข้อความที่จัดรูปแบบ

โมฆะส่วนตัว printGameStats () { int wins = userScore; การสูญเสีย int = computerScore; ความสัมพันธ์ int = numberOfGames - userScore - computerScore; เปอร์เซ็นต์สองเท่าของวอน = (ชนะ + ((สองเท่า) เสมอกัน) / 2) / numberOfGames; // Line System.out.print("+"); พิมพ์ขีดกลาง (68); System.out.println("+"); // พิมพ์ชื่อ System.out.printf("| %6s | %6s | %6s | %12s | %14s |\n", "WINS", "LOSSES", "TIES", "GAMES PLAYED", "PERCENTAGE วอน"); // Line System.out.print("|"); พิมพ์ขีดกลาง(10); System.out.print("+"); พิมพ์ขีดกลาง(10); System.out.print("+"); พิมพ์ขีดกลาง(10); System.out.print("+"); พิมพ์ขีดกลาง(16); System.out.print("+"); พิมพ์ขีดกลาง(18); System.out.println("|"); // พิมพ์ค่า System.out.printf("| %6d | %6d | %6d | %12d | %13.2f%% |\n", ชนะ, แพ้, เสมอกัน, numberOfGames, เปอร์เซ็นต์ชนะ * 100); // Line System.out.print("+"); พิมพ์ขีดกลาง (68); System.out.println("+"); }

1585279 14
1585279 14

ขั้นตอนที่ 14. เริ่มเกมในคลาสหลัก

ในคลาสหลัก ให้เริ่มต้นอินสแตนซ์ของ

RockPaperScissors

ชั้นเรียนและเรียก

เริ่มเกมส์()

กระบวนการ.

โมฆะคงที่สาธารณะหลัก (สตริง args) { เกม RockPaperScissors = RockPaperScissors ใหม่ (); game.startGame(); }

1585279 15
1585279 15

ขั้นตอนที่ 15 ทดสอบเกมของคุณ

ตอนนี้เราได้ใช้ความพยายามอย่างเต็มที่ในการเขียนเกม Rock, Paper, Scissors แล้ว ก็ถึงเวลารวบรวมและทดสอบทุกอย่างแล้ว!

โปรแกรมตัวอย่าง

นำเข้า java.util. Random; นำเข้า java.util. Scanner; RockPaperScissors คลาสสาธารณะ { ผู้ใช้ผู้ใช้ส่วนตัว; คอมพิวเตอร์คอมพิวเตอร์ส่วนบุคคล userScore int ส่วนตัว; ส่วนตัว int computerScore; int number OfGames ส่วนตัว; enum ส่วนตัว ย้าย { ROCK, PAPER, SCISSORS; /** * เปรียบเทียบการเคลื่อนไหวนี้กับการเคลื่อนไหวอื่นเพื่อตัดสินว่าเสมอ ชนะ หรือ * แพ้ * * @param otherMove * ย้ายไปเปรียบเทียบกับ * @return 1 หากการย้ายนี้เอาชนะการย้ายอื่น -1 หากการย้ายนี้แพ้ * การย้ายอื่น 0 หากการเคลื่อนไหวเหล่านี้เสมอกัน */ int สาธารณะ comparisonMove (Move otherMove) { / / Tie if (this == otherMove) คืนค่า 0; สวิตช์ (นี้) { กรณี ROCK: ผลตอบแทน (otherMove == กรรไกร ? 1: -1); กรณี PAPER: return (otherMove == ROCK ? 1: -1); กรณีกรรไกร: return (otherMove == PAPER ? 1: -1); } // ไม่ควรกลับมาที่นี่ให้คืนค่า 0; } } ผู้ใช้คลาสส่วนตัว { เครื่องสแกนส่วนตัว inputScanner; ผู้ใช้สาธารณะ () { inputScanner = สแกนเนอร์ใหม่ (System.in); } public Move getMove () { // แจ้งผู้ใช้ System.out.print ("หิน กระดาษ หรือกรรไกร"); // รับอินพุตของผู้ใช้ String userInput = inputScanner.nextLine(); userInput = userInput.toUpperCase (); ถ่าน firstLetter = userInput.charAt(0); if (firstLetter == 'R' || firstLetter == 'P' || firstLetter == 'S') { // ผู้ใช้ป้อนสวิตช์อินพุตที่ถูกต้อง (firstLetter) { case 'R': return Move. ROCK; กรณี 'P': ส่งคืน Move. PAPER; กรณี 'S': ส่งคืน Move. SCISSORS; } } // ผู้ใช้ไม่ได้ป้อนข้อมูลที่ถูกต้อง แจ้งอีกครั้งครับ ส่งคืน getMove(); } บูลีนสาธารณะ playAgain() { System.out.print("คุณต้องการที่จะเล่นอีกครั้งหรือไม่ "); สตริง userInput = inputScanner.nextLine(); userInput = userInput.toUpperCase (); ส่งคืน userInput.charAt(0) == 'Y'; } } คลาสส่วนตัว คอมพิวเตอร์ { สาธารณะ Move getMove () { ย้าย ย้าย = Move.values (); สุ่มสุ่ม = สุ่มใหม่ (); ดัชนี int = random.nextInt(moves.length); ย้ายกลับ[ดัชนี]; } } RockPaperScissors สาธารณะ () { ผู้ใช้ = ผู้ใช้ใหม่ (); คอมพิวเตอร์ = คอมพิวเตอร์ใหม่ (); คะแนนผู้ใช้ = 0; คะแนนคอมพิวเตอร์ = 0; จำนวนเกม = 0; } โมฆะสาธารณะ startGame() { System.out.println ("ร็อค กระดาษ กรรไกร!"); // รับการเคลื่อนไหว ย้าย userMove = user.getMove(); ย้าย computerMove = computer.getMove(); System.out.println("\nคุณเล่น " + userMove + "."); System.out.println("คอมพิวเตอร์เล่น " + computerMove + ".\n"); // เปรียบเทียบการเคลื่อนไหวและกำหนดผู้ชนะ int CompareMoves = userMove.compareMoves(computerMove); สวิตช์ (compareMoves) { กรณี 0: // Tie System.out.println ("Tie!"); หยุดพัก; กรณีที่ 1: // ผู้ใช้ชนะ System.out.println(userMove + " beats " + computerMove + ". You won!"); คะแนนผู้ใช้++; หยุดพัก; กรณี -1: // คอมพิวเตอร์ชนะ System.out.println (computerMove + " เต้น " + userMove + ". คุณแพ้"); คะแนนคอมพิวเตอร์++; หยุดพัก; } จำนวนเกม++; // ขอให้ผู้ใช้เล่นอีกครั้งหาก (user.playAgain()) { System.out.println(); เริ่มเกมส์(); } อื่น ๆ { printGameStats(); } } /** * พิมพ์สถิติของเกม คำนวณความเสมอภาคเท่ากับ 1/2 ของชัยชนะในหน่วย * เปอร์เซ็นต์ที่ชนะ */ โมฆะส่วนตัว printGameStats () { int wins = userScore; การสูญเสีย int = computerScore; ความสัมพันธ์ int = numberOfGames - userScore - computerScore; เปอร์เซ็นต์สองเท่าของวอน = (ชนะ + ((สองเท่า) เสมอกัน) / 2) / numberOfGames; // Line System.out.print("+"); พิมพ์ขีดกลาง (68); System.out.println("+"); // พิมพ์ชื่อ System.out.printf("| %6s | %6s | %6s | %12s | %14s |\n", "WINS", "LOSSES", "TIES", "GAMES PLAYED", "PERCENTAGE วอน"); // Line System.out.print("|"); พิมพ์ขีดกลาง(10); System.out.print("+"); พิมพ์ขีดกลาง(10); System.out.print("+"); พิมพ์ขีดกลาง(10); System.out.print("+"); พิมพ์ขีดกลาง(16); System.out.print("+"); พิมพ์ขีดกลาง(18); System.out.println("|"); // พิมพ์ค่า System.out.printf("| %6d | %6d | %6d | %12d | %13.2f%% |\n", ชนะ, แพ้, เสมอกัน, numberOfGames, เปอร์เซ็นต์ชนะ * 100); // Line System.out.print("+"); พิมพ์ขีดกลาง (68); System.out.println("+"); } โมฆะ printDashes ส่วนตัว (int numberOfDashes) { สำหรับ (int i = 0; i < numberOfDashes; i++) { System.out.print ("-"); } } โมฆะคงที่สาธารณะหลัก (สตริง args) { เกม RockPaperScissors = RockPaperScissors ใหม่ (); game.startGame(); } }

แนะนำ: