石头剪刀布游戏

Posted 扬志九洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了石头剪刀布游戏相关的知识,希望对你有一定的参考价值。

2.1【问题描述】

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

2.2【基本要求】

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

  1. 在“//”后给出必要的注释;
  2. 为程序添加菜单;至少 2 个菜单:结果显示方式和关于游戏;结果显示方式菜单有 3 个菜单项:文本
    显示、图形显示、结束游戏;实现菜单中的功能,自行搜索能体现石头、剪刀、布的图形或图片,用
    这些图形或图片显示游戏结果。
import javax.swing.*;  //引用图形可视包
import java.awt.*;    //引入抽象窗口工具类包
import java.awt.event.*;  //提供处理由awt组件所激发的各类事件的接口和类
//定义一个窗口类,该类实现ActionListener接口
public class work11 extends JFrame implements ActionListener 
    int i;
	JButton jiandao,shitou,bu,clear;  //定义JButton对象
    JPanel pane12,panel1;             //定义JPanel对象
    JLabel label;                     //定义JLabel对象
	JMenuBar bar;                     //定义JMenubar对象
	JMenu menu1;                       //定义JMenu对象
	JMenu menu2;
	JMenuItem item1;                   //定义JMenuitem对象
	JMenuItem item2;
	JMenuItem item3;
    public work11() 
        setTitle("石头剪刀布游戏");     //设置窗体标题
        setLocation(250,250);           //设置窗体左上顶点坐标
        setSize(350,350);               //设置窗体大小
        //创建对象
		bar = new JMenuBar();
		menu1 = new JMenu("结果显示方式");
		menu2 = new JMenu("关于游戏");
		item1 = new JMenuItem("文本显示");
		item2 = new JMenuItem("图形显示");
		item3 = new JMenuItem("结束游戏");
		//把菜单项加到菜单中
		menu1.add(item1);
		menu1.add(item2);
		menu1.add(item3);
		//把菜单加到菜单条中
		bar.add(menu1);
		bar.add(menu2);
		this.setJMenuBar(bar);
		panel1 =new JPanel();
        panel1.setBackground(Color.yellow);     //给窗体panel1设置背景颜色
		shitou = new JButton("石头");          
        jiandao =new JButton("剪刀");
        bu = new JButton("布");
        clear = new JButton("清空");
        pane12 = new JPanel();
        pane12.setBackground(Color.green); //给窗体panel2设置背景颜色
        label =new JLabel("请做出您的选择以开始游戏");//运行窗口以后显示的标签
        //下面的四行是事件监听器,监听用户的输入
		shitou.addActionListener(this);//给shitou添加事件监听器
        bu.addActionListener(this);//给bu添加事件监听器
        jiandao.addActionListener(this);//给jiandao添加事件监听器
        clear.addActionListener(this);//给clear添加事件监听器
		item1.addActionListener(this);//给item1添加事件监听器
		item2.addActionListener(this);//给item2添加事件监听器
		item3.addActionListener(this);//给item3添加事件监听器
        //把组件放进窗体中
		panel1.add(shitou);//把shitou放进panel1窗体中
        panel1.add(jiandao);//把jiandao放进panel1窗体中
        panel1.add(bu);//把bu放进panel1窗体中
        panel1.add(clear);//把clear放进panel1窗体中
        pane12.add(label); //把label放进panel2窗体中
        add(panel1,BorderLayout.NORTH);//将panel1放在窗体上方
        add(pane12,BorderLayout.CENTER);//将panel2放在窗体中央
    
    //事件响应器
		
    	public void actionPerformed(ActionEvent e)
			if(e.getSource()==item1)
				i=0;				
			
			else if(e.getSource()==item2)
				i=1;				
			else if(e.getSource()==item3)
				i=2;				
			
			if(i==0)
				label.setIcon(null);//清除图片
				if(e.getSource()==shitou)
					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()==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)
					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)
					label.setText("选择剪刀、石头、布开始游戏");
				
			else if(i==1)
				label.setText(null);//清除文本
				if(e.getSource()==shitou)
					int i=((int)(Math.random()*10))%3;//给电脑随机分配结果
						switch(i)
							case 0 :label.setIcon(new ImageIcon("图片\\\\" + "0_0.jpeg"));break;
							case 1 :label.setIcon(new ImageIcon("图片\\\\" + "0_1.jpeg"));break;
							case 2 :label.setIcon(new ImageIcon("图片\\\\" + "0_2.jpeg"));break;
						
					
						else if(e.getSource()==bu)
						int i=((int)(Math.random()*10))%3;
						switch(i)
							case 0 :label.setIcon(new ImageIcon("图片\\\\" + "2_2.jpeg"));break;
							case 1 :label.setIcon(new ImageIcon("图片\\\\" + "2_0.jpeg"));break;
							case 2 :label.setIcon(new ImageIcon("图片\\\\" + "2_1.jpeg"));break;
						
					
						else if(e.getSource()==jiandao)
						int i=((int)(Math.random()*10))%3;
						switch(i)
							case 0 :label.setIcon(new ImageIcon("图片\\\\" + "1_1.jpeg"));break;
							case 1 :label.setIcon(new ImageIcon("图片\\\\" + "1_2.jpeg"));break;
							case 2 :label.setIcon(new ImageIcon("图片\\\\" + "1_0.jpeg"));break;
						
					
						else if(e.getSource()==clear)
						label.setIcon(null);
						label.setText("选择剪刀、石头、布开始游戏");
						
			else if(i==2)
				System.exit(-1);
			
	
    
	//主函数
    public static void main(String[] args) 
        work11 frame = new work11();//初始化窗体对象
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体关闭按钮
        frame.setVisible(true);//使窗体可见
    

以上是关于石头剪刀布游戏的主要内容,如果未能解决你的问题,请参考以下文章

《石头、剪刀、布》幼儿园教案

python-编写石头剪刀布小游戏

NOI 08 石头剪刀布

oj115

生活大爆炸版石头剪刀布

AC日记——石头剪刀布 openjudge 1.6 08