课程设计 石头剪刀布游戏 --- JAVA语言实习 Swing awt

【问题描述】

用 JAVA 语言设计如下界面的石头剪刀布游戏。游戏的一方点击界面上石头、剪刀、布按钮,游戏的 另一方计算机随机选择,然后给出游戏结果。

2.2【基本要求】

按照下面给出的步骤设计石头剪刀布游戏,并完成以下工作:

1. 在“//”后给出必要的注释;
2. 为程序添加菜单;至少 2 个菜单:结果显示方式和关于游戏;结果显示方式菜单有 3 个菜单项:文本

  显示、图形显示、结束游戏;实现菜单中的功能,自行搜索能体现石头、剪刀、布的图形或图片,用
  这些图形或图片显示游戏结果。
第一步,引用需要的包或类;

第二步,定义一个窗口类,并实现 ActionListener 接口,把需要的组件定义放到类里;

第三步,设置窗体。

   

import java.awt.*; //引入抽象窗口工具类包; import java.awt.event.*; //

import javax.swing.*; //

//定义一个窗口类,该类实现 ActionListener 接口;
public class work11 extends JFrame implements ActionListener{

JButton jiandao,shitou,bu,clear; JPanel pane12,panel1;
JLabel label;

//定义 JButton 对象; //
//

public work11() {
setTitle("窗体"); //设置窗体标题,修改标题为“石头剪刀布游戏”; setLocation(250,250); //设置窗体左上顶点坐标;

-3-

setSize(300,300); //设置窗体大小,修改窗体大小为:350×350; 第四步,根据需求建立对象,这里只需要 4 个 JButton 对象,2 个 JPanel 对象,1 个 JLabel 对象;

panel1 =new JPanel(); // panel1.setBackground(Color.yellow); // shitou = new JButton("石头"); // jiandao =new JButton("剪刀"); // bu = new JButton("布"); // clear = new JButton("清空"); // pane12=new JPanel(); // pane12.setBackground(Color.green); //

label =new JLabel("选择剪刀、石头、布开始游戏"); //

第五步,给所有 JButton 对象注册事件监听器;

第六步,把所有新添加的对象都逐次放进窗体中,例如下面,先放进面板里面,然后再把面板放进窗体中, 放置位置可以自定义;

shitou.addActionListener(this); //给 shitou 添加事件监听器; bu.addActionListener(this); // jiandao.addActionListener(this); // clear.addActionListener(this); //

panel1.add(shitou); panel1.add(jiandao); panel1.add(bu); panel1.add(clear); pane12.add(label);

//把 shitou 放进 panel1 中; //
//
//

//

add(panel1,BorderLayout.NORTH); // add(pane12,BorderLayout.CENTER); // }

第七步,实现 ActionListener 接口方法,使得按下按钮后执行方法里的代码;

//实现 ActionListener 接口方法,当按下按钮就会调用该方法,可以称为事件响应器;
public void actionPerformed(ActionEvent e) {
if(e.getSource()==shitou) { //如果你按下的是 shitou 按键时,就会执行以下操作; inti=((int)(Math.random()*10))%3; //定义一个int型变量i,利用Math.random()函数获取 随机数,因为*10 所以随机数区间为[0,10),最后强制转换为 int 型,再除 3 取余,最后的赋值给 i; switch(i) //i 为 0 时就执行 case 0 操作,以此类推;

{
case 0 :label.setText("你出石头,电脑出石头,平局!");break; 操作,到 break 结束;(必须要添加 break,不然会一直执行下去);
case 1 :label.setText("你出石头,电脑出剪子,恭喜你赢了!");break; 同理;

//当 i=0 时,执行后续 //当 i=1 时,与上

-4-

case 2 :label.setText("你出石头,电脑出布,很遗憾你输了!");break; 同理;
}}

else if (e.getSource()==bu) { //如果你按下的是 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;

//当 i=2 时,与上

}}
else if (e.getSource()==jiandao) { //当你按下 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()==clear)//当你按下 clear 按键时,直接输出 label.setText(); { label.setText("选择剪刀、石头、布开始游戏"); }
}

第八步,添加主方法,进行测试;

}

package 实习;

import java.awt.*; //引入抽象窗口工具类包; import java.awt.event.*; //
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*; //

//author:Guo Jinglong
//school:taiyuanligong
//time:7/12
//定义一个窗口类,该类实现 ActionListener 接口;
public class demo02 extends JFrame implements ActionListener {
    JButton jiandao, shitou, bu, clear;     //定义 JButton 对象;
    JPanel pane12, panel1;     //定义 Jpanel 对象;
    JLabel label; //定义 JLabel 对象;

