我正在关注Mozilla网站上的2D突破游戏教程。有一些我不理解的代码。
var brickRowCount = 3;
var brickColumnCount = 5;
var brickWidth = 75;
var brickHeight = 20;
var brickPadding = 10;
var brickOffsetTop = 30;
var brickOffsetLeft = 30;
var bricks = [];
for(c = 0; c < brickColumnCount; c++) {
bricks[c] = []; // <-- here
for(r = 0; r < brickRowCount; r++) {
bricks[c][r] = { x: 0, y: 0 }; // <-- here
}
}
我一般都了解代码的作用,但是,有几行不清楚它们究竟是做什么的。根据该网站,&#34;我们将把所有砖块都放在一个二维阵列中。它将包含砖柱(c),而砖柱(c)又包含砖行(r),每行包含一个包含x和y位置的对象,用于在屏幕上绘制每个砖。&#34;
我在我特别不理解的代码行旁边添加了注释。有人可以确切地澄清这些陈述的含义吗?
谢谢
答案 0 :(得分:3)
它正在创建一个多维数组,或者另一种调用它的方式,一个数组数组。
数组的每个元素都是另一个数组,因此要访问它们,您需要为每个维度使用多个RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
。就像任何其他数组一样,它们需要初始化。
所以这里
[]
它正在为数组bricks[c] = [];
的每个元素初始化一个数组
bricks
这里是将对象存储在数组bricks[c][r] = { x: 0, y: 0 };
中的r
位置(这意味着数组bricks[c]
中位置c
中的元素也是一个数组)< / p>
答案 1 :(得分:2)
一些可能有帮助的评论
simple_form
答案 2 :(得分:1)
animated:YES
是砖块数组中的一个数组。
<%= form_for @company do |f| %>
<%= f.fields_for :partners, Partner.all do |partner| %>
...
<% end %>
<% end %>
包含砖块的坐标。
它正在创建数组块,然后在其中创建一个bricks[c]
数组并使用bricks[c][r]
添加值。
可以这样写,以便您可视化:c
答案 3 :(得分:0)
它表示在数组中的(c,r)
位置,literal object包含两个字段:x
和y
。这两个字段都具有值0
语法{x: 0 ,y: 0}
是创建包含两个字段的对象并同时为这些字段赋值的简写。
答案 4 :(得分:0)
bricks[c] = []
将数组元素编号c
设置为空数组。
E.g。如果你在没有第二部分的情况下运行for循环:
var bricks = [];
for(c = 0; c < brickColumnCount; c++) {
bricks[c] = [];
}
bricks
将为[ [ ], [ ], [ ], [ ], [ ] ]
如果您运行完整代码,bricks
将
[
[ { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 } ],
[ { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 } ],
...
]
答案 5 :(得分:0)
将其视为矩阵,其中c
为列,r
为行,x
为交叉点cr
c\r r0 r1 r2 .. rn
c0 x00 x01 x02 .. x0n
c1 x10 x11 x12 .. x1n
.. .. .. .. .. ..
cn xn0 xn1 xn2 .. xnn
必须初始化数组(即代码中显示的数组),数组(矩阵)的每个单元格都将分配一个值,并且可能(只是我的猜测)该值将通过发生的事件进行更改在比赛期间,或者他们将被检查或两者兼而有之。