功能介绍

实现王者荣耀轮盘中奖功能

功能

功能:
1、窗口
2、画背景、画选框
3、按键
4、按任意键移动框、转弯移动
5、状态控制自动移动,按键启停
6、移动n次后停止,随机数,随机数转动
7、改变执行速度(慢、快、慢)
8、框最终如果移动到“水晶”上,界面显示中奖信息

界面原型

资源

两张图片

背景图 0.png

选中框 1.png

实现代码

Panel.java

package game.prize;import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JPanel;/** 1、解决刷新字体闪现问题* 2、键盘和鼠标额外方法就无需在主类中展现问题,如只用到keyPressed事件,其它事件无需要*/public class Panel  extends JPanel implements KeyListener,MouseListener {GoPrize gp = new GoPrize();//反复执行public void paint(Graphics g) {this.gp.paint(g);this.repaint();           //重新绘制//System.out.println(System.currentTimeMillis());}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {this.gp.keyPressed(e);}@Overridepublic void keyReleased(KeyEvent e) {}@Overridepublic void mouseClicked(MouseEvent e) {this.gp.mouseClicked(e);}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}
}

GoPrize.java

package game.prize;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;import javax.imageio.ImageIO;
import javax.swing.JFrame;public class GoPrize{//框的起始坐标int x = 352;int y = 90 ;//控制转动标识boolean state = true;     //false暂停,true转动//控制旋转次数int count = 0;//int limit = 40;        //最大执行移动次数,一圈14,30固定值位置就能猜出来了//int limit = new Random().nextInt(50) +1; //[1, 51) 范围1~50的随机值int limit = new Random().nextInt(50) +20;     //[20, 70) 范围1~70的随机值//拐点int kneePointLeft = x - 187;int kneePointRight =  x + 187+187+187;int kneePointTop = y;int kneePointBottom = y +125+125+125; public static void main(String[] args) {GoPrize gp = new GoPrize();gp.paintWindow();}//画界面public void paintWindow() {JFrame f = new JFrame();//frame默认会创建一个JPanel,但不新创建,在repaint重新刷新页面更新内容时写入的字体会发生晃动Panel p = new Panel();f.add(p);f.setTitle( "Game Prize");f.setSize(1120, 630);  //设置窗口大小f.setLocationRelativeTo(null); //居中f.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);  //关闭按钮f.setVisible(true);        //展示界面f.addKeyListener(p);f.addMouseListener(p);}public void keyPressed(KeyEvent e) {if(e.getKeyChar()=='x') {System.exit(0);  //当用户按下x键,直接结束程序}//状态切换state = !state;count = 0;        //重头开始计数}public void mouseClicked(MouseEvent e) {//状态切换state = !state;}//自动执行,进行画背景public void paint(Graphics g) {g.drawImage(read("images/0.png"), 0, 0, null);g.drawImage(read("images/1.png"), x, y, null);g.setFont(new Font("微软雅黑", Font.PLAIN, 20));    //设置字体、常规、大小g.setColor(Color.YELLOW);   //设置颜色g.drawString("52800", 800, 30);     //写文字到界面上if(state) {//移动位置if( x!=kneePointRight && y==kneePointTop ) {x = x +187;}else if( x==kneePointRight && y!=kneePointBottom) {y = y +125;}else if( x!=kneePointLeft && y==kneePointBottom) {x = x -187;}else if( x==kneePointLeft && y!=kneePointTop) {y = y - 125;}}//根据不同区间,改变执行节奏if(count>0 && count<2) {sleep(100);}else if(limit-count<=2) {sleep(500);}else {sleep(30);}count++;  //移动次数+1if(count >= limit) {state = false;    //暂停}//当最后的框在荣耀水晶时,标识中奖if( x==kneePointLeft && y==kneePointTop && state==false) {g.setFont(new Font("微软雅黑", Font.PLAIN, 35));    //设置字体、常规、大小g.setColor(Color.WHITE);    //设置颜色g.drawString("恭喜获得丰厚奖金:荣耀水晶", 380, 360);     //写文字到界面上}}//读取图片public BufferedImage read(String filename) {BufferedImage img = null;try {img = ImageIO.read(new File(filename));} catch (IOException e) {e.printStackTrace();}return img;}//延时public void sleep(int time) {try {Thread.sleep(time);} catch (InterruptedException e) {e.printStackTrace();}}
}

