问题标签 [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 投票
2 回答
851 浏览

python - 我的 pygame 俄罗斯方块游戏一直卡住

我是一名初学者 python 程序员,我正在尝试制作俄罗斯方块游戏。当我运行游戏时,方块每秒向下移动 10 个像素。问题是该块随机停止,我的打印语句也停止打印。我没有收到错误,根据任务管理器的说法,内存还可以。我有带有 celeron 处理器的 vista 32 位,但我也在带有 i5 处理器的 windows 7 上尝试过,但问题仍然存在,所以我迷路了。

这是代码:

这是积木类: import pygame from pygame.locals import *

0 投票
0 回答
201 浏览

java - 当没有任何内容为空时,我在 GridWorld 中不断收到 NullPointerException

我正在Gridworld中设计俄罗斯方块游戏。以下是产生错误的方法。它是 Block 类的一个方法,是一个可以调用移动和旋转方法的 Actor 的集合。 myBlocks是 BlockSection 的 ArrayList。

我尝试插入一个打印语句以确保 Location 不为空(它不应该为空,因为所有被检查的 BlockSection 都在网格中)并且它确认该值不为空。但是,错误继续产生。帮助?

谢谢

0 投票
3 回答
1291 浏览

java - 在我的俄罗斯方块游戏(Java swing)中无法停止棋子

我正在用 Java 制作俄罗斯方块游戏,当他们击中另一块已经降落的块时,我很难让当前块停止。我为每个 tetromino 形状都有单独的类。当 currentPiece 下降时,将 Y 坐标最低且 X 值与 currentPiece 相同的形状设置为 currentPiece 的停止点。问题是这块通过与 currentPiece 中心相邻的块,并且对所有可能的形状和旋转进行编码是很乏味的

有没有更好的方法来做到这一点?基本上,我的问题是,如何处理俄罗斯方块的边界?

链接到我的 java 文件: http: //goo.gl/Ms8Mj (请原谅我的混乱)

每个块都由一个值表表示,对于 L 形状,它是:

“中间”块被视为原点。我正在考虑制作一个二维布尔数组来判断一个位置是否被占用。

0 投票
2 回答
181 浏览

python - 获取单个像素的值

我正在制作俄罗斯方块,并试图使线条清晰的功能。我有一种方法可以做到这一点,这有点复杂,我希望简化。

我的想法是检查一些像素 RGB 值,看看它们是否不是黑色(背景颜色)。有没有一种快速的方法来获取屏幕上像素的 RGB 值?

0 投票
1 回答
190 浏览

arrays - 动态对象布局

我有一个由 50 个对象组成的数组,每个对象的宽度和高度都不同。我的目标是创建面板来容纳这些对象并使它们保持有序,但是这个面板不能超过 300 像素的宽度或 600 像素的高度,所以我必须在这个面板中尽可能多地放置对象,如果它们不适合然后我需要创建一个新面板,直到没有更多项目要附加。
因此,例如,如果我有一个尺寸为 150x75 的项目,那么我只能放置另一个相同尺寸的对象,如果下一个项目没有这个尺寸,那么我创建一个空对象来占用这些空白空间。可以在Codepen.io上找到一个示例 现在只要每个项目的高度为 75px 就可以工作,但是当高度超过这个值时就会出现问题。几天来,我一直在尝试解决这个问题,但是这个特殊的任务似乎会抛出整个设计。这是我检查物品是否合适的逻辑:

逻辑有什么问题吗?如果我重新排序这些物品,我现在可以解决它,但它们必须保持有序。完整代码可以在Codepen.io上找到

0 投票
1 回答
470 浏览

c++ - Allegro 4 在俄罗斯方块实现中未检测到按键

我正在使用 Allegro 4 和 C++ 制作一个简单版本的俄罗斯方块。我已经准备好大部分代码,除了用户输入之外一切正常。游戏仅在少数随机情况下检测到按键。我担心这是一个时间问题,但我似乎无法抓住它。这是相关的代码位...

我之前以完全相同的方式实现了俄罗斯方块,但没有任何总体菜单类。只需运行 .exe,您就会遇到俄罗斯方块游戏。那个时候没有这样的问题。因此,Tetris.h 文件之外的代码显然与游戏有关。我使用'keypressed()'的唯一其他地方主要是这样......

任何和所有的帮助来解决这个混乱将不胜感激。谢谢。

0 投票
1 回答
1953 浏览

javascript - 微型 Javascript 俄罗斯方块

我正在尝试编写一个尽可能遵循俄罗斯方块指南的微型版本的俄罗斯方块:

准确地说,我希望用尽可能少的 140 字节 javascript 构建完整的游戏。第一个 140 字节的脚本应该返回一个包含 112 个整数值的数组,这些值代表 4 个旋转位置中的每一个中的 7 个 tetrominos 的 4 行。旋转的确切位置顺序非常重要。

我将数据放在 16 位 unicode 字符中(尽管它们计为 2 个字节)并在 140 多个字节中解包。

有谁知道构造这个数组的巧妙方法?

var s="ༀ∢ð䑄࣠لâьˠцèౄ٠٠٠٠ۀѢlࣄӠѤäӄౠɤÆӈ",m=[];for(i=0;i<28;i++){c=s.charCodeAt(i);for(j=4;j>0;){ m.push(c>>(4*--j)&15)}返回m}

0 投票
2 回答
142 浏览

python - 如何将屏幕的一部分向下移动 x 个像素?

我正在 Pygame 中进行俄罗斯方块重制,每当清除一条线时,我需要将所有块向下移动 31 个像素。如何捕获在线上方的屏幕并将其向下移动 31 个像素?

我已经设法在我想要移动的区域周围制作了一个矩形,但是我完全不知道如何用它复制表面然后将其向下移动并将其放回表面上,请帮忙!

这是我到目前为止的(不成功的)片段:

0 投票
1 回答
766 浏览

java - 带有自定义图像的俄罗斯方块

我正在为俄罗斯方块风格的游戏制定一个带有扭曲的概念。我已经完成了一些基本逻辑的教程,但是按照我们想要这样做的方式,我不确定逻辑是否在我们的时间范围内是可能的。

基本上,我们为俄罗斯方块碎片使用自定义图像。我们为每种可能的旋转提供三种不同的颜色,并为每种可能的旋转提供不同的图像。最重要的是,我们的游戏将尝试将字母配对在一起,以便我们拥有每个可能的旋转和每个可能的字母位置的图像。例如,对于“T”形,我们现在有 92 个图像,每个可能的旋转只有我们想要与我们正在使用的四个字母一起使用的三种颜色中的一种。在过去几天考虑之后,将有数百(甚至可能超过一千)张图像。

然而,这不是问题。我能想到的唯一检查方法是使用 TON(比如超过一千个)IF 语句。例如,如果棋子 1 是一个“T”形,右侧有一个“A”,我们需要检查“B”是否与棋子可能所在的任何其他可能位置相邻。如果棋子上面有“A”的旁边(上面、下面或两边)上面有“B”的一块,很好的匹配被注册。如果在任何时候两个相同的字母彼此相邻,则不匹配的整排棋子将消失,导致其上方的任何棋子掉落。一旦这些棋子再次落地,就需要再次检查每一个棋子,看看它的新位置是否是任何可能的字母对的一部分。

那么,这是需要很长时间的事情(我们只有一个多月),还是除了大量的 IF 语句之外还有其他事情可以做吗?这样的事情甚至可能吗?毕竟,我们谈论的最有可能是 1000 张图像,并且每张图像都需要始终进行检查,如果它:

  1. 已击中另一张图片,需要停止

  2. 检查玩家放置它的位置是否与另一个字母相邻,以及它是否是一个好的字母匹配(这是大问题)

  3. 一旦整块消失,这些块需要再次向下移动并再次进行所有检查。

计划是在 java 中执行此操作,因为它是我唯一能很好理解的语言,但我愿意接受任何和所有建议。如果这是一个失败的原因,请告诉我。如果这是一个失败的事业,我想在我投入大量时间之前提出另一个概念。

编辑:

这是一张快速拼凑在一起的图像,让您了解它的外观:

http://imageshack.us/a/img560/1814/dg80.png

查看这张图片,您会看到棋盘底部已经有 4 个棋子,玩家正在引导直棋子向下。玩家想要将线底部的“A”与“T”形右侧“正方形”中的“A”匹配。一旦棋子落在“T”旁边,代码需要说“哦,嘿,另一个“A”刚刚落在我旁边,所以我是一个很好的匹配,我们都需要消失”。一旦发生这种情况,其他部分将向下移动,并且需要再次进行检查。由于棋子的组合如此之多,并且玩家可以自由支配将棋子放在疯狂的位置,因此检查必须是疯狂的。每件作品都需要与所有其他作品进行核对,以确保永远不会错过有效的组合。

这是一个片段的外观示例:

http://imageshack.us/a/img23/6632/1g3q.png

0 投票
0 回答
249 浏览

grid - 用 1 种 Tetromino 填充网格的最佳方法

我需要用预定义的形状填充变量 X(X 介于 2 和 7 之间)和 Y(Y 低于 30)的网格,在这种情况下是 T Tetromino(具有一行三个块的块,下面添加了一个块中心)。

Tetromino 可以在所有 4 个方向上旋转。

有人可以让我开始吗?