打字游戏之主界面实现
目录及源码链接https://blog.csdn.net/coolyuan/article/details/107169180
效果展示:
实现方法:
1.窗口添加背景图
窗口添加背景图实现方法
2.打字游戏标题的自动下落
标题的自动下落其实上也是打字游戏的精髓代码之所在,只要理解了如何实现标题下落,那么数字下落问题也可如法炮制。
实现标题自动下落的本质实际上就是将标题画在一个画布上,然后擦掉标题,修改标题位置后再次重绘,只要反复重绘的速度够快,就形成了标题在自动下落的感觉。
实现方法是新建一个JPanel的子类(为了实现重绘)并且实现runnable接口(等等为了新建一个线程,让标题下落和其他的任务可以并发执行)
/*在一个面板上实现标题自动下落*/
class Title extends JPanel implements Runnable {int width = 500;int height = 250;int N = 4;int[] x = new int[N];//存储标题中的每个字的横坐标int[] y = new int[N];//存储标题中的每个字的纵坐标String[] strs = new String[]{"打", "字", "游", "戏"};Title() {setBounds(0, 0, width, height);//设置面板大小setOpaque(false);//透明setplace();//设置标题每个字初始的横纵坐标}void setplace() {for (int i = 0; i < N; i++) {x[i] = (int) (width * 0.15 + i * 0.2 * width);y[i] = 10;}}@Overridepublic void paint(Graphics g) {super.paint(g);g.setColor(Color.RED);//设置画笔颜色为红g.setFont(new Font("方正姚体", Font.PLAIN, 50));//设置画笔字体for (int i = 0; i < N; i++) {g.drawString(strs[i], x[i], y[i]);//在指定位置画出标题的字y[i]++;//标题的字纵坐标下移一像素if (y[i] > height - 50) {//如果到达height-50,则保持在那个位置y[i] = height - 50;}}}@Overridepublic void run() {while (true) {try {Thread.sleep(10);//实现每10毫秒重绘一次} catch (InterruptedException e) {e.printStackTrace();}repaint();//调用重绘函数}}
}
然后再主窗口添加该标题面板,并启动线程
Title title = new Title();//新建一个标题对象this.add(title);//往窗口中加入标题面板Thread t = new Thread(title);//将标题面板加入一个线程t.start();//启动线程,实现标题面板下落
3.鼠标进入按钮范围内自动圈起
本人嫌弃JButton太丑,因此用JLabel代替,圈起的实现只需要给每个JLabel添加鼠标适配器,当鼠标
进入JLabel区域时,重写 mouseEntered方法,给JLabel添加边框,重写mouseExited方法,设置JLabel无边框,如:
exitjb.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {System.exit(0);}public void mouseEntered(MouseEvent e) {exitjb.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.LIGHT_GRAY));}@Overridepublic void mouseExited(MouseEvent e) {exitjb.setBorder(null);}});
ps:被老师问过 MouseAdapter()这块东西是什么,当初以为能new的应该就是个普通的类,结果打脸了。
Ctrl+鼠标左键查看MouseAdapter,
知道了MouseAdapter是个抽象类,实现了MouseListener等接口,因此可以使用MouseAdapter的子类创建的对象做监视器,只需重写需要的接口方法即可。
new MouseAdapter()实际上就是new了一个继承了MouseAdapter抽象类的匿名内部类。
打字游戏之主界面实现相关推荐
- Android疯狂猜歌游戏之---------主界面布局
第一小节链接: http://www.imooc.com/wenda/detail/256551
- 从零开始实现放置游戏(十一)——实现战斗挂机(2)注册登陆和游戏主界面
本章主要实现注册登陆功能和游戏的主界面.有了游戏的界面,大家能有更直观的认识. 本章我们主要开发的是idlewow-game模块,其实就是游戏的客户端展示层.因为是放置游戏,为了方便,主要使用spri ...
- 进入游戏后如何回到计算机界面,网易云我的世界电脑版怎样回到游戏主界面 | 手游网游页游攻略大全...
发布时间:2015-09-06 暖暖环游世界是近期深受广大玩家喜爱的一款冒险生活类游戏,对于喜欢用电脑体验游戏的玩家来说,怎么在PC上玩暖暖环游世界呢,今日就为玩家带来暖暖环游世界电脑版安装教程. 暖 ...
- java窗体添加背景图片_Java项目实战之实战之天天酷跑(四):游戏主界面
接上文,本文将实现游戏主界面,功能如下: 移动的背景图片.动态的玩家.玩家的移动功能.五种障碍物持续出现.玩家和障碍物的碰撞.暂停.继续功能. 首先,看一下整体效果: 动图实在太大,几秒钟的 Gif ...
- Unity游戏开发日记(一):独自开发2d横板游戏:Small man(MainMenu主界面)基本构建
目录 一.独自开发想法 前言: 开发构想: 二.主要内容:MainMenu主界面基本构建 (一)预想功能 (二)功能实现 1.主界面UI设计 2.Option功能设计 3.TypeOption功能设计 ...
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(4)之 游戏主界面 -----怪物系统---赌徒来袭
兄弟们相比等这一章 等的时间比较长了吧!呵呵这几天公司的事情比较忙每天都只有晚上回来写会.所以进度慢了,不过兄弟们放心 我会坚持把这个游戏写完的写成一个可以买的游戏!哈哈 吹下牛了 其实在开发游戏的过 ...
- [Untiy]贪吃蛇大作战(四)——游戏主界面
游戏主界面: 由于这个场景比较复杂,需要分几个部分实现: 1.游戏背景 首先我们的游戏场景上包括了一个大的背景图片,之外再包围一个红色的区域.中间的区域才是可活动的区域,周围通过碰撞检测盒来检测是否有 ...
- 新飞飞不显示服务器,《新飞飞》新手指南:游戏主界面介绍
游戏主界面 1.角色信息窗口(详见图2) 2.地图等各项信息及功能窗口(详见图3) 3.公告广播频道 4.聊天框 5.系统消息及循环公告 6.左侧快捷栏(详见图4) 7.中间快捷栏(详见图5) 8.右 ...
- 从零开始做一个SLG游戏(四):UI系统之主界面搭建
地图部分也已经算是可以告一段落了,也需要仔细考虑下接下来该做哪个系统.地图部分可以算是六边形地图的SLG游戏最主要的一部分,所以先做了下练练手. 接下来的工作更多的需要从项目的全局角度来考虑该怎么做. ...
最新文章
- 意念打字、梦境重现如何成真,张钹、李路明等知名专家共话脑机接口最新进展 | 首届脑科学开放日...
- java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...
- python 2x可以打么_Python打基础一定要吃透这68个内置函数
- Java 多个异常处理
- vue中既可以选择又可以手动输入的文本框类型_在PPT中制作一个胖乎乎的可爱圆环图...
- mysql 单块读 多块读_求指点:STM32F103VC的SDIO读SD卡单块读成功,多块读却不行?...
- SaltStack Runners
- 计算机重置指令,如何利用指令重置Win7网络设置
- 位置式数字PI控制器C语言
- 如何利用Python进行数据分析
- 红月OD反汇编实时显示坐标,背景色可透明也可以不透明
- win10时间线时间轴(Timeline)如何关闭隐藏?
- 解析MySQL ibd文件
- FlashBuilder找不到所需要的AdobeFlashPlayer调试器版本的解
- Hystrix解决雪崩问题
- Windows10系统电脑怎么查看自己电脑虚拟化技术是否开启?
- 抗超大规模DDOS攻击
- ROM制作工具V1.0.0.22版本全新推出
- qml 应用程序图标设置和打包——qml
- 线上支付,出款和收款
热门文章
- 基于面部视频的实时心率检测系统 day four
- Spring Boot实践 | 利用Spring Security快速搞定权限控制
- 各种音视频编解码标准
- 如何在生产环境mysql删除亿万级数据解并且不影响数据库主从延迟的解决方案
- 聊聊如何实施负载均衡
- XMind:超越FreeMind的思维导图软件
- java构造方法中this_Java中this关键字在构造方法中的使用
- win10多任务处理快捷键
- mac php 连接 mssql 2008,php5.3.x连接MSSQLserver2008
- sqlitespy可以打开MySQL吗_SQLite 数据库访问