用java写的一个很简单的图形化石头剪刀布游戏

这里面最重要的还是ActionListener接口,虽然做的东西很没用,应付作业的而已,哈哈哈

第一步,引用需要的包;

import java.awt.*;													//继承JFrame类需要该包;
import java.awt.event.*;											//设置panel需要该包;
import javax.swing.*;												//涉及触发事件都需要该包;

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

public class work11 extends JFrame implements ActionListener{		//定义一个窗口类,该类实现ActionListener接口;
JButton jiandao,shitou,bu,clear;								//把JButton组件定义放到类里面,方便其他函数调用;
JPanel pane12,panel1;											//把JPanel组件定义放到类里面,方便其他函数调用;
JLabel label;													//把JLabel组件定义放到类里面,方便其他函数调用;

第三步,设置窗体。

public work11() {	
setTitle("窗体");														//设置窗体标题;
setLocation(250,250);												//设置窗体左上顶点坐标;
setSize(300,300);													//设置窗体大小;

第四步,根据需求建立对象,这里只需要4个JButton对象,2个JPanel对象,1个JLabel对象;

panel1 =new JPanel();												//添加一个JPanel对象,名为panel1,方便布局;
panel1.setBackground(Color.yellow);									//设置panel1颜色为黄色;
shitou = new JButton("石头");											//添加一个JButton对象,名为shitou;
jiandao =new JButton("剪刀");											//添加一个JButton对象,名为jiandao;
bu = new JButton("布");												//添加一个JButton对象,名为bu;
clear = new JButton("清空");											//添加一个JButton对象,名为clear;(本次实验创建了四个JButton对象,往后实验根据实际需求创建);

pane12=new JPanel();												//添加一个新的JPanel对象,名为panel2;
pane12.setBackground(Color.green);									//设置panel2颜色为绿色;
label =new JLabel("选择剪刀、石头、布开始游戏");							//新建一个JLabel对象,名为label;

第五步,给所有JButton对象添加事件约束;

shitou.addActionListener(this);										//给shitou添加事件约束;
bu.addActionListener(this);											//给bu添加事件约束;
jiandao.addActionListener(this);									//给jiandao添加事件约束;
clear.addActionListener(this);										//给clear添加事件约束;(总的来说,把所有JButton对象都添加事件约束);

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

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添加到窗体的中间;
}

第七步,定义一个ActionListener接口方法,使得按下按钮后执行方法里的代码;

public void actionPerformed(ActionEvent e) {						//定义一个ActionListener接口方法,当按下按钮就会调用里面的方法,可以称为事件响应器;
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时,与上同理;
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);											//使窗体可见;
}
}

完成结果图如下:
这是完成结果图!

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个简单的剪刀石头布游戏Java代码: ```java import java.util.Random; import java.util.Scanner; public class RockPaperScissorsGame { public static void main(String[] args) { System.out.println("欢迎来到剪刀石头布游戏!"); System.out.println("请输入您的选择:1.剪刀 2.石头 3.布"); Scanner scanner = new Scanner(System.in); int playerChoice = scanner.nextInt(); if (playerChoice < 1 || playerChoice > 3) { System.out.println("输入无效!"); return; } String[] choices = {"剪刀", "石头", "布"}; String computerChoice = choices[new Random().nextInt(choices.length)]; System.out.println("电脑出了:" + computerChoice); int result = getResult(playerChoice, computerChoice); if (result == 0) { System.out.println("平局!"); } else if (result == 1) { System.out.println("恭喜您,您赢了!"); } else { System.out.println("很抱歉,您输了!"); } } public static int getResult(int playerChoice, String computerChoice) { if (playerChoice == 1) { // 玩家出剪刀 if (computerChoice.equals("剪刀")) { return 0; } else if (computerChoice.equals("石头")) { return -1; } else { return 1; } } else if (playerChoice == 2) { // 玩家出石头 if (computerChoice.equals("剪刀")) { return 1; } else if (computerChoice.equals("石头")) { return 0; } else { return -1; } } else { // 玩家出布 if (computerChoice.equals("剪刀")) { return -1; } else if (computerChoice.equals("石头")) { return 1; } else { return 0; } } } } ``` 在这个代码中,我们使用了 `Scanner` 类获取用户输入的选择,并且使用 `Random` 类生成电脑的选择。然后,我们使用 `getResult` 函数计算出游戏结果,并且根据结果输出相应的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值