首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#中绘制形状来克隆俄罗斯方块?

如何在C#中绘制形状来克隆俄罗斯方块?
EN

Stack Overflow用户
提问于 2013-03-09 14:33:59
回答 2查看 2.2K关注 0票数 2

我首先要指出的是,我在这个小项目中没有使用任何XNA或LINQ。基本上,我想用C# windows应用程序来克隆俄罗斯方块。我已经画出了我的网格,我的picturebox大小为250x500,每个正方形块大小为25 x 25像素。

现在,我是一个画形状的业余爱好者。我可以在网格上绘制线条和矩形,圆,椭圆和多边形,我可以用颜色填充它们,等等,就是这样。我不能对绘画做太多其他的事情。基本形状换句话说,使用我创建的点来绘制多边形,比如俄罗斯方块中的"T“形状。

我的问题是,在制作我的俄罗斯方块形状时,我是应该使用C#中的绘制方法来绘制它们,还是应该创建并导入俄罗斯方块形状的位图图片,然后使用这些图片来创建我的俄罗斯方块克隆?

一旦我知道如何画出形状,剩下的我就可以自己弄明白了。另外,在游戏网格上工作时,我是否继承了名为GameGrid的类的Picturebox属性?

EN

回答 2

Stack Overflow用户

发布于 2013-03-09 14:39:06

最好使用位图和预渲染图像,因为它加快了每一帧的渲染速度。这就是大多数这样的游戏所做的。

票数 0
EN

Stack Overflow用户

发布于 2013-03-11 14:48:48

渲染形状的方式将对碰撞检测产生影响。例如,如果您使用T形状的位图,则必须有一种方法来检测T何时发生了冲突(可能是通过逐像素冲突或单独的结构来维护特定形状)。然而,如果您只维护正在使用的块的列表,则碰撞检测将变得简单得多。

如果你有一个方块矩阵的形状,就像最初的游戏一样,你可能会发现渲染,处理和碰撞要容易得多。

例如,看一下下面的伪代码:

代码语言:javascript
运行
复制
class Shape
{
    bool [3][3] Blocks;

    Pos pos;
}

Shape T = new Shape();

T.Blocks[0][0] = true;
T.Blocks[0][1] = true;
T.Blocks[0][2] = true;

T.Blocks[1][0] = false;
T.Blocks[1][1] = true;
T.Blocks[1][2] = false;

T.Blocks[2][0] = false;
T.Blocks[2][1] = true;
T.Blocks[2][2] = false;

渲染时,可以按照以下方式执行某些操作:

代码语言:javascript
运行
复制
foreach(Shape s in currentBlocks)
{
    for(int x = 0; i < 3)
    {
        for(int y = 0; y < 3; y++)
        {
            if(s.Blocks[x][y])
            {
                gameGrid.Render(s.Pos.X + x, s.Pos.Y + y);
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15308014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档