IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 课程设计 石头剪刀布游戏 --- JAVA语言实习 Swing awt -> 正文阅读

[Java知识库]课程设计 石头剪刀布游戏 --- 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 javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainFrame {
    public static JFrame frame =new JFrame();
    private static JPanel panel=null;

    public MainFrame(){

        frame=new JFrame("剪刀石头布游戏");
        frame.setBounds(250,250,350,350);
        frame.getContentPane().setLayout(null);

        frame.setResizable(false);

        JMenuBar mbr =new JMenuBar();
        frame.setJMenuBar(mbr);

        JMenu m1=new JMenu("结果显示方式");

        JMenuItem m2=new JMenuItem("关于游戏");

        mbr.add(m1);
        mbr.add(m2);


        JMenuItem m11=new JMenuItem("文本显示");
        JMenuItem m12=new JMenuItem("图形显示");
        JMenuItem m13=new JMenuItem("结束游戏");

        m1.add(m11);
        m1.add(m12);
        m1.add(m13);

        JPanel p3=new JPanel();
        JLabel l3=new JLabel();




        m11.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                firstView();
                firstView().setVisible(true);

            }
        });

        m12.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                scendView().setVisible(true);

            }
        });

        m13.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        m2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(
                        frame,
                        "游戏名称:剪刀石头布\n游戏版本 version:1.1",
                        "关于游戏",
                        JOptionPane.INFORMATION_MESSAGE
                );
            }
        });




    }
    public static JFrame returnJFrame(){
        return frame;
    }

    public static void main(String[] args) {
        new MainFrame();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
    public static Frame firstView()  //定义一个窗口类,该类实现 ActionListener 接口;
    {


        JFrame  frame= new JFrame("剪刀石头布游戏");
        JButton jiandao, shitou, bu, clear;     //定义 JButton 对象;
        JPanel pane12, panel1,panel3;     //定义 Jpanel 对象;
        JLabel label; //定义 JLabel 对象;

        frame.setBounds(250,250,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对象

        jiandao.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int i = ((int) (Math.random() * 10)) % 3;
                switch (i) {
                    case 0:
                        label.setText("你出剪刀,电脑出剪刀,平局!");
                        break;
                    case 1:
                        label.setText("你出剪刀,电脑出布,恭喜你赢了!");
                        break;
                    case 2:
                        label.setText("你出剪刀,电脑出石头,很遗憾你输了!");
                        break;
                }
            }
        });

        shitou.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                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;
                }
            }
        });

        bu.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int i = ((int) (Math.random() * 10)) % 3;
                switch (i) {
                    case 0:
                        label.setText("你出布,电脑出布,平局!");
                        break;
                    case 1:
                        label.setText("你出布,电脑出石头,恭喜你赢了!");
                        break;
                    case 2:
                        label.setText("你出布,电脑出剪刀,很遗憾你输了!");
                        break;
                }
            }
        });

        clear.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("选择剪刀、石头、布开始游戏");
            }
        });



        // 把所有的新添加的对象都放进去窗体里面,先放进组件类,再放进窗体类
        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 中; //


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


        return frame;
    }
    public  Frame scendView()  //定义一个窗口类,该类实现 ActionListener 接口;
    {


        JFrame  frame= new JFrame("剪刀石头布游戏");
        JButton jiandao, shitou, bu, clear;     //定义 JButton 对象;
        JPanel pane12, panel1,panel3;     //定义 Jpanel 对象;
        JLabel label,label1,label2; //定义 JLabel 对象;

        frame.setBounds(250,250,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对象
        label1=new JLabel();
        label2=new JLabel();

        jiandao.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int i = ((int) (Math.random() * 10)) % 3;
                label1.setIcon(new ImageIcon("剪刀.jpg"));
                switch (i) {
                    case 0:
                        label.setText("你出剪刀,电脑出剪刀,平局!");
                        label2.setIcon(new ImageIcon("剪刀.jpg"));
                        break;
                    case 1:
                        label.setText("你出剪刀,电脑出布,恭喜你赢了!");
                        label2.setIcon(new ImageIcon("布.jpg"));
                        break;
                    case 2:
                        label.setText("你出剪刀,电脑出石头,很遗憾你输了!");
                        label2.setIcon(new ImageIcon("石头.jpg"));
                        break;
                }
            }
        });

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

                    case 2: //当 i=2 时,与上
                        label.setText("你出石头,电脑出布,很遗憾你输了!");
                        label2.setIcon(new ImageIcon("布.jpg"));
                        break;
                }
            }
        });

        bu.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int i = ((int) (Math.random() * 10)) % 3;
                label1.setIcon(new ImageIcon("布.jpg"));
                switch (i) {
                    case 0:
                        label.setText("你出布,电脑出布,平局!");
                        label2.setIcon(new ImageIcon("布.jpg"));
                        break;
                    case 1:
                        label.setText("你出布,电脑出石头,恭喜你赢了!");
                        label2.setIcon(new ImageIcon("石头.jpg"));
                        break;
                    case 2:
                        label.setText("你出布,电脑出剪刀,很遗憾你输了!");
                        label2.setIcon(new ImageIcon("剪刀.jpg"));
                        break;
                }
            }
        });

        clear.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("选择剪刀、石头、布开始游戏");
            }
        });



        // 把所有的新添加的对象都放进去窗体里面,先放进组件类,再放进窗体类
        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 中; //
        pane12.add(label1);
        pane12.add(label2);



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


        return frame;
    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 21:56:32  更:2021-07-16 21:56:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 2:52:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码