    public demo02()  //定义一个窗口类,该类实现 ActionListener 接口;
    {
        setTitle("石头剪刀布游戏"); //设置窗体标题,修改标题为“石头剪刀布游戏”;
        setLocation(250, 250); //设置窗体左上顶点坐标;
        setSize(350, 350); //设置窗体大小,修改窗体大小为:350×350;

        // 第四步,根据需求建立对象,这里只需要 4 个 JButton 对象,2 个 JPanel 对象,1 个 JLabel 对象;
        panel1 = new JPanel(); // 建立Jpanel对象
        panel1.setBackground(Color.yellow); // 给Jpanel对象创建背景
        shitou = new JButton("石头"); // 建立JButton对象
        jiandao = new JButton("剪刀"); //建立JButton对象
        bu = new JButton("布"); // 建立JButton对象
        clear = new JButton("清空"); // 建立JButton对象
        pane12 = new JPanel(); // 建立Jpanel对象
        pane12.setBackground(Color.green); // 给JPanel对象建立背景
        label = new JLabel("选择剪刀、石头、布开始游戏"); // 建立JLabel对象


        shitou.addActionListener(this); //给所有的Jbutton对象添加监听器 给 shitou 添加事件监听器;
        bu.addActionListener(this); //给 bu 添加事件监听器;
        jiandao.addActionListener(this); // 给 jiaodao 添加事件监听器;
        clear.addActionListener(this); // 给 clear 添加事件监听器;

        // 把所有的新添加的对象都放进去窗体里面,先放进组件类,再放进窗体类
        panel1.add(shitou);  //把 shitou 放进 panel1 中; //
        panel1.add(jiandao); //把 jiandao 放进 panel1 中; //
        panel1.add(bu); //把 bu 放进 panel1 中; //
        panel1.add(clear); //把 clear 放进 panel1 中; //
        pane12.add(label); //把 label 放进 pane12 中; //

        add(panel1, BorderLayout.NORTH); // 把面板Panel1放到窗口中
        add(pane12, BorderLayout.CENTER); // 把面板pane12放到窗口中


    }

    public static void main(String agrs[]) {//添加一个主函数,对窗体显示情况进行测试;
        demo02 frame = new demo02(); //初始化窗体对象;
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体关闭按钮;
        frame.setVisible(true); //使窗体可见;
    }

    // 事件响应器
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == shitou) { //如果你按下的是 shitou 按键时,就会执行以下操作;
            int i = ((int) (Math.random() * 10)) % 3; //定义一个int型变量i,利用Math.random()函数获取 随机数,因为*10 所以随机数区间为[0,10),最后强制转换为 int 型,再除 3 取余,最后的赋值给 i;
            switch (i) //i 为 0 时就执行 case 0 操作,以此类推;
            {
                case 0: //当 i=0 时,执行后续
                    label.setText("你出石头,电脑出石头,平局!");
                    break;
                case 1: //当 i=1 时,与上
                    label.setText("你出石头,电脑出剪子,恭喜你赢了!");
                    break;

                case 2: //当 i=2 时,与上
                    label.setText("你出石头,电脑出布,很遗憾你输了!");
                    break;
            }
        } else if (e.getSource() == bu) { //如果你按下的是 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() == jiandao) { //当你按下 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() == clear)//当你按下 clear 按键时,直接输出
        // label.setText();
        {
            label.setText("选择剪刀、石头、布开始游戏");
        }
    }
}

上一篇:238. 除自身以外数组的乘积


下一篇:剑指 Offer 66. 构建乘积数组