java游戏开发杂谈 - 界面刷新、坐标系

之前几篇博客里的例子,大家运行过的话,就能看出来,界面是需要刷新的。

JPanel里的绘制方法是paintComponent,界面上的东西都是这个方法画出来的。

JPanel对象有一个repaint方法,从字面意思大家也看的懂,这个是重绘方法。

可以粗浅的这么认为:每调用一次repaint,就会执行一次paintComponent



例如:界面上有一个方块,位置在坐标(20,20)处,

按一下向右的方向键,需要方块往右移动一个像素,变为坐标(21,20)

那么在按键监听方法里,判断按下的如果是向右方向键,就把方块的横坐标加1

然后调用repaint,重新绘制后,方块的位置就右移了一个像素。

注意:虽然只是方块动了,但整个画布都重新绘制,否则方块就是增大,而非右移。



再说一下坐标系,在图形界面开发中,界面的坐标都是以左上角为基准。

左上角就是(0,0),往右是横坐标递增,往下是纵坐标递增。

一个界面的大小是多大,右下角的坐标值就是多少。



想象一个黑板,在上面画一个方块,现在需要把它右移一下,

怎么做呢,先擦掉,在靠右的地方重新画一次,对吧。

这里的擦掉、重绘,对应的就是JPanel的 repaint 方法!

现在,问题来了,如果我们要方块不停的往右,怎么做呢?

当然就是:不停的让方块横坐标加1、再调用重绘。。

可是,如何让程序不停的运行这个逻辑呢?

那就需要用到线程了,且听下回分解吧。。



本来准备写线程的,突然又觉得,前面几篇贴的代码太多了,可能大家看的累,干脆整一篇纯文字的吧。这篇可能有点水了,台哥作为一个老的掉牙的程序员,有时候也分不清,哪里需要细讲,哪里需要粗略。所以,宁多写十句、不少写一句吧。如果大家都看懂了,并非我讲的好,而是因为,大家很聪明!!

欢迎关注:台哥编程课堂,https://www.cnblogs.com/chaohi/

原文地址:https://www.cnblogs.com/chaohi/p/10766687.html

时间: 2024-10-05 12:24:32

java游戏开发杂谈 - 界面刷新、坐标系的相关文章

java游戏开发杂谈 - 有限状态机

在不同的阶段,游戏所运行的逻辑.所显示的界面,都是不同的. 以五子棋举例,游戏开始.游戏中.胜负已分,对应的界面和逻辑都不同. 在游戏中,又分为:自己下棋.对方下棋.游戏暂停.悔棋等多个状态. 再比如RPG游戏的人物,站立.行走.奔跑.攻击.死亡都是不同的动画, 发出一颗子弹,从出现,到往前运动.打到目标,或飞出屏幕,都是不同逻辑. 怎么实现这些效果呢? 程序里设定不同的状态,当前是什么状态,就执行什么逻辑. 这个就叫做:有限状态机! 是不是很简单,不要小瞧它,复杂的游戏功能都是靠它实现的. 接

java web开发登录界面(连接数据库)

这是绘制登录的界面 连接数据库,并将数据库中的用户名和密码对应匹配,显示结果 这个地方需要把sqljdbc42.jar文件放到lib文件夹下,以保证界面的跳转

Java游戏之碰撞检测

在进行Java游戏开发时,我们经常会遇到碰撞检测的问题.如坦克大战中,炮弹与坦克相遇发生爆炸:守卫者游戏中,守卫者发射的箭与怪物相遇使怪物失血:打飞机游戏中,飞机发送的子弹与敌机相遇干掉敌机.这些都需要实现碰撞检测. 我们先来看一类比较简单的碰撞检测:规则图形的碰撞检测. 矩形碰撞检测 作为一个练手的小游戏,游戏中的物体形状一般为矩形区域,这是规则图形.它的碰撞检测可以通过Java API中的Rectangle类来实现碰撞的检测. Rectangle指的是一个矩形区域,它通过指定左上角位置x和y

Swing界面刷新问题(转)

在Java Swing编程中,往往会遇到需要动态刷新界面的时候,例如动态刷新JLabel的文本,JTextField里的文本等等.但是往往却没有达到我们预期的效果,我相信很多朋友都遇到过本文将要说的这个问题. 如下图的Swing界面中,我们期望在点击按钮时,Jlabel和JTextField里的文本能不断的变化,并实时地显示出来. 这个例子中,我们期望点击按钮后,JLabel和JTextField中每隔一秒钟刷新一下文本,顺序的显示以下的几句文本: Button clicked Start to

Java软件开发工程师市场需求大不大

Java编程语言是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的动态语言.为什么Java开发工程师的待遇一直那么高呢? Java行业市场需求存在巨大的缺口 这几年中国在移动互联网这块发展非常迅猛,各种创业公司.小团队如雨后春笋般冒出来,对Java开发的需要变大.但存在人才发展跟不上市场的需求的现状,相对应的给优秀Java人才开出的薪资待遇随之水涨船高,为此很多大学生看中了这一前景,纷纷加入了动力节点Java培训机构,接受专业的培训,与企业零距离对

Java swing五子棋源码及实现之Java 开发图形界面程序五子棋的实现方式

今天给大家介绍一下如何用Java swing实现五子棋的开发即用Java开发图形界面程序五子棋,代码由于太多,只贴部分,最下面会附上下载地址,废话不多说,下面我们先看一下运行结果: 接下来我们看代码: 首先是创建主frame框架界面: package org.liky.game.frame; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import

【Cocos2d-x游戏开发】浅谈游戏中的坐标系

无论是开发2D还是开发3D游戏,首先必须弄清楚坐标系的概念.在Cocos2d-x中,需要了解的有OpenGL坐标系.世界坐标系和节点坐标系.  1.UI坐标系 IOS/Android/Windows SDK中通用的UI坐标系默认起点坐标(x=0,y=0)位于坐上角,x轴从屏幕最左边开始,由左向右逐渐增加:Y轴坐标从屏幕最上方开始,由上至下逐渐增加,如图所示: UI坐标系又被称为纹理坐标系,在Cocos2d-x中,只有从纹理截取部分矩形时才使用这个坐标系,例如Sprite的TextureRect属

实验三 Java猜数字游戏开发

课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         预习程度:             实验时间: 仪器组次:          必修/选修:选修          实验序号:3 实验名称:     Java猜数字游戏开发 (姬梦馨.程涵小组) 一.实验目的与要求: 通过编写Java的应用系统综合实例——猜数字游戏,总结.回顾和实践面向对象的编程思想

java工程开发之图形化界面之(第三课)

上面我们讲述了通过JOptionPane进行文本I/O操作,一个是通过JOptionPane来获取的 参考链接:http://blog.sina.com.cn/s/blog_993d254201013pgh.html#cmt_3339216 JOptionPane类 1.属于javax.swing 包. 2.功能:定制四种不同种类的标准对话框. ConfirmDialog 确认对话框.提出问题,然后由用户自己来确认(按"Yes"或"No"按钮) InputDialo