c - C中的俄罗斯方 block

标签 c tetris

我有一个大学项目,使用动态分配的板来创建俄罗斯方 block ,该板用 . 表示空白部分。我想用它们的每个部分单独创建 block ,例如

O
O O O 

俄罗斯方 block 中的 block 将在二维动态分配矩阵中描述,如下所示:

tablo[0][((distX/2)-1)] = 'O';
/*tablo stands for board(the 2d allocated matrix) and '(distX/2)-1' was 
  used to start the block from top center of the board */
printf("\n");
for(i=0;i<3;i++)
{
  tablo[1][((distX/2)-1)+i] = 'O';
}

所以我的问题是:

  • 这样有效率吗?

  • 还有另一种方法可以制作方 block 并将它们移动到棋盘内吗 哪个矩阵更简单?

对于我的方 block 解决方案,我很难找到让它们像整体一样掉落的方法,就像画俄罗斯方 block 一样。

另外,我被告知要包括一个硬模式,俄罗斯方 block 从棋盘上的一些 block 或 block 部分开始,这对我的解决方案来说是困难的。

这是我第一次发帖,所以如果您需要有关我的问题的更多信息,请告诉我。感谢您的宝贵时间。

最佳答案

这里是一个用c实现的俄罗斯方 block 游戏的例子

http://www.gladir.com/CODER/TURBOC/tetris.htm

在第一个链接中,形状存储在单独的二维数组中 并添加到代表棋盘游戏的矩阵中。 - 与您的想法相同的原则-。 我认为这种架构可能适合您的需求,因为它有点像让您的 分开的部分,将以 OO 语言表示,具有来自同一父类 Shape 的不同对象 - 例如 -。

这里是另一个类似 c 的俄罗斯方 block 的例子,它看起来比 第一个链接,但它可能会有所帮助。

http://www.c.happycodings.com/Games_and_Graphics/code32.html

关于c - C中的俄罗斯方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23288748/

相关文章:

c - 如何按某种顺序运行 fork 进程?

ios - 将 double 类型的数组元素相乘

c - 如何在C中向下移动二维数组元素

C++ 俄罗斯方 block : A function that deletes lines

Java Tetris - 使用转置来旋转一 block

c - 将非尾递归函数转换为迭代函数时处理其尾部部分

c - 使用引用传递时,如何释放调用函数中分配的内存

c++ - 函数计算对数

c# - 俄罗斯方 block 清晰的线条问题

c# - 俄罗斯方 block 游戏的朴素重力使用 2D 阵列作为运动场