📄 guesshand extends jframe.txt
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class GuessHand extends JFrame{
private int player = 0,user = 0;
//存放猜拳轉換過來的數值
private int countWin = 0, countLoss = 0, countSame = 0;
//計算輸贏
private JButton cut, rock, boo;
//宣告三個按鈕剪刀,石頭,布
private JLabel hand;
//顯示請出拳...
private JTextArea computerHand;
//顯示電腦出的是什麼
public GuessHand(){
super ("剪刀石頭布");
}
public void guess(){
//視窗標題為猜拳(剪刀.石頭.布)
//執行randomHand副程式
//建立一個按鈕-剪刀 如果按此鈕則執行下列敘述,參數值為1,印出電腦出的拳
cut = new JButton("剪刀");
cut.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
randomHand();
checkHand(1);
}
}
);
//建立一個按鈕-石頭 如果按此鈕則執行下列敘述,參數值為2,印出電腦出的拳
rock = new JButton("石頭");
rock.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
randomHand();
checkHand(2);
}
}
);
//建立一個按鈕-布 如果按此鈕則執行下列敘述,參數值為3,印出電腦出的拳
boo = new JButton("布");
boo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
randomHand();
checkHand(3);
}
}
);
hand = new JLabel("請出拳...");
//顯示請出拳...
computerHand = new JTextArea(15,20);
computerHand.setEditable(false);
//顯示電腦出的是什麼,且不可修改
//在Frame加入元件
Container container = getContentPane();
container.setLayout( new FlowLayout() );
container.add(hand);
container.add(cut);
container.add(rock);
container.add(boo);
container.add(computerHand);
//設定JFrame大小
setSize(800,600);
//設定JFrame為顯示的
setVisible(true);
}
public static void main (String args[]){
JOptionPane.showMessageDialog(null,"與電腦玩猜拳遊戲" + "\n遊戲很簡單,只要選擇您要出拳的按鈕" + "\n按下去即可。" + "\n遊戲規則:" + "\n剪刀 贏 布" + "\n布 贏 石頭" + "\n石頭 贏 剪刀" + "\n每小局結束會問是否繼續(Y/N 繼續/不繼續)" + "\n會計算出幾勝幾敗幾平手","說明",JOptionPane.INFORMATION_MESSAGE);
//顯示遊戲方法及規則
GuessHand application = new GuessHand();
//建立一個application物件繼承guess
application.guess();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//當JFrame被關掉時,整個程式會結束
}
public void randomHand(){
player = (int)(Math.random()*3+1);
System.out.println(player);
//取亂數,如果為0或大於3則重新取一次,因為剪刀(1)、石頭(2)、布(3)
//如果是1→剪刀、2→石頭、3→布
switch(player){
case 1:
computerHand.append("剪刀\n\r");
break;
case 2:
computerHand.append("石頭\n\r");
break;
case 3:
computerHand.append("布\n\r");
break;
}
}
public void checkHand(int user){
//如果不是剪刀跟布,就判斷何者大,大者勝,累計次數,並且問玩者是否再繼續
if(user != 3 || player != 1){
if(player != 3 || user != 1){
if(player == user){
countSame++;
JOptionPane.showMessageDialog(null,"平手耶!!" + "\n你會猜心術~","~平手~"
,JOptionPane.INFORMATION_MESSAGE);
again();
}
if(player > user){
countLoss++;
JOptionPane.showMessageDialog(null,"你輸了唷!!" + "\n別氣餒捏~","~輸了~"
,JOptionPane.INFORMATION_MESSAGE);
again();
}
else{
countWin++;
JOptionPane.showMessageDialog(null,"你贏了耶!!" + "\n(=^_^=) 好棒唷~","~贏了~"
,JOptionPane.INFORMATION_MESSAGE);
again();
}
}
else{
countWin++;
JOptionPane.showMessageDialog(null,"你贏了耶!!" + "\n(=^_^=) 好棒唷~","~贏了~"
,JOptionPane.INFORMATION_MESSAGE);
again();
}
}
else{
countLoss++;
JOptionPane.showMessageDialog(null,"你輸了唷!!" + "\n別氣餒捏~","~輸了~"
,JOptionPane.INFORMATION_MESSAGE);
again();
}
}
//問是否繼續,若不繼續則印出幾勝幾敗幾平手
public void again(){
int number = 0;
number=JOptionPane.showConfirmDialog(null,"要繼續嗎?","選擇",JOptionPane.YES_NO_OPTION);
System.out.println("number:"+number);
if(number == 1){
JOptionPane.showMessageDialog(null,"統計資料:" + "\n勝" + countWin + "場" + "\n敗" + countLoss + "場" + "\n平手" + countSame+"\n\r應用程式即將關閉","~統計~"
,JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -