Java實(shí)現(xiàn)石頭剪刀布游戲
本文實(shí)例為大家分享了Java實(shí)現(xiàn)石頭剪刀布游戲的具體代碼,供大家參考,具體內(nèi)容如下
題目:
用 JAVA 語言設(shè)計(jì)如下界面的石頭剪刀布游戲。游戲的一方點(diǎn)擊界面上石頭、剪刀、布按鈕,游戲的另一方計(jì)算機(jī)隨機(jī)選擇,然后給出游戲結(jié)果。
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
@SuppressWarnings("serial")
public class TestOne extends JFrame implements ActionListener{
// 定義石頭剪刀布的 JButton 對象
JButton jiandao, shitou, bu, clear;
JPanel panel2, panel1;
JLabel label;
// 主函數(shù)
public static void main(String[] args) {
TestOne frame = new TestOne();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設(shè)置窗體關(guān)閉按鈕
frame.setVisible(true); // 使窗體可見
}
// 設(shè)置窗體
public TestOne() {
setTitle("石頭剪刀布游戲"); // 石頭剪刀布游戲
setLocation(250, 250); // 設(shè)置窗體坐上頂點(diǎn)坐標(biāo)
setSize(300, 300); // 設(shè)置窗體大小。窗體大小 : 350X350
// 建立對象
panel1 = new JPanel();
panel1.setBackground(Color.yellow);
shitou = new JButton("石頭");
jiandao = new JButton("剪刀");
bu = new JButton("布");
clear = new JButton("清空");
panel2 = new JPanel();
panel2.setBackground(Color.green);
label = new JLabel("選擇剪刀, 石頭, 布開始游戲");
// 給所有 JBUtton 對象添加事件約束
// 給事件添加監(jiān)聽器
shitou.addActionListener(this);
jiandao.addActionListener(this);
bu.addActionListener(this);
clear.addActionListener(this);
// 把所有的新添加的對象都放進(jìn)去窗體里面,先放進(jìn)組件類,再放進(jìn)窗體類
panel1.add(shitou);
panel1.add(jiandao);
panel1.add(bu);
panel1.add(clear);
panel2.add(label);
add(panel1, BorderLayout.NORTH);
add(panel2, BorderLayout.CENTER);
}
// 事件響應(yīng)器
public void actionPerformed(ActionEvent e) {
if(e.getSource() == shitou) {
int i = ((int)(Math.random()*10))%3;
switch(i) {
case 0:
label.setText("你出石頭,電腦出石頭,平局!");
break;
case 1:
label.setText("你出石頭,電腦出剪刀,恭喜你贏了!");
break;
case 2:
label.setText("你出石頭,電腦出布,很遺憾你輸了!");
break;
}
}else if(e.getSource() == jiandao){
int i = ((int)(Math.random()*10))%3;
switch(i) {
case 0:
label.setText("你出剪刀,電腦出石頭,很遺憾你輸了!");
break;
case 1:
label.setText("你出剪刀,電腦出剪刀,平局!");
break;
case 2:
label.setText("你出剪刀,電腦出布,恭喜你贏了!");
break;
}
}else if(e.getSource() == bu){
int i = ((int)(Math.random()*10))%3;
switch(i) {
case 0:
label.setText("你出布,電腦出石頭,恭喜你贏了!");
break;
case 1:
label.setText("你出布,電腦出剪刀,很遺憾你輸了!");
break;
case 2:
label.setText("你出布,電腦出布,平局!");
break;
}
}else if(e.getSource() == clear) {
label.setText("選擇剪刀, 石頭, 布開始游戲!");
}
}
}
運(yùn)行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java面試之限流的實(shí)現(xiàn)方式小結(jié)
限流是指在各種應(yīng)用場景中,通過技術(shù)和策略手段對數(shù)據(jù)流量、請求頻率或資源消耗進(jìn)行有計(jì)劃的限制,本文為大家整理了常見的限流的實(shí)現(xiàn)方式,有需要的可以參考下2024-02-02
spring @EventListener 事件與監(jiān)聽的示例詳解
本文介紹了自定義Spring事件和監(jiān)聽器的方法,包括如何發(fā)布事件、監(jiān)聽事件以及如何處理異步事件,通過示例代碼和日志,展示了事件的順序執(zhí)行和異步處理機(jī)制,感興趣的朋友一起看看吧2025-03-03
Spring Boot示例分析講解自動(dòng)化裝配機(jī)制核心注解
這篇文章主要分析了Spring Boot 自動(dòng)化裝配機(jī)制核心注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-07-07
spring-security關(guān)于hasRole的坑及解決
這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
詳解mybatis如何實(shí)現(xiàn)進(jìn)行分表
在數(shù)據(jù)庫設(shè)計(jì)中,分表是一種常見的優(yōu)化策略,它可以將一個(gè)大表拆分成多個(gè)小表,以提高查詢性能和存儲(chǔ)效率,下面我們就來學(xué)習(xí)一下mybatis如何實(shí)現(xiàn)進(jìn)行分表吧2023-11-11
java使用ZipInputStream實(shí)現(xiàn)讀取和寫入zip文件
zip文檔可以以壓縮格式存儲(chǔ)一個(gè)或多個(gè)文件,本文主要為大家詳細(xì)介紹了java如何使用ZipInputStream讀取Zip文檔與寫入,需要的小伙伴可以參考下2023-11-11

