石头剪刀布游戏高级版(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);
			}
}

 

 

 

 

好的,我可以为您提供一个HTML制作的猜拳小游戏代码示例,但是关于利用Eclipse制作简单UI猜拳小游戏的代码,因为涉及到具体的编程语言和技术,建议您使用相关的教程或者参考资料进行学习和实践。以下是HTML制作猜拳小游戏的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>猜拳小游戏</title> <style> body { font-family: Arial, sans-serif; background-color: #f2f2f2; } h1 { text-align: center; } .container { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; margin-top: 50px; } .option { margin: 10px; padding: 10px; background-color: white; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); cursor: pointer; transition: all 0.3s ease; } .option:hover { transform: translateY(-5px); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); } .option img { display: block; margin: 0 auto; max-width: 100%; height: auto; } .result { margin-top: 50px; text-align: center; font-size: 24px; font-weight: bold; } </style> </head> <body> <h1>猜拳小游戏</h1> <div class="container"> <div class="option" data-value="1"> <img src="https://i.imgur.com/8pYv5Xr.png" alt="石头"> <p>石头</p> </div> <div class="option" data-value="2"> <img src="https://i.imgur.com/0aLqjYn.png" alt="剪刀"> <p>剪刀</p> </div> <div class="option" data-value="3"> <img src="https://i.imgur.com/6jRVIzG.png" alt="布"> <p>布</p> </div> </div> <div class="result"></div> <script> // 获取所有选项元素 const options = document.querySelectorAll('.option'); // 获取结果元素 const result = document.querySelector('.result'); // 定义猜拳结果数组 const results = ['平局', '你赢了', '你输了']; // 定义选项名称数组 const names = ['石头', '剪刀', '布']; // 为每个选项元素绑定点击事件 options.forEach(option => { option.addEventListener('click', () => { // 生成计算机随机选择的选项值 const computerValue = Math.floor(Math.random() * 3) + 1; // 获取当前选项的值 const userValue = parseInt(option.dataset.value); // 计算猜拳结果 const resultValue = (userValue - computerValue + 3) % 3; // 显示结果 result.textContent = `你选择了${names[userValue - 1]},计算机选择了${names[computerValue - 1]},${results[resultValue]}`; }); }); </script> </body> </html> ``` 这是一个简单的HTML页面,包含一个标题、三个选项和一个结果显示区域。每个选项都有一个图片和一个名称,并且带有一个自定义属性`data-value`表示选项的值(1表示石头,2表示剪刀,3表示布)。当用户点击任意一个选项时,JavaScript代码会生成计算机随机选择的选项值,并计算出猜拳结果,最后在结果显示区域显示结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

study NH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值