问题标签 [tetris]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
996 浏览

opengl - Opengl:如何进行基于时间的俄罗斯方块游戏?

我正在为学校制作一个基本的俄罗斯方块游戏。我不确定如何开发游戏循环,因为这是我第一次制作游戏。

我正在使用opengl进行绘图。我是否制作了一个在重绘场景之前将等待一定时间的主循环?

0 投票
1 回答
342 浏览

javascript - JavaScript:如何在不使用插件的情况下堆叠矩形元素俄罗斯方块样式?

我正在制作日程安排日历。事件是水平块(Google Cal 有垂直块)。而且因为我在一个日期有很多事件,所以我希望这些事件可以堆叠在一起而不浪费任何空间,如下所示: 这就是我要的

我确实找到了插件: http:
//masonry.desandro.com/
http://isotope.metafizzy.co/
http://packery.metafizzy.co/
但我并不热衷于使用 30kb 插件来做到这一点简单的事情。

澄清一下:因为这是一个时间线,所以 div 事件不能向左/向右移动,但必须垂直适应其他 div 事件。

0 投票
3 回答
143 浏览

javascript - 在随机时间变得不确定

我将尝试仅添加相关代码,但以防万一需要的完整页面在这里,并随时在github上查看。

我正在使用画布/javascript及其一部分构建俄罗斯方块游戏

board是 20*10 arrayfallingPiecePos是具有数值xy值的对象数组,即[{y:0,x:4},{y:0,x:5},{y:0,x:6},{y:0,x:7}](线段)或(正方形),使用以下代码[{y:0,x:4},{y:0,x:5},{y:1,x:4},{y:1,x:5}]呈现:board

fallingPiece是一个随机分配的数字 (1-7),用于canvas将作品渲染为正确的颜色。

希望这足够清楚,现在的问题是,只要fallingPiece有一个价值,它在我得到之前就已经拥有

board[ fallingPiecePos[i].y ][ fallingPiecePos[i].x ] = fallingPiece;是上面代码块的最后一行)

我有一个功能nothingIsBelow()可以检查这件作品是否已经到达底部,所以我很难理解为什么会这样。

编辑

在前 3-4 件(除了件碰撞保护之外)工作正常之前,我在这一点上还不够清楚,并且仅在具有先前保持的值时才给我上述错误fallingPiece

编辑

似乎问题是这样的我有一个数组shapes

我有一行代码将形状分配给新作品

似乎当我稍后引用fallingPiecePos并更改值(fallingPiecePos[i].y++;)时,它也会更改shapes

简单来说,下面的代码

会给我1,因为不仅foo而且myArray更新了,所以我怎样才能创建一个变量来保存一个数组(foo)保存的值myArray[0]并且可以在不更新的情况下更新myArray[0]

0 投票
1 回答
3847 浏览

excel - 在vba中制作俄罗斯方块

所以我试图在 excel 上制作俄罗斯方块游戏,而我的“moveleft”功能无法正常工作,当我快速按下左键 2 或 3 次时,它会跳过检查是否存在值为 2(完整单元格)的单元格并通过完整细胞。有什么建议么?

0 投票
1 回答
1632 浏览

algorithm - Tetromino 空间填充:需要检查是否可能

我正在编写一个程序,该程序需要快速检查一个连续的空间区域是否可以被四联体(任何类型,任何方向)填充。我的第一次尝试是简单地检查正方形的数量是否可以被 4 整除。但是,仍然会出现这样的情况:

不可能的空间 1。 不可能的空间2。

如您所见,即使这些区域各有 8 个方格,也无法用四联骨牌平铺。

我已经考虑了一会儿,我不知道如何进行。在我看来,“枢纽”广场,或通向两个以上“隧道”的广场,是实现这一目标的关键。在上面的示例中很容易,因为您可以快速计算每个此类隧道中的空间——第一个示例中的 3、1 和 3,以及第二个示例中的 3、1、1 和 2——并确定不可能继续由于每条隧道都需要连接到中心广场以安装四联牌,这对所有人来说都是不可能的。但是,您可以有更复杂的示例,例如:

