Java实现石头剪刀布小游戏
作者:MKN 发布时间:2023-02-25 22:41:29
标签:java,石头剪刀布
本文实例为大家分享了Java实现石头剪刀布的具体代码,供大家参考,具体内容如下
代码:
package com.neusoft.test;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test05 extends JFrame implements ActionListener, ItemListener{
int m = 1;
int n = 2;
int peace = 0;
int win = 0;
int lose = 0;
int all = 0;
JButton jb1,jb2;
JLabel jl1,jl2,jl2i,jl3,jl3i,jl4,jl5;
ImageIcon img1,img2;
Choice ch;
JPanel jp1,jp2,jp3,jp4,jp5,jp6;
public Test05(){
jb1 = new JButton("确定出拳");
jb2 = new JButton("退出");
//设置监听
jb1.addActionListener(this);
jb2.addActionListener(this);
jl1 = new JLabel("猜拳小游戏");
jl2 = new JLabel("我方出拳");
jl3 = new JLabel("敌方出拳");
jl4 = new JLabel("请出拳...");
jl5 = new JLabel("您玩了"+all+"局,平了"+peace+"局,赢了"+win+"局,输了"+lose+"局");
System.out.println(m);
img1 = new ImageIcon("D:/mkn/test/img/"+m+".png");
img2 = new ImageIcon("D:/mkn/test/img/"+n+".png");
jl2i = new JLabel(img1);
jl3i = new JLabel(img2);
ch = new Choice();
ch.add("石头");
ch.add("剪刀");
ch.add("布");
ch.addItemListener(this);
jp1 = new JPanel(new BorderLayout());
jp2 = new JPanel();
jp3 = new JPanel(new BorderLayout());
jp4 = new JPanel(new BorderLayout());
jp5 = new JPanel(new GridLayout(5,1));
jp6 = new JPanel(new BorderLayout());
jp2.setSize(600, 25);
jp2.setBackground(Color.red);
jp3.setSize(280, 300);
jp4.setSize(280, 300);
jp5.setSize(40, 300);
jp6.setSize(600, 25);
// jp6.setBackground(Color.GRAY);
jp2.add(jl1); //标题
jp3.add(jl2,BorderLayout.NORTH); //
jp3.add(jl2i,BorderLayout.CENTER);
jp4.add(jl3,BorderLayout.NORTH);
jp4.add(jl3i, BorderLayout.CENTER);//敌方出拳
jp5.add(ch);
jp5.add(jb1);
jp5.add(jb2);
jp6.add(jl4,BorderLayout.WEST);
jp6.add(jl5,BorderLayout.EAST);//结果
jp1.add(jp2,BorderLayout.NORTH);
jp1.add(jp3,BorderLayout.WEST);
jp1.add(jp4,BorderLayout.CENTER);
jp1.add(jp5,BorderLayout.EAST);
jp1.add(jp6,BorderLayout.SOUTH);
this.add(jp1);
this.setTitle("猜拳小游戏");
this.setSize(540,300);
// this.setLayout(new BorderLayout());
this.setLocationRelativeTo(null); //居中
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false); //窗口大小可变
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand()=="确定出拳"){
n = (int)(1+Math.random()*(3));
jl3i.setIcon(new ImageIcon("D:/mkn/test/img/"+n+".png"));
if (m - n == 0) {
jl4.setText("您和计算机平局");
peace++;
}
if (m - n == -1||m - n == 2) {
jl4.setText("您赢了!!!");
win++;
}
if (m - n == -2||m - n == 1) {
jl4.setText("您输了!!!");
lose++;
}
all++;
jl5.setText("您玩了"+all+"局,平了"+peace+"局,赢了"+win+"局,输了"+lose+"局");
// System.out.println(n);
}else{
this.dispose();
}
}
public static void main(String[] args) {
Test05 test05 = new Test05();
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getSource()==ch){
Choice temp=(Choice)e.getSource();
if (temp.getSelectedItem() == "石头") {
m = 1;
}
if (temp.getSelectedItem() == "剪刀") {
m = 2;
}
if (temp.getSelectedItem() == "布") {
m = 3;
}
jl2i.setIcon(new ImageIcon("D:/mkn/test/img/"+m+".png"));
// System.out.println(m);
}
}
}
运行效果:
来源:https://www.cnblogs.com/makangning/p/9387644.html
0
投稿
猜你喜欢
- 简介说明本文用实例介绍stream的使用。JDK8新增了Stream(流操作) 处理集合的数据,可执行查找、过滤和映射数据等操作。使用Str
- 一、水平分表当业务需求的数据量过大时,一个表格存储数据会非常之多,故时长采用水平分表的方式来减少每张表的数据量即是提升查询数据库时的效率。水
- 1.阻塞I/O模型阻塞IO模型是常见的IO模型,在读写数据时客户端会发生阻塞。阻塞IO模型的工作流程为:1.1在用户线程发出IO请求之后,内
- 详解java中的PropertyChangeSupport与PropertyChangeListenerjava中的PropertyChan
- 本文主要介绍了Spring Security OAuth2 实现登录互踢的示例代码,分享给大家,具体如下:背景说明一个账号只能一处登录,类似
- 最近做了很多项目,不同的系统,不同的部署方式,这里做个记录1.在jar包目录新建一个start.bat 文件,然后写入启动命令j
- SpringBoot 工厂模式自动注入Map一、建立工厂类public interface AnimalFactory { S
- 前言在以SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的,同时还需要给出校验的返回信息放到上文我们统一
- public Bitmap CopyBitmap(Bitmap source){ int depth =
- 本文实例讲述了C#实现对Json字符串处理方法,分享给大家供大家参考。具体分析如下:一般对于web应用开发人员来说对Json字符串都会很熟悉
- C#支持的位逻辑运算符如表2.9所示。运算符号意义运算对象类型运算结果类型对象数实例~位逻辑非运算整型,字符型整型1~a&位逻辑与运
- 写在前面注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE前言
- 本文实例为大家分享了Java读取并下载网络文件的具体代码,供大家参考,具体内容如下import java.io.ByteArrayOutpu
- 值栈:值栈是一个集合中的几个对象保持下列对象提供的顺序:值栈可以通过JSP,Velocity或者Freemarker的标签。有各种不同的标签
- 假设下面是你的视频网站链接列表,如果别人想爬取你的数据十分轻松,看规则就知道数据库是序列自增的http://www.xxxx.com/vid
- 相信大家最关心的肯定不是什么一大堆的破理论,然后还似懂非懂的,最关心得莫过于服务之间的参数传递,数据获取。Ok,今天就告诉大家三种微服务之间
- 一、前言正常情况下classloader只能找到jar里面当前目录或者文件类里面的*.class文件。为了能够加载嵌套jar里面的资源之前都
- 1. 日志的作用日志是程序的重要组成部分,在程序报错的时候,如果我们不看日志,是很难排查出错误的,除非你真的是很有经验.所以日志最主要的作用
- 当我们使用swagger,进行接口测试,怕接口不安全,担心暴露。可采用两种方式1.环境权限配置对swagger文档配置只在测试环境可访问,生
- 1. 将对象转换为JSON字符串,返回值为一个JSON字符串public static String toJson(Object value