初学GUI,还有很多改进方便请理解
关于人机猜拳小程序也看了不少,但是没有带界面的,于是今天正好有机会就写个一个带界面的猜拳小程序。
大概程序就是 电脑随机产生三个随机数,根据随机数判定出剪刀石头布的内同,人可以自己选择出的内容。为了增加一点小乐趣就决定把最终胜负交给天意了,需要点击电脑产生随机数才会出现结果。
先上布局,使用的是空布局,方便自己调内容位置
package com.hbjc.java1.liang.caiquan;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CaiQuan {
public static void main(String[] args) {
// 窗口
JFrame caiquan = new JFrame("猜拳");
caiquan.setSize(700, 550);
caiquan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
caiquan.setLocation(650, 250);
JTextField jieguo = new JTextField();
JLabel diannao = new JLabel("电脑");
JLabel people = new JLabel("人");
JLabel tishi = new JLabel("请先选择人要出的内容");
JLabel jieguotishi = new JLabel("结果是:");
JLabel bijiao = new JLabel();
//图片
Icon jiandaotu = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\剪刀.jpg");
Icon shitoutu = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\石头.jpg");
Icon butu = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\布.jpg");
Icon kongbai = new ImageIcon("src\\com\\hbjc\\java1\\liang\\caiquan\\空白.jpg");
// 按钮
JButton wanjia = new JButton("玩家");
JButton dadiannao = new JButton(kongbai);
JButton shitou = new JButton("石头");
JButton jiandao = new JButton("剪刀");
JButton bu = new JButton("布");
JButton ok = new JButton("OK");
//布局
caiquan.setLayout(null);
//电脑和人的文本布局
tishi.setBounds(270, 0, 150, 60);
diannao.setBounds(70, 20, 50, 50);
people.setBounds(490, 20, 50, 50);
//结果提示框
jieguo.setBounds(295, 420, 80, 20);
jieguotishi.setBounds(250, 420, 100, 20);
//电脑和玩家大按钮布局
dadiannao.setBounds(30, 70, 300, 300);
wanjia.setBounds(360, 70, 300, 300);
// 石头剪刀布OK 按钮布局
shitou.setBounds(420, 400, 60, 40);
jiandao.setBounds(480, 400, 60, 40);
bu.setBounds(540, 400, 60, 40);
ok.setBounds(100, 400, 80, 40);
// 最上边提示布局
caiquan.add(tishi);
// 电脑和玩家文本提示
caiquan.add(diannao);
caiquan.add(people);
// 电脑和玩家按钮
caiquan.add(dadiannao);
caiquan.add(wanjia);
// 石头剪刀布OK按钮
caiquan.add(ok);
caiquan.add(shitou);
caiquan.add(jiandao);
caiquan.add(bu);
caiquan.setVisible(true);
这里我用到了四张图片 石头剪刀布 三张 还有一张空白给电脑初始用。
而显示图片的大框我选用了按钮,本文就叫大按钮,在人的大按钮下边有三个小按钮,负责的就是人选择出的内容,电脑的下边是个OK键,点击OK会随机产生一张出的内容,然后判断胜负。放张图方便理解!
基本上这就是页面了,然后放监听的代码
// 添加响应
//电脑随机
class MyAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int suiji = (int) (Math.random() * 3 + 1);
String a = bijiao.getText();
if (suiji == 1) {
dadiannao.setIcon(jiandaotu);
if (a.equals("jiandao")) {
JOptionPane.showMessageDialog(null, "平局", "结果", JOptionPane.ERROR_MESSAGE);
} else if (a.equals("shitou")) {
JOptionPane.showMessageDialog(null, "人赢了", "结果", JOptionPane.ERROR_MESSAGE);
} else if (a.equals("bu")) {
JOptionPane.showMessageDialog(null, "电脑赢了", "结果", JOptionPane.ERROR_MESSAGE);
}
}
if (suiji == 2) {
dadiannao.setIcon(shitoutu);
if (a.equals("shitou")) {
JOptionPane.showMessageDialog(null, "平局", "结果", JOptionPane.ERROR_MESSAGE);
} else if (a.equals("bu")) {
JOptionPane.showMessageDialog(null, "人赢了", "结果", JOptionPane.ERROR_MESSAGE);
} else if (a.equals("jiandao")) {
JOptionPane.showMessageDialog(null, "电脑赢了", "结果", JOptionPane.ERROR_MESSAGE);
}
}
if (suiji == 3) {
dadiannao.setIcon(butu);
if (a.equals("bu")) {
JOptionPane.showMessageDialog(null, "平局", "结果", JOptionPane.ERROR_MESSAGE);
} else if (a.equals("jiandao")) {
JOptionPane.showMessageDialog(null, "人赢了", "结果", JOptionPane.ERROR_MESSAGE);
} else if (a.equals("shitou")) {
JOptionPane.showMessageDialog(null, "电脑赢了", "结果", JOptionPane.ERROR_MESSAGE);
}
}
}
}
// 人选择
class PeopleChoose implements ActionListener {
@Override
public void actionPerformed(ActionEvent b) {
if (b.getSource() == jiandao) {
wanjia.setIcon(jiandaotu);
bijiao.setText("jiandao");
} else if (b.getSource() == shitou) {
wanjia.setIcon(shitoutu);
bijiao.setText("shitou");
} else if (b.getSource() == bu) {
wanjia.setIcon(butu);
bijiao.setText("bu");
}
}
}
// 电脑随机监听
MyAction m1 = new MyAction();
ok.addActionListener(m1);
// 人选择监听
PeopleChoose p1 = new PeopleChoose();
jiandao.addActionListener(p1);
shitou.addActionListener(p1);
bu.addActionListener(p1);
}
}
由于我用的是两个class类所以比较时候和写在一个不同。
这里利用了一个文本进行比较,仔细看看可以明白
就是在电脑随机数产生之后,然后判断随机数、判断完了之后和人选择的内容进行比较决出胜负。
这就是这个程序了,边学习,边总结。