简单的掷骰子游戏(Java、UI界面)
这是之前Java课程的一个作业,主要是为了熟悉UI布局和多线程。
玩家和电脑掷骰子,比较大小,游戏规则可以自己定,
我设置的规则:游戏规则:三颗骰子,将您掷的骰子各点数与电脑随机出现的骰子点数进行对比:
"若您掷出豹子数,则赢,电脑掷出豹子数,则输;若您掷出顺子,则赢,电脑掷出顺子,则输;"
"若您的骰子中点数和比电脑掷的点数和大,则赢;小则输;一样大则和."
准备好六颗骰子的图片,在项目里建一个image文件,图片放里面
游戏界面:
package gameOnline;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.Random;
import java.util.List;public class Game extends JFrame implements ActionListener{private static List<Icon> photo=new ArrayList<Icon>(); Thread t1,t2,t3,t4,t5,t6;IconThread p1,p2,p3,p4,p5,p6;private JLabel j1,j2,j3;private JLabel k1,k2,k3;private JButton start;private JLabel result;static int playerSum;static int computerSum;public static void main(String[] args) {Game game=new Game(); game.show();
} //布置游戏UI界面@SuppressWarnings("deprecation")public void show(){JFrame frame = new JFrame();frame.setSize(400,460);frame.setLocation(480, 220);frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);frame.setTitle("掷骰子游戏");frame.getContentPane().setLayout(null);frame.setResizable(false); String path="image\\tim.jpg";ImageIcon background=new ImageIcon(path);JLabel ground=new JLabel(background);ground.setBounds(0, 0, frame.getWidth(), frame.getHeight());JPanel panel=(JPanel)frame.getContentPane();panel.setOpaque(false);frame.getLayeredPane().add(ground,new Integer(Integer.MIN_VALUE)); JButton player=new JButton("玩家");player.setSize(65, 35);player.setLocation(165, 0);frame.getContentPane().add(player); j1=new JLabel();j1.setIcon(new ImageIcon(("image\\1.jpg")));j1.setSize(96, 96);j1.setLocation(40, 45);frame.getContentPane().add(j1); j2=new JLabel();j2.setIcon(new ImageIcon(("image\\1.jpg")));j2.setSize(96, 96);j2.setLocation(146, 45);frame.getContentPane().add(j2); j3=new JLabel();j3.setIcon(new ImageIcon(("image\\1.jpg")));j3.setSize(96, 96);j3.setLocation(252, 45);frame.getContentPane().add(j3); JButton computer=new JButton("电脑");computer.setSize(65, 35);computer.setLocation(165, 264);frame.getContentPane().add(computer); k1=new JLabel();k1.setIcon(new ImageIcon(("image\\6.jpg")));k1.setSize(96, 96);k1.setLocation(40, 300);frame.getContentPane().add(k1); k2=new JLabel();k2.setIcon(new ImageIcon(("image\\6.jpg")));k2.setSize(96, 96);k2.setLocation(146, 300);frame.getContentPane().add(k2); k3=new JLabel();k3.setIcon(new ImageIcon(("image\\6.jpg")));k3.setSize(96, 96);k3.setLocation(252, 300);frame.getContentPane().add(k3); start = new JButton("开始");start.setSize(60, 40);start.setLocation(265, 186);start.addActionListener(this);frame.getContentPane().add(start); result = new JLabel();result.setSize(100, 100);result.setLocation(48, 155);frame.getContentPane().add(result); JButton help=new JButton("规则");help.setSize(60,40);help.setLocation(326, 186);frame.getContentPane().add(help);JDialog dialog=new JDialog();help.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dialog.setModal(true); JOptionPane.showMessageDialog(frame, "游戏规则:\n三颗骰子,将您掷的骰子各点数与\n电脑随机出现的骰子点数进行对比:\n"+ "若您掷出豹子数,则赢,电脑掷出豹子数,则输;\n若您掷出顺子,则赢,电脑掷出顺子,则输;\n"+ "若您的骰子中点数和比电脑掷的点数和大,则\n赢;小则输;一样大则和.\n","规则", JOptionPane.INFORMATION_MESSAGE);}});frame.setVisible(true);//将骰子的六个点数添加到photo的位置photo.add(new ImageIcon(("image\\1.jpg")));photo.add(new ImageIcon(("image\\2.jpg")));photo.add(new ImageIcon(("image\\3.jpg")));photo.add(new ImageIcon(("image\\4.jpg")));photo.add(new ImageIcon(("image\\5.jpg")));photo.add(new ImageIcon(("image\\6.jpg")));thread();}@SuppressWarnings("deprecation")public class IconThread extends Observable implements Runnable {JLabel lab;Random random = new Random();List<Icon> photo;public IconThread(JLabel lab, List<Icon> photo) {this.lab = lab;this.photo = photo; } public void run() { int count = 10; //设置每颗骰子转动10次while (count > 0) {int dianshu = random.nextInt(6); //获取一个随机数[0~6) lab.setIcon(photo.get(dianshu)); //从photo集合中取相应图片放入lab中count--;try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}}this.setChanged();this.notifyObservers();}}public void thread(){p1 = new IconThread(j1, photo); p2 = new IconThread(j2, photo); p3 = new IconThread(j3, photo); p4 = new IconThread(k1, photo);p5 = new IconThread(k2, photo);p6 = new IconThread(k3, photo); }//玩家点数public int playerResult(JLabel JL) {Icon icon=JL.getIcon();int playerSum=0;for(int i=0;i<photo.size();i++) {if(icon.equals(photo.get(i))) {playerSum+=(i+1);break;}}return playerSum;} //电脑点数public int computerResult(JLabel JL) {Icon icon=JL.getIcon();int computerSum=0;for(int i=0;i<photo.size();i++) {if(icon.equals(photo.get(i))) {computerSum+=(i+1);break;}}return computerSum;}//冒泡排序
public static void bubbleSort(int[] arr) {for(int i=0;i<arr.length-1;i++) {for(int j=0;j<arr.length-i-1;j++) {if(arr[j]>arr[j+1]) {int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}public void actionPerformed(ActionEvent ae) {thread();t1 = new Thread(p1); t2 = new Thread(p2); t3 = new Thread(p3); t4 = new Thread(p4);t5 = new Thread(p5);t6 = new Thread(p6);t1.start(); t2.start();t3.start();t4.start();t5.start();t6.start();try {t1.join();t2.join();t3.join();t4.join();t5.join();t6.join();}catch(InterruptedException e) {e.printStackTrace();}//调用函数获得各图片点数int x=playerResult(j1);int y=playerResult(j2);int z=playerResult(j3);int u=computerResult(k1);int v=computerResult(k2);int w=computerResult(k3);int playerSum=x+y+z;int computerSum=u+v+w;/** System.out.println("玩家的点数和:"+playerSum);* System.out.println("电脑的点数和:"+computerSum); System.out.println();*/int[] playerArr= {x,y,z};int[] computerArr= {u,v,w};bubbleSort(playerArr);bubbleSort(computerArr);try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();}//玩家掷出豹子if(x==y&&y==z) {result.setIcon(new ImageIcon(("image\\win.jpg"))); }//电脑掷出豹子else if(u==v&&v==w) {result.setIcon(new ImageIcon(("image\\lose.jpg"))); }//玩家掷出顺子else if(playerArr[0]==1&&playerArr[1]==2&&playerArr[2]==3) {result.setIcon(new ImageIcon(("image\\win.jpg"))); }else if(playerArr[0]==2&&playerArr[1]==3&&playerArr[2]==4) {result.setIcon(new ImageIcon(("image\\win.jpg")));}else if(playerArr[0]==3&&playerArr[1]==4&&playerArr[2]==5) {result.setIcon(new ImageIcon(("image\\win.jpg")));}else if(playerArr[0]==4&&playerArr[1]==5&&playerArr[2]==6) {result.setIcon(new ImageIcon(("image\\win.jpg")));}//电脑掷出顺子else if(computerArr[0]==1&&computerArr[1]==2&&computerArr[2]==3) {result.setIcon(new ImageIcon(("image\\lose.jpg"))); }else if(computerArr[0]==2&&computerArr[1]==3&&computerArr[2]==4) {result.setIcon(new ImageIcon(("image\\lose.jpg")));}else if(computerArr[0]==3&&computerArr[1]==4&&computerArr[2]==5) {result.setIcon(new ImageIcon(("image\\lose.jpg")));}else if(computerArr[0]==4&&computerArr[1]==5&&computerArr[2]==6) {result.setIcon(new ImageIcon(("image\\lose.jpg")));}//比较大小else if (playerSum > computerSum ) { result.setIcon(new ImageIcon(("image\\win.jpg"))); } else if(playerSum < computerSum ){ result.setIcon(new ImageIcon(("image\\lose.jpg")));}else {result.setIcon(new ImageIcon(("image\\peace.jpg"))); }}}
运行结果:
大概的设计就是这样。
简单的掷骰子游戏(Java、UI界面)相关推荐
- 掷骰子python代码_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程
不论是经验丰富的老程序员,还是没有经验的新手,Python 都是一个非常好的编程语言. Image by : opensource.com Python 是一个非常流行的编程语言,它可以用于创建桌面应 ...
- R语言简单应用掷骰子游戏
.练习8-1 在掷骰子游戏中,玩家(射手)准备掷出两个骰子,每个骰子都有六个面.如果掷出的总数为2.3或12,则该射手失败.如果总数是7或11,则对手(他)胜出.如果是其他任何得分,那么此得分将变成新 ...
- java骰子_Java实现的简单掷骰子游戏示例
本文实例讲述了Java实现的简单掷骰子游戏.分享给大家供大家参考,具体如下: 要求: 掷两个骰子,每个骰子有六面, 分别为1.2.3.4.5.6.检查这两个骰子的和. 如果为2.3或12你就输了:如果 ...
- java实现双人摇骰子_Java实现的简单掷骰子游戏示例
本文实例讲述了java实现的简单掷骰子游戏.分享给大家供大家参考,具体如下: 要求: 掷两个骰子,每个骰子有六面, 分别为1.2.3.4.5.6.检查这两个骰子的和. 如果为2.3或12你就输了:如果 ...
- JAVA练习14-十进制数转二进制数、掷骰子游戏
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.题目1-十进制数转二进制数 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 二.题目2-掷骰子游戏 1.题目 ...
- 玩eos上的掷骰子游戏---dice智能合约
dice智能合约的操作步骤,在eos的github上有,这里不再赘述,这里主要讲dice智能合约的实现. dice在中文中是骰子.聪明的你已经猜到了,这可能是一个掷骰子游戏,没错,这就是一个双人掷骰子 ...
- 【程序12】模拟掷骰子游戏
/*[程序12] * 实例:模拟掷骰子游戏 * 由用户输入骰子数量和参赛人数,然后由计算机随机生成每一粒骰子的数量, * 再累加起来就得到每一个选手的总点数. */ import java.util. ...
- 游戏开发UI界面设计需要注意什么?
棋牌游戏能否在市场中得到玩家的欢迎主要取决于棋牌游戏产品的玩法,界面风格,以及运行环境.特别是在棋牌游戏开发完成运营初期,UI界面更是棋牌平台是否能吸引更多玩家的关键因素之一. 因此,棋牌游戏开发UI ...
- python -小游戏-掷骰子游戏
写的比较简单 # 掷骰子游戏 import randomprint('*' * 40) print(' 欢迎进入皇家游戏厂!') print('*' * 40) gameMoney = 0 name ...
最新文章
- CoreText入坑一
- 浅谈零样本网络表示学习
- 改造消费方解决地址硬编码问题
- 微博 用户画像_“肖战”被抵制?Python爬虫揭秘肖战粉丝的人群画像
- IntelliJ IDEA代码分屏显示
- WPF 使用NotifyIcon控件
- Java连载3-编译与运行阶段详解JRE,JDK,JVM关系
- Java程序员如何高效学习,才能加快成为架构师的步伐
- w10连接远程计算机控制,win10远程电脑怎么设置_win10通过远程桌面控制其他电脑的方法...
- Office2010安装出错(Error1406)
- Ruby语言的特别之处
- U盘文件夹病毒,.exe病毒删除方法
- 简单的MediaPlayer+SurfaceView实现视频横竖屏播放
- one 主格 复数 宾格_主格和宾格的区别
- 联想拯救者15isk清灰_清灰和升级容易 联想拯救者14拆机解析
- 任意装修、在线DIY定制商城系统,跟紧时代的潮流
- SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名
- Opencv imread读取图片结果一直为空
- ES6箭头函数以及promise/async/await测试案例
- 机房机柜专用UPS不间断电源的使用寿命能够达到多久?
热门文章
- (原创)通用查询实现方案(可用于DDD)[附源码] -- 简介
- 如何用camtasia录制微课视频教程
- 图像处理:模糊图像判断
- COBOL与JCL的区别是什么
- 嵌入式编程技巧(持续更新)
- 华大智造回复首轮问询:多名股东突击入股,自称规模相对较小
- cad2016中选择全图字体怎么操作_没有下载安装CAD软件怎么打印CAD图纸?快看这里...
- 三坐标检测之工件检测选择合适测针
- 计算机专业培养要求,计算机科学与技术专业人才培养目标及毕业要求(2015修订版)...
- 数据库应用——MySQL基础知识和操作数据库