为了大学课程,我正在和一个朋友做一个游戏。一般的想法是,我们有一些平台从右向左移动,每次一个平台离开屏幕时,它都会在右侧随机的x
和y
位置生成(在一定范围内)。会有一个小精灵从一个平台跳到另一个平台。
我们遇到了一个不确定如何解决的问题。我们有所有正确的代码和一切,但平台就是不动。它们应该以每帧-4
像素的恒定速度向左移动(rectVel没错
)。
然而,我们无法让它们移动;它们在屏幕上的位置是静态的,每个人最初被呼叫的位置。
这是我能做的最简洁的代码:
Platforms [] mainPlats;
void setup() {
size(750, 400);
mainPlats = new Platforms[3];
}
void draw() {
level();
}
void level() {
//This is the code for the first platform
mainPlats[0] = new Platforms(200, 200, 100, 15); //These values need to be set inside the class so that
//they aren't constantly overwriting the movement variables in the class
mainPlats[0].displayPlat();
mainPlats[0].platTransition();
//This is the code for the second platform
mainPlats[1] = new Platforms(420, 300, 100, 15);
mainPlats[1].displayPlat();
mainPlats[1].platTransition();
//This is the code for the third platform
mainPlats[2] = new Platforms(570, 350, 100, 15);
mainPlats[2].displayPlat();
mainPlats[2].platTransition();
}
class Platforms {
PImage platform;
int rectX, rectY, rectWidth, rectHeight;
int rectVelocity = 4;
Platforms(int x, int y, int w, int h) {
rectX = x;
rectY = y;
// rectX = (int(random(600, 800))); //Tried to randomise start position, failed hilariously
//rectY = (int(random(150, 350)));
rectWidth = w;
rectHeight = h;
}
void displayPlat() {
platform = loadImage ("images/tiles.png");
//imageMode(CENTER);
image(platform, rectX, rectY, 100, 15); //rectangle platforms replaced with images
}
void platMove() {
rectX -= rectVelocity;
}
void platTransition() {
if (rectX < -200) {
rectX = (int(random(700, 1000)));
rectY = (int(random(150, 350)));
}
}
}
把rectX作为正值(
在draw()函数中,调用level()函数,该函数在每个帧初始化Platform数组。
这意味着您可以在每帧的起始位置创建新平台。你永远看不到平台在移动,因为一旦你移动它们,你就会在起始位置用新的平台替换它们。
第一步是将它们的初始化从level()函数中移出,只在草图的开头调用它们一次,setup()函数就是一个可以放置它们的地方。
你的另一个问题是,你从来没有真正调用platMove()函数。第二步是确保调用该函数。
解决方案可能看起来像这样:
Platforms [] mainPlats;
void setup() {
size(750, 400);
mainPlats = new Platforms[3];
mainPlats[0] = new Platforms(200, 200, 100, 15);
mainPlats[1] = new Platforms(420, 300, 100, 15);
mainPlats[2] = new Platforms(570, 350, 100, 15);
}
void draw() {
level();
}
void level() {
mainPlats[0].displayPlat();
mainPlats[0].platMove();
mainPlats[0].platTransition();
mainPlats[1].displayPlat();
mainPlats[1].platMove();
mainPlats[1].platTransition();
mainPlats[2].displayPlat();
mainPlats[2].platMove();
mainPlats[2].platTransition();
}
还要注意的是,你也不应该每一帧都加载图像。你应该在启动时只加载一次。您可能还希望使用for循环在平台上迭代,而不是引用每个索引。但这些并不会真正影响你的问题。
我有一个MVC4网站,我正在尝试集成一些Mongodb功能(现在只是试验)。我正在使用这个mongodb项目,因为我也在尝试部署到Azure,这个项目提供了连接到mongodb工作者角色的连接实用程序。我有一个具有以下构造函数的MovieController: 这进而调用该类: 当试图从电影控制器加载任何页面时,我在Chrome调试器中得到一个内部服务器错误。 所以我尝试在视觉工作室调试。控制器构
有没有人愿意帮助我在使用android studio的kotlin multi-platform mobile(KMM)和javafx(gluon)进行iOS/android应用程序开发之间做出决定。 -运行时性能(启动时间、代码大小、功耗等)-KMM的学习曲线(我不知道Kotlin,但如果KMM的开发环境只是在windows上两个目标平台,我就学会了。[gluon中的android开发需要lin
要使你的 Dart 类实例像函数一样可以被调用,实现 call() 方法。 在下面的例子中,WannabeFunction 类定义了一个 call() 函数,它接受三个字符串参数并且连接它们,使用一个空格分隔每个字符串,最后附加一个感叹号。 class WannabeFunction { call(String a, String b, String c) => '$a $b $c!'; }
不确定原因,但我检查它是否至少被识别为已删除,但它没有: $科尔多瓦平台 安装的平台: android
MOAC的基础链节点是基于 以太坊 项目开发的,具有类似的借口环境。 在MOAC基础链上开发分布式应用(DAPP) 1. 在MOAC基础链上部署Solidity编写的智能合约,确保有能够接入MOAC链的节点, 可以使用主网公共节点(http://gateway.moac.io/mainnet)或者测试网公共节点(http://gateway.moac.io/testnet)。 Remix, a b
我试图使用Realm移动平台(Swift 3)制作一个具有实时协作的iOS应用程序,但由于缺乏文档和示例而陷入困境。目前我已经通过领域对象服务器进行了用户身份验证。我可以在服务器和所有用户之间同步数据。现在我希望两个用户在一个会话中连接,然后像在他们的绘图演示中一样在他们之间同步数据(观看https://realm.io视频)