如何让多个不同单词的数组在游戏屏幕上移动?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让多个不同单词的数组在游戏屏幕上移动?相关的知识,希望对你有一定的参考价值。

所以我正在制作一个Flappy Bird的版本,在这个版本中,小鸟必须抓住某些词汇。为此,我试图让一个数组中的随机单词从右到左在屏幕上滚动。到目前为止,我只有[对象对象]在屏幕上滚动,如附图所示。请注意,我使用的是Canvas(ctx)。

我怎样才能编辑我的代码,使我能让词汇数组在屏幕上滚动,而不是[对象对象]。

以下是我的相关代码。

//Stick

var Stick = function(x, y,) {
    this.x = x;
    this.y = y; 
};

Stick.prototype.draw = function() {
    //??   
};

// random sticks distribution

var sticks = ["test", "boy", "house"];
for (var i = 0; i < 20; i++) {  
    sticks.push(new Stick(i * 161 + 200, Math.floor(Math.random() * (400 - 10 + 1)) + 10));
}

function draw() {


for (var i = 0; i < sticks.length; i++) {
        ctx.fillText(sticks[i], sticks[i].x, sticks[i].y)
        //beaver.checkForStickGrab(sticks[i]);
        sticks[i].x -= 1;
    }


}

我的问题截图

答案

在Stick构造函数中添加一个额外的param,代表你的名字。

使用你的for循环将名字传递给构造函数。

ctx.fillText 我想应该接受名字作为第一个参数,这将是你在黑板上的文字。

//Stick

var Stick = function(x, y, name) {
  this.x = x;
  this.y = y;
  this.name = name;
};

Stick.prototype.draw = function() {
  //??   
};

// random sticks distribution

var stickNames = ["test", "boy", "house"];
var sticks = [];
for (var i = 0; i < 20; i++) {
  sticks.push(new Stick(i * 161 + 200, Math.floor(Math.random() * (400 - 10 + 1)) + 10, stickNames[i]));
}

function draw() {

  for (var i = 0; i < sticks.length; i++) {
    ctx.fillText(sticks[i].name, sticks[i].x, sticks[i].y)
    //beaver.checkForStickGrab(sticks[i]);
    sticks[i].x -= 1;
  }


}

以上是关于如何让多个不同单词的数组在游戏屏幕上移动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Phaser 3 中启用单击数组中的单个项目并将每个项目显示在屏幕的不同部分?

如何让你的小游戏适配不同尺寸的手机屏幕

不同线程之间代码块的序列化

将 jLabel 移动到 jPanel 中的不同位置(类似 Pacman 的游戏)

如何在不重置Java的情况下绘制多个对象

不同的敌人运动