- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 javafx 编写一个 java 游戏,但我认为这个问题的解决方案并不是 javafx 独有的......
我有一个实体类和一堆它的子类,如导弹、激光等。 但是,当导弹和激光是由游戏中的角色创建时,它们总是会一直运行,直到它们碰到 Canvas 的矩形边界或当它们击中一个角色并消失。
但是,我预计导弹/激光还有许多其他行为:
public abstract class Entity implements Collidable{
private double x;
private double y;
private int z;
private double velocityX;
private double velocityY;
private Image img;
private boolean ally;
protected double width;
protected double height;
public Entity(int x,int y,int z,boolean b,Image hihi)
{
setX(x);
setY(y);
setZ(z);
ally=b;
setVelocityX(0);
setVelocityY(0);
img= hihi;
}
public void move()
{
x+=getVelocityX();
y+=getVelocityY();
}
...
...
}
public class Controller {
private List<BattleShip> bs;
private List<Missile> m;
private Rectangle2D rect;
public Controller()
{
bs= new ArrayList<BattleShip>();
m= new ArrayList<Missile>();
rect= new Rectangle2D(-300, -300, 1300, 1050);
}
public void update()
{
for(int i = bs.size() - 1; i >= 0; i --) {
bs.get(i).move();
if (!rect.contains(bs.get(i).getRect())) {
bs.remove(i);
}
}
for(int i = m.size() - 1; i >= 0; i --) {
m.get(i).move();
if (!rect.contains(m.get(i).getRect())) {
m.remove(i);
}
}
collide();
}
最佳答案
好吧,我不是游戏行业的专家,但这是我的建议:
private volatile boolean isDestroyed = false
; import java.util.ArrayList;
import java.util.Random;
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.stage.Stage;
public class TestApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Group root = new Group();
Scene theScene = new Scene(root);
stage.setScene(theScene);
Canvas canvas = new Canvas(512, 820);
root.getChildren().add(canvas);
GraphicsContext gc = canvas.getGraphicsContext2D();
ArrayList<Lasser> allLassers = new ArrayList<>();
Random randGen = new Random();
for (int i = 0; i < 10; i++) {
// create 10 lessers with different self-destruction time
// on random places
allLassers.add(new Lasser(randGen.nextInt(500) + 10, 800, i * 1000));
}
new AnimationTimer() {
public void handle(long currentNanoTime) {
// Clear the canvas
gc.clearRect(0, 0, 512, 820);
for (Lasser l : allLassers) {
// if the current object is still ok
if (!l.isDestroyed()) {
// draw it
gc.fillRect(l.getxPos(), l.getyPos(), l.getWidth(), l.getHeight());
}
}
// remove all destroyed object
for (int i = allLassers.size() - 1; i >= 0; i--) {
if (allLassers.get(i).isDestroyed()) {
allLassers.remove(i);
}
}
}
}.start();
stage.show();
}
}
import javafx.concurrent.Task;
import javafx.scene.shape.Rectangle;
public class Lasser extends Rectangle {
private volatile boolean isDestroyed = false;
private double xPos;
private double yPos;
public Lasser(double x, double y, long time) {
super(x, y, 5, 20);
this.xPos = x;
this.yPos = y;
startSelfDestruct(time);
}
private void startSelfDestruct(long time) {
Task<Void> task = new Task<Void>() {
@Override
protected Void call() {
try {
Thread.sleep(time);
} catch (InterruptedException e) {
}
return null;
}
};
task.setOnSucceeded(e -> {
isDestroyed = true;
});
new Thread(task).start();
}
public void move(double x, double y) {
this.xPos = x;
this.yPos = y;
}
public boolean isDestroyed() {
return isDestroyed;
}
public double getxPos() {
return xPos;
}
public double getyPos() {
this.yPos -= 1;
return yPos;
}
}
关于java游戏如何构造定时效果/定距效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46760004/
我对开发领域有点陌生,我正在开发一个 Android 项目。我正在尝试使用手机相机闪光灯。我试图让它以重复的 Action 闪烁。下面是我的 .java 文件中的一个剪辑。 public vo
我正在制作一个 ios 应用程序,它是一种诗集。我想要的功能之一是定时“阅读”,因此一首诗中的单词出现的时间与我阅读时的时间相同。所以我有一个数组,里面有诗中的词,还有延迟。 现在我想遍历单词,在屏幕
这个问题在这里已经有了答案: Loop doesn't see value changed by other thread without a print statement (1 个回答) 关闭
我如何才能使用计时器?例如,我想显示某个文本 10 秒,然后我想在剩余时间内显示不同的文本。 谢谢 凯文 最佳答案 延迟操作的最简单方法是使用 NSObject 的 PerformSelector:w
我在这里的措辞上有点困难,但要点是我使用返回一个对象的 Promise.race (如下所示)。大多数时候,至少有一些 promise 会崩溃,但这是故意的。这仅意味着未找到产品。为了避免 Promi
我正在寻找定时 JDialog,它会在指定时间过后消失,并且找到的代码运行正常。 JFrame f = new JFrame(); final JDia
我试图让选择器在不同的时间轮换,我想我会尝试一个简单的 if/else 语句,让第一个选择器在 3 秒后轮换,接下来的选择器在 30 秒后轮换。然而,它只是每三秒旋转一次。如果我想出了如何完成这项工作
这个问题已经有答案了: How to implement a timer in c? (7 个回答) Creating a Timer in C (2 个回答) 已关闭 9 年前。 我需要根据用户输入
我有一个在我文档的 head 标签中调用的 javascript 文件,每隔 30 秒,我希望重新加载这个 javascript 文件。 我对此做了一些研究,似乎它在提取本地存储的文件副本或跨浏览器问
我想看看运行 bash 函数需要多长时间。在做了一些研究之后,我想出了这种使用子 shell 的方法: function test-function() { time ( rs
我正在使用 jQuery,并且我有一个 aAax 请求,如下所示; $.ajax({ type: 'POST', url: 'test.php',
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
我想为系统的每笔交易制定一个程序任务,以预留15分钟的等待时间。如果超过15分钟,程序将改变状态/状态。如果状态在 15 分钟内发生变化,则结束任务。我可以应用更多更好的代码吗?比如Wait/Slee
我正在制作一个打字速度测试程序,它有一个循环需要运行 60 秒然后退出并显示结果。我读过其他关于为 C++ 程序计时的地方,但我的研究没有定论。该程序正在运行 (llbd),我希望有人有解决方案/更好
我试图在一个简单的游戏中每 0.5 - 2 秒随机创建一个障碍。我已经有了创建障碍的功能,但我无法为实例化计时。我试过研究这个,但我还没有想出任何相关的东西。你们能帮帮我吗? 最佳答案 您可以使用 p
我有以下测试,在运行特别长的 fib 断言时不会失败。 未正确失败的测试 #!/usr/env/bin python2.7 import unittest from fib import fib fr
我想知道这是否可行。有没有一种方法可以使用 PHP 每 24 小时更新一次行的值。为什么?我正在创建一个使用在线货币(称为 Yads)的 child 网站。 Row 的值是用户拥有的 Yad 数量。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
有 Cron API 这样的东西吗? 我的意思是,是否有一种编程方式可以在不影响 Cron 的情况下添加/删除 Cron 作业? 最佳答案 UNIX cron 的 API 是文件系统。有一个用于安装/
1、SpringBoot:集成Swagger终极版 学习目标: 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 1.1、Sw
我是一名优秀的程序员,十分优秀!