闲着无聊弄个猜拳的来哈,各位大佬,本人对swing也只是略懂皮毛哈,希望不要取笑,对于布局还是相当的头痛的,唉,没有美工的天份。废话不多说了,这篇是真真正正的原稿,不是网络上TMD都是转来的,糊弄人,错了都还转,最讨厌了。让很多新手们都走了许多弯路,网上有很多有用的资料,所以大家还是要多多自己去查的。好了,还是把源代码贴出来吧
第一。我就弄了两个类,一个是线程类,一个是主程序类。
1.主程序类
package com.util;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyFrame extends JFrame{
private static String[] imgs={"image"+File.separator+"quantou.jpg",
"image"+File.separator+"jiandao.jpg",
"image"+File.separator+"bu.jpg",
"image"+File.separator+"VS.jpg"}; //读取图片地址,保存在数组中
private static JLabel lbImage1=new JLabel(); //猜拳图1
private static JLabel lbImage2=new JLabel(); //猜拳图2
private static JLabel lbImageVs=new JLabel(); //猜拳图3
private static boolean isGame=false; //启动时候是否为开始猜拳
private static MyFrame mFrame; //MyFrame对象
private static String[] result={" 你赢了,yes! ","你输了,bitch!"," 平手,shit! "}; //猜拳结果
private static JButton label1=new JButton("******************"); //初始化按钮1
private static JButton label2=new JButton("******************"); //初始化按钮2
private static Font Titlefont = new Font("隶书",Font.PLAIN,30); //設置字体样式
/**
* 单例模式
* @return
*/
public static synchronized MyFrame getinstance(){
if(mFrame==null){
mFrame = new MyFrame("猜拳比赛");
}
return mFrame;
}
/**
* 构造函数
* @param name
*/
private MyFrame(String name){
//创建JFrame对象,JFrame用来在屏幕上显示一个Windows窗口。
super(name);
initFrame(this); //调用初始化方法
}
/**
* 初始化MyFrame;
* @param m
*/
public static void initFrame(MyFrame m){
m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponentsToPane(m.getContentPane()); //设置内容
// 设置其高度和宽度分别为:288像素和188像素
m.setSize(400,400);
m .setLocationRelativeTo( null );
// 显示该Frame
m.setVisible(true);
}
/**
* 初始化图片
*/
public static void ImaInit(){
Image img1;
Image img2;
Image imgVs;
int num1 = CThread.result(); //获取随机数1
int num2 = CThread.result(); //获取随机数2
img1=Toolkit.getDefaultToolkit().getImage(imgs[num1]);//给图片赋值,对手一出的招
img2=Toolkit.getDefaultToolkit().getImage(imgs[num2]); //给图片赋值,对手二出的招
imgVs=Toolkit.getDefaultToolkit().getImage(imgs[3]).getScaledInstance(50, 50, Image.SCALE_SMOOTH);//给VS图片赋值,
lbImage1.setIcon(new ImageIcon(img1));
lbImage2.setIcon(new ImageIcon(img2));
lbImageVs.setIcon(new ImageIcon(imgVs));
result(num1,num2);
}
/**
* 判断输赢
* @param num1
* @param num2
*/
public static void result(int num1,int num2){
if(num1==0&&num2==1){
label1.setText(result[0]);
label2.setText(result[1]);
}else if(num1==0&&num2==2){
label1.setText(result[1]);
label2.setText(result[0]);
}else if(num1==1&&num2==0){
label1.setText(result[1]);
label2.setText(result[0]);
}else if(num1==1&&num2==2){
label1.setText(result[0]);
label2.setText(result[1]);
}else if(num1==2&&num2==0){
label1.setText(result[0]);
label2.setText(result[1]);
}else if(num1==2&&num2==1){
label1.setText(result[1]);
label2.setText(result[0]);
}else if(num1==num2){
label1.setText(result[2]);
label2.setText(result[2]);
}
}
/**
* 给内容添加组件
* @param pane
*/
public static void addComponentsToPane(Container pane) {
JButton button; //开始按钮
if(isGame){
ImaInit();
}
JPanel panelMain =new JPanel();
panelMain.add(lbImage1);
panelMain.add(lbImageVs);
panelMain.add(lbImage2);
panelMain.setOpaque(false);
JLabel title= new JLabel("猜拳遊戲",JLabel.CENTER); //标题设置
title.setFont(Titlefont);
pane.add(title, BorderLayout.PAGE_START);
pane.add(panelMain, BorderLayout.CENTER);
pane.add(label1, BorderLayout.LINE_START);
button = new JButton("开始猜拳");
button.addActionListener(new ActionListener() { //开始比赛按钮事件触发
@Override
public void actionPerformed(ActionEvent e) {
isGame = true;
initFrame(getinstance());
}
});
pane.add(button, BorderLayout.PAGE_END);
pane.add(label2, BorderLayout.LINE_END);
}
public static void main(String[] args) {
MyFrame.getinstance();
}
}
注释不是很多很清晰哈,大家自己运行然后慢慢搞懂哦。
2.线程类,用来产生随机数
package com.util;
import java.util.Random;
/**
* 线程获取随机数
* @author hejinxi
*
*/
public class CThread implements Runnable{
@Override
public void run() {
result();
}
public CThread(){
new Thread(this).start();
}
public static int result(){
int number = (int) (Math.random() * 100);
if(0<=number&&number<=33){
return 0;
}else if(33<number&&number<=67){
return 1;
}else{
return 2;
}
}
}
就这么点代码,嘻嘻。然后我也上传了个源代码文件,有兴趣的人看看哈,纯属娱乐。或许你也可以把我的代码美化下,添加些功能下去,比如说计算器,计算对方各自赢了多少次
分享到:
相关推荐
闲着无聊,画了一个万年历原理图!-原理图.pdf
C# + SQL Server 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩 管理系统是一种通过计算机技术...
【标题】"闲着做了个菜单"所涉及的知识点主要集中在网页开发中的用户界面设计,尤其是下拉菜单的实现。菜单是网站或应用程序中至关重要的交互元素,它帮助用户导航和访问不同功能或内容。在这个项目中,创建了一个...
这是一个小程序,闲着无聊写的跟同事玩的。可以监控别人电脑的服务端,swing写的可直接运行jar。需要联合客户端,服务端一起用。 服务端可对此客户端实时监控,对话聊天,拷贝客户端电脑文件,客户端无感知,客户端...
大家好,我是Ray,今天给大家带来一个...它可以对一些手游进行模拟点击操作,实现脚本功能,(本来就是我写崩坏3游戏的时候闲着无聊的时候写的(太无聊,新型肺炎没法出门)),大家如果有兴趣的可以下载玩玩,它对新手很友好的
这是一个小程序,闲着无聊写的跟同事玩的。这是一个可以监控别人电脑的服务端,swing写的可直接运行jar。需要联合客户端,服务端一起用。客户端:https://download.csdn.net/download/qq_37527048/10521912 服务端:...
本人闲着无聊弄了个爱心图形的数字逻辑显示电路,有兴趣的人可以拿去参考一下,学过数字逻辑电路基础的很容易看懂,或许能给你提供学习上的帮助吧
标题中的“闲着没事Hessian开发WebService的总结(一)”表明这是一篇关于使用Hessian框架开发Web服务的文章,作者可能在其中分享了个人的经验和理解。Hessian是一种轻量级的远程调用协议,它允许Java和.NET之间进行...
今天也是闲着无聊借题发挥,这也谈不上是什么新技术,早就98时代就已经很流行了,这个教程只希望对刚入门的新手有所帮助。我曾经也深深地体会过,当你不会的时候,又在没有人指点的情况下,老板却又要你马上拿方案...
火柴人动画制作器是一款非常不错的火柴人动画制作工具,这种动画片虽然制作简单,但是却有着非常有趣的表现形式,闲着无聊,你也可以下载下来试试看,很有趣~ 软件特色 1、我们可以先了解一下pivot4的页面,和1的...
这是一个小程序,闲着无聊写的跟同事玩的。可以监控别人电脑的服务端,swing写的可直接运行jar。需要联合客户端,服务端一起用。客户端:https://download.csdn.net/download/qq_37527048/10521912 服务端:...
多用户网络版记帐系统 <br>闲着无聊随便写个程序玩玩,将来腾讯QQ等即时交流软件都有增加这个功能,方便大家理财管理。我现在做的这个是多用户 <br>版,几帐什么的已经没有问题了,后台还来不及写,大家先用着...
在共享经济的时代背景下,租赁模式逐渐成为趋势,它不仅能够减少资源浪费,还能够满足消费者多样化的需求,特别是对于那些偶尔使用但购买成本高的物品。 市场分析显示,国内分享经济正在迅速发展,涵盖了众多领域,...
闲着无聊自己写的
闲着无聊 CatchMe小游戏
高中历史之教学教研高二即将升高三这个暑假千万别闲着做好4件事成绩大幅提升素材
标题和描述中提到的核心知识点是关于CPU在空闲状态下的工作情况,主要涉及以下几个方面: 1. **CPU的空闲状态**:CPU并非在我们不使用电脑时就完全停止工作,而是处于一种“空闲”状态,执行所谓的“空闲任务(idle ...
最近闲着无聊开始分析 《漂流幻境》的协议,俗话说欲善其事,先利其器,于是就随手写了个封包分析器,虽然网上流传的一个M2M封包分析器不错,但是感觉那个功能不够,于是自己写了一个,支持字符与ASCII相互转换,十进制与...