初学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类所以比较时候和写在一个不同。 这里利用了一个文本进行比较,仔细看看可以明白 就是在电脑随机数产生之后,然后判断随机数、判断完了之后和人选择的内容进行比较决出胜负。 这就是这个程序了,边学习,边总结。