3.不可能的空间

......简单的计数技术不起作用。(至少,据我所知。)更不用说更多的开放空间,中心广场的数量很少。另外,我没有任何证据证明中心方块是这里唯一的技巧。据我所知,可能还有很多其他不可能的情况。

某种搜索算法(A*?)是解决这个问题的最佳选择吗?我非常关心数百甚至数千个正方形的性能。该算法需要非常有效,因为它将用于实时平铺(或多或少),并在浏览器中使用。

0 投票
2 回答
222 浏览

java - Java俄罗斯方块旋转错误

我在使用俄罗斯方块时遇到了一些问题。所以首先,我有一个 Shape 类,然后是每个形状类型的 Shape 子类。这是 Shape 子类的样子:

在 Shape 类中,我有一个旋转方法,如下所示:

请注意,我将每个形状的坐标存储在二维数组中。另外,这是我的游戏引擎类:

我的问题如下:当我尝试旋转积木时,第一次效果很好,但如果我第二次尝试旋转它们,它就会完全混乱。

这应该是我的线条形状:

线

这是我的 L 形(黄色):

l

请注意,这不仅仅是一个图形错误,游戏将元素分别视为一个或两个正方形。我一直在寻找我的代码几个小时来查看问题可能是什么,但我没有运气。任何帮助,将不胜感激

0 投票
1 回答
527 浏览

python - Python俄罗斯方块旋转检查

我正在尝试为我在 python 中编码的俄罗斯方块创建一个旋转程序。旋转部分工作正常,但我遇到了块从屏幕上旋转出来或进入其他块的问题。我试图创建的是一个函数,它将在实际旋转块之前进行测试旋转以查看旋转是否有效。

函数在这里被调用:

其中curblock是一个包含 4 个矩形对象和 1 种颜色的列表,columnwidth并且rowheight是定义游戏空间大小的整数,rotatecheck()定义为

blockonscreen是包含 4 个矩形对象和一种颜色的列表列表,rotate()定义为

在其当前状态下,该程序的行为就像rotatecheck()不存在一样。我反复搜索了我的代码,但我找不到任何问题。

0 投票
1 回答
424 浏览

c - C俄罗斯方块,放置块

因此,我正在将俄罗斯方块游戏作为 C 中的一个学校项目进行工作。我在以下情况下遇到了一个小问题。在俄罗斯方块中,当一个人完成水平行时,该行应该被删除,该行上方的所有内容都应该向下移动一个位置。关于我的代码的奇怪之处在于,当我在棋盘的左侧或中心放置一个块时,该块保持不变应该有。但是当我在棋盘的右侧放置一个块时,它会立即被删除。我把我的源代码放在下面,这样你就可以看到我在说什么。

函数 checkfory (int ycheckup,int yp)

主要的:

0 投票
0 回答
910 浏览

java - 改变视图 - 俄罗斯方块游戏 - MVC

我正在尝试使用 MVC 在 JAVA 中制作俄罗斯方块。现在,我写了一切,一切正常。我只剩下一个问题了;改变观点。例如,当我得到 200 分时,视图必须改变。我想在我的游戏板中将正方形更改为圆形。但我不能让它工作。我可以用一些方法来做到这一点,但我想用不同的类来管理它。我有一个 abstractView 类,真正的视图扩展了这个抽象类。如何从 1 切换到 2?这是否发生在控制器中?还是我必须在模型中编写一些代码才能进行更改?

抽象视图

}

视图1

视图2

0 投票
1 回答
513 浏览

java - 我的 JPanel 类没有在我的 JFrame 上绘制一个矩形?

我正在尝试使用 java 制作俄罗斯方块游戏,但是我目前只是想在我的游戏网格上显示一个形状...我查看了我的代码,但找不到任何错误或错误,这意味着这不起作用?

这是我的主要课程,称为俄罗斯方块6。

这是我的类,它使用 JPanels 创建网格。

这是我在其中创建菜单栏的类。

这是我创建俄罗斯方块形状的课程。

这是我试图将矩形绘制到 JPanel 上的类。