自己純手打,老半天才弄出來啊
成都創(chuàng)新互聯(lián)主營臨滄網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,臨滄h5重慶小程序開發(fā)搭建,臨滄網(wǎng)站營銷推廣歡迎臨滄等地區(qū)企業(yè)咨詢
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.util.Random;
import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Demo2 extends JFrame {
private JLabel lb1, lb2, lb3, lb4; // 提示標(biāo)簽
private JTextField ta1, ta2;// 兩個文本框
private JButton b1, b2, b3; // 三個按鈕
private JPanel p1, p2; // 兩個JPanel面板
public Demo2() {
// 初始化所有組件
lb1 = new JLabel("歡迎使用人機猜拳程序");
lb2 = new JLabel("你出拳: ");
lb3 = new JLabel("電腦出拳:");
lb4 = new JLabel("結(jié)果");
ta1 = new JTextField();
ta1.setPreferredSize(new Dimension(60, 60)); // 設(shè)置大小
ta1.setEditable(false);//設(shè)置不可編輯
ta2 = new JTextField();
ta2.setPreferredSize(new Dimension(60, 60));
ta2.setEditable(false);//設(shè)置不可編輯
b1 = new JButton("剪刀");
b2 = new JButton("石頭");
b3 = new JButton("布");
p1 = new JPanel();
p2 = new JPanel();
// 設(shè)置第一個面板內(nèi)容
Box box = Box.createVerticalBox();
Box box1 = Box.createHorizontalBox();
box1.add(lb2);
box1.add(ta1);
box1.add(lb3);
box1.add(ta2);
box.add(lb1);
box.add(Box.createVerticalStrut(40));
box.add(box1);
box.add(Box.createVerticalStrut(10));
box.add(lb4);
box.add(new JLabel());
p1.add(box);
// 設(shè)置第二個面板
p2.setLayout(new GridBagLayout()); // 使用GridBagLayout布局管理器
p2.setPreferredSize(new Dimension(0, 60));
GridBagConstraints g2 = new GridBagConstraints();
g2.fill = GridBagConstraints.BOTH;
g2.weightx = 1.0;
g2.weighty = 1.0;
g2.gridx = 0;
g2.gridy = 0;
p2.add(b1, g2);
g2.gridx = 1;
p2.add(b2, g2);
g2.gridx = 2;
p2.add(b3, g2);
//為3個按鈕添加事件
b1.addActionListener(new buttonAction());
b2.addActionListener(new buttonAction());
b3.addActionListener(new buttonAction());
this.getContentPane().add(p1);
this.getContentPane().add(p2, BorderLayout.SOUTH);
this.setTitle("機器人猜拳游戲");
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//事件類
class buttonAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1){
ta1.setText("剪刀");
init(ta1.getText());
}else if(e.getSource()==b2){
ta1.setText("石頭");
init(ta1.getText());
}else if(e.getSource()==b3){
ta1.setText("布");
init(ta1.getText());
}
}
// 模擬電腦出拳,產(chǎn)生三個隨機數(shù)。0代表剪刀,1代表石頭,2代表布
public String getQuan(){
String str="";
int num=new Random().nextInt(3) ;
if(num==0){
str="剪刀";
}else if(num==1){
str="石頭";
}else if(num==2){
str="布";
}
return str;
}
// 判斷輸贏方法
public String isying(String s1,String s2){
String s="";
if(s1.equals(s2)){
s="平局";
}else if(s1.equals("剪刀")s2.equals("布")){
s="你贏";
}else if(s1.equals("石頭")s2.equals("剪刀")){
s="你贏";
}else if(s1.equals("布")s2.equals("石頭")){
s="你贏";
}else{
s="電腦贏";
}
return s;
}
public void init(String wo){
String sy=""; // 保存輸贏結(jié)果
String dncq=getQuan(); //電腦出拳
if(wo.equals(dncq)){
sy="平局";
}else if(wo.equals("剪刀")dncq.equals("布")){
sy="你贏";
}else if(wo.equals("石頭")dncq.equals("剪刀")){
sy="你贏";
}else if(wo.equals("布")dncq.equals("石頭")){
sy="你贏";
}else{
sy="電腦贏";
}
ta2.setText(dncq);// 電腦出拳
lb4.setText("結(jié)果:"+sy);
}
}
public static void main(String[] args) {
new Demo2();
}
}
Java實現(xiàn)猜拳游戲的核心在于電腦隨機數(shù)的生成,Java中的隨機數(shù)生成方法是:
首先引入包? ?import java.util.*;??然后???int r=new Random().nextInt(3);??(nextInt中的數(shù)字三代表隨機數(shù)生成的個數(shù),從零開始)
所以在猜拳的輸入中需要有0、1、2三個數(shù)字代替,如果要輸入漢字,則用if進(jìn)行相應(yīng)判斷即可。
在實現(xiàn)的游戲中實現(xiàn)①猜拳;②記錄勝負(fù);③玩家決定游戲局?jǐn)?shù);④輸出獲勝、失敗及平局;⑤統(tǒng)計總共的勝負(fù)結(jié)果(根據(jù)獲勝次數(shù)判斷)
①猜拳基礎(chǔ)功能:該部分代碼可以放到一個方法中,減少主函數(shù)代碼量。
電腦出拳即??int r=new Random().nextInt(3);??注意:該部分一定要寫在for循環(huán)內(nèi)部,否則無法實現(xiàn)每次不同的隨機數(shù)。
通過if判斷雙方出拳是否相等? ?if(a==0r==0)? else?if(a==0r==1)? else if(a==0r==2)? ?即可實現(xiàn)猜拳,if內(nèi)直接輸出相關(guān)語句即可
②記錄勝負(fù):? 定義猜拳方法為int ,通過返回值記錄相關(guān)比賽的勝負(fù)情況? ,可以用0--失敗;1--獲勝;2--平局 進(jìn)行記錄,在主函數(shù)中對相應(yīng)拋出的數(shù)字記錄即可
if(a==0r==0){
System.out.println("The computer comes out with cloth,it was a draw. ");
return 2;
}
h=comp.compare(a,r); if (h==1) j++;
登錄后復(fù)制
③玩家決定局?jǐn)?shù): 定義一個數(shù),在循環(huán)中不大于該數(shù)即可
④輸出獲勝、失敗及平局: j、k即勝利和失敗,平局?jǐn)?shù)即n-j-k。
⑤統(tǒng)計結(jié)果,直接用if比較i、j的數(shù)字結(jié)果即可。
主函數(shù)部分:
package SS2_5;
import java.util.*;
public class Main {
public static void main(String args[]){
Scanner scanner=new Scanner(System.in);
Compare comp=new Compare();
int h=0,j=0,k=0;
System.out.println("rules:0--cloth;1--stone;2--scissors.\nU can choose how many times you want to play:");
int n=scanner.nextInt();
for(int i=1;i=n;i++){
System.out.print("It's the "+i+" round,your turn:");
int a=scanner.nextInt();
int r=new Random().nextInt(3);
switch (a){
case 0:
h=comp.compare(a,r);
break;
case 1:
h=comp.compare(a,r);
break;
case 2:
h=comp.compare(a,r);
break;
default:
System.out.println("Wrong number!");
break;
}
if (h==1)
j++;
else if(h==0)
k++;
}
System.out.println("The total times you won are "+j+",The draw times are "+(n-j-k)+".");
if(jk)
System.out.println("You are the final winner");
else if(kj)
System.out.println("The computer is the winner.");
if(j==k)
System.out.println("The final result is draw");
}
}
登錄后復(fù)制
compare方法部分
package SS2_5;
public class Compare {
public int compare(int a,int r){
int counter=0;
if(a==0r==0){
System.out.println("The computer comes out with cloth,it was a draw. ");
return 2;
}
else if(a==0r==1){
System.out.println("The computer comes out with stone, you won. ");
return 1;
}
else if(a==0r==2){
System.out.println("The computer comes out with scissor,you lost. ");
return 0;
}
else if(a==1r==0){
System.out.println("The computer comes out with cloth,you lost. ");
return 0;
}
else if(a==1r==1){
System.out.println("The computer comes out with stone,it was a draw. ");
return 2;
}
else if(a==1r==2){
System.out.println("The computer comes out with scissors,you won. ");
return 1;
}
else if(a==2r==0){
System.out.println("The computer comes out with cloth,you won. ");
return 1;
}
else if(a==2r==1){
System.out.println("The computer comes out with stone,you lost. ");
return 0;
}
else if(a==2r==2){
System.out.println("The computer comes out with scissors,it was a draw. ");
return 2;
}
else
return 0;
}
}
登錄后復(fù)制
java
704拖拉機
精選推薦
廣告
java寫簡單的猜拳游戲
2下載·0評論
2016年7月27日
用Java編寫的猜拳小游戲
2029閱讀·0評論·0點贊
2021年3月7日
Java猜拳游戲和Random的應(yīng)用
21閱讀·0評論·0點贊
2022年10月24日
java實現(xiàn)完整版猜拳小游戲
25下載·0評論
2018年11月22日
用python實現(xiàn)功能猜拳
1137閱讀·2評論·3點贊
2022年7月14日
java猜拳switch計分制_java----猜拳(10局分勝負(fù))
117閱讀·0評論·1點贊
2021年3月15日
二手拖拉機交易市場,你還在高價買嗎?
精選推薦
廣告
利用Java編寫簡單的猜拳游戲
911閱讀·0評論·1點贊
2022年9月8日
Java簡單實現(xiàn)猜拳游戲
1.1W閱讀·1評論·2點贊
2022年1月23日
java猜拳游戲代碼_Java實現(xiàn)簡單猜拳游戲
4496閱讀·0評論·0點贊
2021年3月1日
用java來寫一個簡單的猜拳小游戲
890閱讀·1評論·1點贊
2022年7月26日
java實現(xiàn)猜拳游戲
3180閱讀·2評論·1點贊
2022年5月4日
JAVA編寫猜拳游戲
3037閱讀·3評論·3點贊
2021年3月16日
[Java教程]17.實戰(zhàn),趣味猜拳小游戲
8040閱讀·2評論·3點贊
2020年6月24日
怎么用java實現(xiàn)人機猜拳?
1959閱讀·6評論·9點贊
2021年7月22日
Java Random經(jīng)典例子【猜拳游戲】
4318閱讀·0評論·0點贊
2014年3月22日
java的人機猜拳代碼_Java實現(xiàn)人機猜拳游戲
702閱讀·0評論·2點贊
2021年3月12日
Java基礎(chǔ)練習(xí)之猜拳游戲
363閱讀·1評論·1點贊
2021年8月19日
用java寫猜拳小游戲
1096閱讀·0評論·1點贊
2021年9月1日
Java猜拳小游戲
97閱讀·0評論·0點贊
2022年8月23日
java猜拳小游戲
500閱讀·1評論·0點贊
2022年7月14日
我之前寫了個猜拳游戲的源代碼,不過沒你想的這么精彩。你才給5分就給你你自己修改了,應(yīng)該很簡單的。要多給點分我可以幫你修改。
import java.util.Scanner;
import java.util.Random;
public class caiquan
{
final int jiandao=0;
final int shitou=1;
final int bu=2;
public static void main(String[] args)
{
String yn=;y;;
while (yn.equals(;y;))
{
Scanner scanner = new Scanner(System.in);
System.out.println(;歡迎玩猜拳游戲。請輸入0,1,2:0表示剪刀,1表示石頭,2表示布;);
int a = scanner.nextInt();
Random rd = new Random();
int b = rd.nextInt(3);
switch (b)
{
case 0:
{
System.out.println(;系統(tǒng)出的是剪刀;);
switch(a)
{
case 0:System.out.println(;平;);break;
case 1:System.out.println(;贏;);break;
case 2:System.out.println(;輸;);break;
}
}
break;
case 1:
{
System.out.println(;系統(tǒng)出的是石頭;);
switch(a)
{
case 0:System.out.println(;輸;);break;
case 1:System.out.println(;平;);break;
case 2:System.out.println(;贏;);break;
}
}
break;
case 2:
{
System.out.println(;系統(tǒng)出的是布;);
switch(a)
{
case 0:System.out.println(;贏;);break;
case 1:System.out.println(;輸;);break;
case 2:System.out.println(;平;);break;
}
}
}
Scanner ynn = new Scanner(System.in);
System.out.println(;是否繼續(xù)?是請輸入y,否則輸入n。;);
yn=ynn.next();
}
}
}
先建立個Game包
然后我做的是分了5個類來做的
TestStartGuess 類
package com.game.guess;
public class TestStartGuess {
/**
* 人機互動版猜拳游戲
* 程序入口
*/
public static void main(String[] args) {
Game game=new Game();
game.initial();
game.startGame();
}
}
2.Person 類
package com.game.guess;
import java.util.Scanner;
/**
* 用戶類
*階段1完成
* @param Scanner
*/
public class Person {
String name ="匿名";//名字
int score =0;//積分
/**
* 出拳
*@return出拳結(jié)果:1.剪刀 2.石頭 3.布
*/
public int showFist(){
//接收用戶的選擇
Scanner input =new Scanner(System.in);
System.out.print("\n請出拳:1.剪刀 2.石頭 3.布 (輸入相應(yīng)數(shù)字):");
int show=input.nextInt();
//輸出出拳結(jié)果,并返回
switch(show){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石頭");
break;
case 3:
System.out.println("你出拳:布");
break;
}
return show;
}
}
3.Computer 類
package com.game.guess;
/**
*計算機類
*階段2完成
*/
public class Computer{
String name="電腦";//名字
int score = 0;;//積分
/**
*出拳
*@return 出拳結(jié)果:1.剪刀 2.石頭 3.布
*/
public int showFist(){
? ? ? ?//產(chǎn)生隨機數(shù)
? ? ? ?int show =(int)(Math.random()*10)%3+1;//產(chǎn)生隨機數(shù),表示電腦出拳
? ? ? ?//輸出出拳結(jié)果并返回
? ? switch(show){
case 1:
System.out.println(name+"你出拳:剪刀");
break;
case 2:
System.out.println(name+"你出拳:石頭");
break;
case 3:
System.out.println(name+"你出拳:布");
break;
}
return show;
}
}
4.Game 類
package com.game.guess;
import java.util.Scanner;
/**
* 游戲類類完全版
* 階段7:功能擴(kuò)展
* @param computer
*
*/
public class Gamecomputer {
Person person; //甲方
Computer computer; ?//乙方
int count;//對戰(zhàn)次數(shù)
/**
* 初始化
*/
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
/**
* 開始游戲
*/
@SuppressWarnings("resource")
public void startGame(){
System.out.println("-------歡迎進(jìn)入游戲世界-------\n");
System.out.println("\n\t\t***************");
System.out.println("\t\t**猜拳,開始 **");
System.out.println("\t\t***************");
System.out.println("\n\n出拳規(guī)則:1.剪刀,2.石頭,3.布");
Scanner input=new Scanner(System.in);
String exit="n"; //退出系統(tǒng)
do{
initial();//初始化
/*選擇對方角色*/
System.out.print("請選擇對方角色:(1:劉備,2:孫權(quán),3:曹操):");
int role=input.nextInt();
if(role==1){
computer.name="劉備";
}else if(role==2){
computer.name="孫權(quán)";
}else if(role==3){
computer.name="曹操";
}
//擴(kuò)展功能1:輸入用戶姓名
/*輸入用戶姓名*/
System.out.print("請輸入你的姓名:");
person.name=input.next();
System.out.println(person.name+"VS"+computer.name+"對戰(zhàn)\n");
//擴(kuò)展功能1結(jié)束
System.out.print("要開始嗎?(y/n)");
String start=input.next();//開始每一局游戲
int perFist; //用戶出的拳
int compFist; //計算機出的拳
while(start.equals("y")){
/*出拳*/
? ?perFist=person.showFist();
? ?compFist=computer.showFist();
? ?/*裁決*/
? ?if((perFist==1compFist==1)||(perFist==2compFist==2)||(perFist==3compFist==3)){
? ? ? ?System.out.println("結(jié)果:和局,真衰!嘿嘿,等著瞧吧!\n"); ?//平局
? ? ? ? ? ? ? }else if((perFist==1compFist==3)||(perFist==2compFist==1)||(perFist==3compFist==2)){
? ? ? ? ? ?System.out.println("結(jié)果:恭喜,你贏了!"); ?//用戶贏
? ? ? ? ? ? ? ? ? ? person.score++;
? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? System.out.println("結(jié)果說:^_^,你輸了,真笨!\n"); ?//計算機贏
? ? ? ? ? ? ? ? computer.score++;
? ? ? ? ? ? ? }
? ? ? ? ? ? ? count++;
? ? ? ? ? ? ? System.out.println("\n是否開始下一輪(y/n):");
? ? ? ? ? ? ? start=input.next();
? ? ? ? ? ? ? }
/*顯示結(jié)果*/
showResult();
//擴(kuò)展功能3:循環(huán)游戲,知道退出系統(tǒng)
System.out.print("\n要開始下一局嗎?(y/n):");
exit=input.next();
? ? ? ?System.out.println();
? ? ? ?//擴(kuò)展功能3結(jié)束
}while(!exit.equals("n"));
System.out.println("系統(tǒng)退出!");
}
/**
* 顯示比賽結(jié)果
*/
public void showResult(){
/*顯示對戰(zhàn)次數(shù)*/
System.out.println("-------------------------------");
? ? ? System.out.println(computer.name+"VS"+person.name);
? ? ? System.out.println("對戰(zhàn)次數(shù):"+count);
? ?
? ? ? //擴(kuò)展功能2:顯示最終的得分
? ? ? System.out.println("\n姓名\t得分");
? ? ? System.out.println(person.name+"\t"+person.score);
System.out.println(computer.name+"\t"+computer.score+"\n");
? ?//擴(kuò)展功能2結(jié)束
? ? ? /*顯示對戰(zhàn)結(jié)果*/
? ? ? int result=calcResult();
? ? ? if(result==1){
? ? ? System.out.println("結(jié)果:打成平手,下次再和你一分高下!");
? ? ? }else if(result==2){
? ? ? System.out.println("結(jié)果:恭喜恭喜!"); ?//用戶獲勝
? ? ? }else{
? ? ? System.out.println("結(jié)果:呵呵,笨笨,下次加油??!"); ?//計算機獲勝
? ? ? }
System.out.println("--------------------------------");
}
/**
* 計算比賽結(jié)果
* @return1:戰(zhàn)平; 2:用戶贏; 3:電腦贏
*/
public int calcResult(){
if(person.score==computer.score){
return 1;//戰(zhàn)平
}else if(person.scorecomputer.score){
return 2;//用戶贏
}else{
return 3;//電腦贏
}
}
}
5.Start 類
package com.game.guess;
public class StartGuess {
public static void main (String[] args){
Game c = new Game();
c.initial();
c.startGame();
}
}
然后編譯執(zhí)行就OK了
希望能幫到你