石头剪刀布游戏高级版(Java编写)

  • 石头剪刀布

1.问题描述

【问题描述】

用 JAVA 语言设计如下界面的石头剪刀布游戏。游戏的一方点击界面上石头、剪刀、布按钮,游戏的

另一方计算机随机选择,然后给出游戏结果。

【基本要求】

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

1. 在“//”后给出必要的注释;

2. 为程序添加菜单;至少 2 个菜单:结果显示方式和关于游戏;结果显示方式菜单有 3 个菜单项:文本

显示、图形显示、结束游戏;实现菜单中的功能,自行搜索能体现石头、剪刀、布的图形或图片,用

这些图形或图片显示游戏结果。

第一步,引用需要的包或类;

import java.awt.*;

//引入抽象窗口工具类包;

import java.awt.event.*; //

import javax.swing.*;

//

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

//定义一个窗口类,该类实现 ActionListener 接口;

public class work11 extends JFrame implements ActionListener{

JButton jiandao,shitou,bu,clear;

//定义 JButton 对象;

JPanel pane12,panel1;

//

JLabel label;

//

第三步,设置窗体。

public work11() {

setTitle("窗体");

//设置窗体标题,修改标题为“石头剪刀布游戏”;

setLocation(250,250);

//设置窗体左上顶点坐标;- 4 -

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);

//shitou 放进 panel1 中;

panel1.add(jiandao);

//

panel1.add(bu);

//

panel1.add(clear);

//

pane12.add(label);

//

add(panel1,BorderLayout.NORTH);

//

add(pane12,BorderLayout.CENTER);

//

}

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

//实现 ActionListener 接口方法,当按下按钮就会调用该方法,可以称为事件响应器;

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 :label.setText("你出石头,电脑出石头,平局!");break;

//i=0 时,执行后续

操作,到 break 结束;(必须要添加 break,不然会一直执行下去);

case 1 :label.setText("你出石头,电脑出剪子,恭喜你赢了!");break;

//i=1 时,与上

同理;- 5 -

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

//i=2 时,与上

同理;

}}

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("选择剪刀、石头、布开始游戏"); }

}

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

public static void main(String agrs[]) {//添加一个主函数,对窗体显示情况进行测试;

work11 frame =new work11();

//初始化窗体对象;

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//设置窗体关闭按钮;

frame.setVisible(true);

//使窗体可见;

}

}

 

 

package 石头剪刀布;
import java.awt.*;//引入抽象窗口工具包;
import java.awt.event.*;//
import java.util.Calendar;

import javax.swing.*;//
import javax.swing.border.Border;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;

	 @SuppressWarnings("serial")
	class work11 extends JFrame implements ActionListener{
		JButton jiandao,shitou,bu,clear;
		JPanel panel12,panel11;
		JLabel label;
		
	
	public work11() {
		setTitle("石头剪刀布");//窗体标题
		setLocation(250,250);//设置窗体左上顶点坐标
		setSize(350,350);//窗体大小
		JMenuBar mbar=new JMenuBar();//创建菜单栏
	    setJMenuBar(mbar);
	    JMenu m1=new JMenu("结果显示方式");
	    JMenu m2=new JMenu("关于游戏");
	    mbar.add(m1);
	    mbar.add(m2);
	    JMenuItem mil1=new JMenuItem("文本显示");//实现菜单项
	    JMenuItem mil2=new JMenuItem("图形显示");
	    mil2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				work13 frame2=new work13();
				frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame2.setVisible(true);
			}
		});
	   
	  
	    final JMenuItem mil3=new JMenuItem("结束游戏");
	    mil3.addActionListener(new ActionListener() {
	    	public void actionPerformed(ActionEvent e) {
	    		int t=JOptionPane.showConfirmDialog(mil3, "确定要结束游戏吗?");
	    		if(t==JOptionPane.YES_OPTION) {
	    			System.exit(0);
	    		}
	    		else if(t==JOptionPane.NO_OPTION) {
	    			System.out.println(" ");
	    		}
	    		else {
	    			System.out.println();
	    		}
	    	}
	    });
		
	    m1.add(mil1);
	    m1.add(mil2);
	    m1.add(mil3);
	    
	
	panel11=new JPanel();
	panel11.setBackground(Color.yellow);
	shitou=new JButton("石头");
	jiandao=new JButton("剪刀");
	bu=new JButton("布");
	clear=new JButton("清空");
	panel12=new JPanel();
	panel12.setBackground(Color.green);
	label=new JLabel("选择剪刀,石头,布开始游戏");
	shitou.addActionListener(this);//给shitou添加事件监听器;
	bu.addActionListener(this);
	jiandao.addActionListener(this);
	clear.addActionListener(this);
	
	//把对象放入面板里,将面板放入窗体里
	panel11.add(shitou);
	panel11.add(jiandao);
	panel11.add(bu);
	panel11.add(clear);
	panel12.add(label);
	
	add(panel11,BorderLayout.NORTH);
	add(panel12,BorderLayout.CENTER);
	}
	//实现ActionListener接口方法
	public void actionPerformed(ActionEvent e) {
		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("选择剪刀,石头,布开始游戏");
		}
	}
	 }
	  class work13 extends JFrame implements ActionListener{
		 /**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		JButton jiandao,shitou,bu,clear;
		 JPanel panel2,panel1;
		 JLabel label;
		 public work13() {
			 ImageIcon a=new ImageIcon("D:\\jiandao.jpg");
			 ImageIcon b=new ImageIcon("D:\\shitou.jpg");
			 ImageIcon c=new ImageIcon("D:\\bu.jpg");
			 a.setImage(a.getImage().getScaledInstance(50, 50, 0));
			 b.setImage(b.getImage().getScaledInstance(50, 50, 0));
			 c.setImage(c.getImage().getScaledInstance(50, 50, 0));
			 setTitle("图像");
			 setLocation(250,250);
			 setSize(300,300);
			 panel1=new JPanel();
			 panel1.setBackground(Color.yellow);
			 shitou =new JButton();
			 shitou.setIcon(b);
			 jiandao =new JButton();
			 jiandao.setIcon(a);
			 bu=new JButton();
			 bu.setIcon(c);
			 clear=new JButton("清空");
			 panel2=new JPanel();
			 panel2.setBackground(Color.green);
			 label=new JLabel("选择剪刀石头布开始游戏");
			 shitou.addActionListener(this);
			 bu.addActionListener(this);
			 jiandao .addActionListener(this);
			 clear.addActionListener(this);
			 panel1.add(shitou);
			 panel1.add(jiandao);
			 panel1.add(bu);
			 panel1.add(clear);
			 panel2.add(label);
			 add(panel1,BorderLayout.NORTH);
			 add(panel2,BorderLayout.CENTER);
		 }
		 public void actionPerformed(ActionEvent e) {
			 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("选择剪刀,石头,布开始游戏");
				}
			}
		 }
	 public  class Two{
			public static void main(String[] args) {
				work11 frame=new work11();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
			}
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

study NH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值