编程小白学逻辑-实现王者荣耀轮盘中奖功能相关推荐

  1. 视频教程-Scratch3.0趣味编程L3X-大型案例《王者荣耀》-其他

    Scratch3.0趣味编程L3X-大型案例<王者荣耀> 职位:教学总监 简介: 工学硕士研究生,精通C/C++.MFC.SQL,熟悉Java, php等编程语言,拥有十多年的软件研发和 ...

  2. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

  3. 王者荣耀各服务器位置,王者荣耀全国排行功能新上线,位置战力系统介绍[多图]...

    王者荣耀全国排行功能新上线.在最近的体验服当中王者荣耀官方又尝试进行了多项改动,在原本的省级和国服最强之间增添了全国排名这一级别的荣耀称号,新添加了根据分路了来判断的位置战力和位置段位系统,同时还改版 ...

  4. 【小程序源码】升级版王者荣耀铭文多功能助手微信小程序源码下载

    这是一个王者铭文小程序 支持每一个英雄的铭文出装推荐查看 支持铭文组合模拟数据 另外还支持游戏重复名生成和空白名生成 比之前分享的一款单一铭文好一点吧 废话不多说,下面就一起来看看小编的测试演示图吧! ...

  5. 小程序源码:升级版王者荣耀铭文多功能助手-多玩法安装简单

    这是一个王者铭文小程序 支持每一个英雄的铭文出装推荐查看 支持铭文组合模拟数据 另外还支持游戏重复名生成和空白名生成 比之前分享的一款单一铭文好一点吧 另外该款小程序还支持多种流量主模式 比如:激励视 ...

  6. 微信小程序:升级版王者荣耀铭文多功能助手小程序源码

    这是一个王者铭文小程序 支持每一个英雄的铭文出装推荐查看 支持铭文组合模拟数据 另外还支持游戏重复名生成和空白名生成 比之前分享的一款单一铭文好一点吧 另外该款小程序还支持多种流量主模式 比如:激励视 ...

  7. 升级版王者荣耀铭文多功能助手微信小程序源码下载-支持多种流量主

    这是一个王者铭文小程序 支持每一个英雄的铭文出装推荐查看 支持铭文组合模拟数据 另外还支持游戏重复名生成和空白名生成 比之前分享的一款单一铭文好一点吧 另外该款小程序还支持多种流量主模式 比如:激励视 ...

  8. 小程序源码:升级版王者荣耀铭文多功能助手微信小程序

    这是一个王者铭文小程序 支持每一个英雄的铭文出装推荐查看 支持铭文组合模拟数据 另外还支持游戏重复名生成和空白名生成 比之前分享的一款单一铭文好一点吧 另外该款小程序还支持多种流量主模式 比如:激励视 ...

  9. 编程小白学python路线图_零基础Python学习路线图,让你少走弯路

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

最新文章

  1. 海生《我不是你的玩偶》关注颇高
  2. 利用存储函数,查询某个员工的年薪
  3. 掌握 Angular2 的服务 (service)
  4. 使用IntelliJ ..达2周,到目前为止一切正常
  5. python中的孤儿进程
  6. 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC
  7. 科技与我:在数字时代成长
  8. autocad 如何摆正显示_如何在 VB 中连接 AutoCAD
  9. antd 上传进度_antd upload 如何控制进度条 官方的例子里都没有设置onprogress 可是有的例子有进度条 有的例子却没有...
  10. 【SpringBoot_ANNOTATIONS】组件注册 03 FilterType
  11. WAP PUSH资料
  12. java调用soap接口_java远程调用soap协议接口
  13. Excel中的透视表和vlookup的用法简单讲解
  14. redis分布式锁实现(以抢红包为例)
  15. 数据驱动故障诊断方法汇总
  16. MapReduce 的基本原理
  17. Qt5 和 OpenCV4 计算机视觉项目:1~5
  18. 一文带你看懂工厂模式
  19. 转:PM产品设计九步法
  20. java 操作word中表格_Java 使用Spire.Cloud.Word给Word文档添加表格

热门文章

  1. 数据链路层划分、数据链路层使用的协议及详细介绍
  2. 曝切尔西3000万清洗奥斯卡 一举动证他定离队
  3. pythoni手机版下载_pythoni2.7$ - 编程语言
  4. python 获取窗口句柄 模拟 点击按钮,Python获取浏览器窗口句柄过程解析
  5. 计算机存储数值为什么使用补码?
  6. java基础---String长度限制透彻解析
  7. JSPXCMS的OpenOffice自动启动
  8. 番外篇:入门EasyX图形库(带你进入不一样的程序窗口,超详解)
  9. xshell_7下载安装以及评估期已过的解决办法
  10. python给图片加上白边,使图片达到所需的纵宽比