
java
文章平均质量分 62
XcantloadX
这个作者很懒,什么都没留下…
展开
-
【Java】方法隐藏 vs 方法重写
在当前作用域中创建一个变量,这个变量与外部作用域中的某个变量重名,导致使用该名称时默认指向当前作用域中的变量,这种现象就称为。A 中的 i 被 B 中的 i 隐藏。局部变量 a 被类变量 a 隐藏。原创 2023-10-09 16:22:02 · 192 阅读 · 0 评论 -
【Java】Scanner.nextLine() 返回空行/不起作用(吸收换行符)
读入下一个 token,即从第一个非空白字符开始,遇到任何一个空白字符就结束。也就是说会跳过所有空白字符,自然就解决了上面的字符。程序复杂时搞不清到底加没加,加在哪了,容易误伤。类来读取数据的时候容易遇到的一个坑是。)的原因是 nextDouble():要输入的内容里不能有空白字符。:不存在忘记吸收空行的问题。莫名其妙地就无法使用了。用于吸收掉多余的空行。:读入下一行字符串。原创 2023-10-08 11:44:22 · 477 阅读 · 0 评论 -
【Java】复制数组的四种方式
介绍了 arr.clone();System.arraycopy(src, srcPos, dest, destPos, len);Arrays.copyOf(arr);Arrays.copyOfRange(arr, from, to); 四种方法的参数和特点,以及者四种方式的比较。原创 2023-09-29 15:53:15 · 5345 阅读 · 1 评论 -
【Java 2D游戏开发】监听键盘输入 / 方向键控制人物
最终效果:我们必须用键盘来控制游戏,所以下面来实现监听键盘按键监听按键十分简单,只需要实现 KeyListener 接口就可以了假设现在已经可以监听到键盘的输入,那怎样让 Player 类中监听按键呢? @Override public void onTick() { if(按下左方向键) 左移; if(按下右方向键) 右移; }解决方法是创建一个类 In...原创 2019-03-23 17:52:06 · 3059 阅读 · 1 评论 -
【Java 2D游戏开发】双缓冲绘图 / 解决闪烁问题
现在分析一下,闪烁是什么造成的观察渲染的几帧图片,发现其中有一帧是全黑的第一帧:第二帧:第三帧:为什么呢?因为渲染速度太慢了,以至于我们能够直接看到渲染的过程每个窗口都有一个Graphics,我们暂且叫它“窗口画布”,直接画贴图在这上面比较费时间:while(渲染未完成){ 窗口画布.DrawImage() -> 操作系统 -> 显卡}在物体比较多时,上面的过...原创 2019-03-23 16:40:56 · 1196 阅读 · 0 评论 -
【Java 2D游戏开发(三)】渲染线程/让Sprite动起来
效果图:针对上次的只有更新窗口时画面才会重画,解决方法很简单:只需要新建一个线程,隔一段时间就通知游戏窗口重画,不停的在窗口上重画,看起来就好像是动态的画面,实质上只是静态的图片隔多久呢?一般的2D游戏的帧数在20-30fps左右什么是帧/FPS:帧(Frame):画在游戏窗口上的一张静态图帧速率(FPS/帧数):静态图片更新速度的快慢(FPS = 1秒 / 1秒内渲染的帧数)...原创 2019-03-10 15:24:02 · 1694 阅读 · 0 评论 -
【Java 2D游戏开发(一)】GUI基础 / 显示出一个窗口
这个系列会用 Java 的swing做一个简单的2d游戏,由于是边学边写的,所以有些地方可能不对,请在评论里指正一下显示窗口游戏里所有的绘制操作都要在窗口的基础上进行,可以用JFrame来新建一个窗口JFrame window = new JFrame();//新建窗口window.setVisible(true);//将窗口设置为可见window.setSize(650, 500);...原创 2019-02-19 20:46:53 · 4239 阅读 · 1 评论 -
【Java 2D游戏开发(二)】GameObject与Sprite/显示出第一个物体
此篇文章最终的效果图:新建类GameObject,所有的游戏物体都继承此类package com.game.engine;import java.awt.Graphics;public class GameObject { protected int x;//坐标x protected int y;//坐标y /** * 渲染此GameObject * @par...原创 2019-02-24 14:59:21 · 2159 阅读 · 0 评论 -
Java 获取外部进程返回值(退出代码)
创建了ffmpeg.exe子进程来执行转码任务,由于通过输出信息没法很好的判断有没有出现错误,所以需要通过返回值来判断返回值就是这个:System.exit(0);或者是c里面的:return 0;通常返回0表示正常,非0表示出现了错误可以通过Process来创建进程,获取返回值ProcessBuilder builder = new ProcessBuilder("ffmpeg...原创 2019-02-16 21:49:10 · 2491 阅读 · 0 评论