我正在尝试制作我自己的俄罗斯方块游戏版本。到目前为止,我能够展示碎片,旋转它们。但我陷入困境,不确定如何继续。
我有一个
BoardClass
,其中包含网格的静态整数数组board
。使用不同的整数,我显示不同的颜色。Block
类,它具有生成随机块并旋转它们的方法。Graphic
类,根据board
数组和GameLogic
课程,用于开始,暂停游戏。对于目前的作品,我采用了一个4x4阵列,并放在前四行board
一切都很好。但是我该如何开始搬东西呢。如何建立块之间的关系是我被困住的地方。
我的问题
我知道这些可能不是一个很好的问题,但是我被困住了,任何帮助都会受到赞赏。并问我是否要查看任何代码。
答案 0 :(得分:2)
我是在正确的轨道上工作吗?
我想你是。
你测量过吗?大多数游戏以每秒30帧的速率重绘整个场景。首先让它工作,然后再进行优化。如何自动化事物,我的意思是,这些块将如何一个接一个地自动出现。我知道我可以有一个DispatcherTimer并在tick事件中移动块,但绘制和重绘整个网格的速度很慢。我只想重绘游戏网格的一部分。
如果我向左/向右/向下移动我的棋子,整个棋子阵列会移动,这意味着一个4x4的棋子移动,而不仅仅是1x3或2x2的棋子。
你需要在每次移动前检查边界。你可以为每个广场做,你只有16个比较。这不是很困难,也不会很慢。
如何知道这件作品是新作品还是旧作品。我知道我可以采用布尔值,但我认为10x20的布尔数组会很大。
不大。
答案 1 :(得分:1)
如何自动化绘图和重绘整个网格的速度很慢。我只想重绘游戏网格的一部分。
当用户对一行进行评分时,您无论如何都必须重绘整个网格。 (降低在线顶部的数字);
如果我向左/向右/向下移动我的棋子,整个棋子阵列会移动,这意味着一个4x4的棋子移动,而不仅仅是1x3或2x2的棋子。
我认为错误在于当你真正需要1x4块列表时(每个俄罗斯方块图),为每个数字制作一个4x4阵列;你使用4倍的内存和空间!。
如何知道这件作品是新作品还是旧作品。我知道我可以采用布尔值,但我认为10x20的布尔数组会很大。
阵列永远不会太大(如果我们不是在谈论数百万); 你可以采取我的方式:制作一个列表,你可以存储所有" old"游戏的各个部分。并制作一个VARIABLE(一个数字对象),它将指向" new"在板上的数字。在" new"之后数字已经降落 - 你只需将它放在LIST中,你就拥有了#34; old"件。并将VARIABLE指向" new"在你的网格上添加了数字。
希望有所帮助。
您可以查看我的tetris实施示例(使用Java)here
答案 2 :(得分:0)
到目前为止,你所做的一切听起来还不错。至于你的其他问题:
如何自动化事物,我的意思是,块会如何出现 自动一个接一个。我知道我可以有一个DispatcherTimer 并在tick事件中移动块,但绘制并重绘完整 网格很慢。我只想重绘游戏网格的一部分。
如何知道这件作品是新作品还是旧作品。我知道我可以 取一个布尔值,但我认为一个10x20的布尔数组 大。
坦率地说,没有。只需使用一个数组。 10x20 =数组中的200个条目。 AFAIK bools在arra中每个将占用1个字节,这意味着200字节,因此对于过去30年内制造的机器来说这应该不是问题。即使你使用整数,你仍然会使用不到1 kb的内存。
答案 3 :(得分:0)
我是在正确的轨道上工作吗?
如果您希望学习游戏编程而不是在每一个细节上拔出头发,我建议使用像Box2D这样的库来处理世界空间和物体碰撞。
除了Box2D之外,我还建议使用一个游戏框架来处理游戏编程,频率,输入,声音等许多基础知识...... PlayN和LibGDX非常棒。免费框架,为您提供一个快速启动。
使用这些工具,您的重点将更多地放在游戏上,而不是基础知识上。