基于Qt5的俄罗斯方块的开发学习(1)

以此篇博文纪念走过的2014年以及我刚刚起步的编程学习生涯。

首先声明:

这篇关于俄罗斯方块的文章也许不是很好,但是我会尽自己的努力去说清重点。至于细枝末节之处,希望大家下载下来,共同学习。这里只展示核心代码。

首先,提到这个因我学习qt编程而接触到的游戏,自己多少还是有些迷茫。以前只用C语言编出过用户自定义规模的扫雷游戏。相比起来:俄罗斯方块显得还是要复杂一些,以下问题需要注意:

  1. 要有清晰的游戏的逻辑流程(类的设计、以及类之间如何关联);
  2. 要通过qt自带的库函数对游戏的界面进行美化;
  3. 一些小游戏必备的基本常识(例如:计时器的使用、输入设备的控制)。
void TetrixBoard::drawSquare(QPainter &painter, int x, int y, TetrixShape shape)
{

    static const QRgb colorTable[8] = {
        0x000000, 0xCC6666, 0x66CC66, 0x6666CC,
        0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00
    };
    painter.drawPixmap(x + 1, y + 1, squareWidth() - 3, squareHeight() - 3, QPixmap(":/box.gif"));

    QColor color = colorTable[int(shape)];

    //将颜色透明度减小到90
    color.setAlpha(90);

    painter.fillRect(x + 1, y + 1, squareWidth() - 2, squareHeight() - 2,color);

    //上部和左侧是亮色画线,下侧和右侧是暗色画线从而有一定立体感
    painter.setPen(color.light());
    painter.drawLine(x, y + squareHeight() - 1, x, y);
    painter.drawLine(x, y, x + squareWidth() - 1, y);

    painter.setPen(color.dark());
    painter.drawLine(x + 1, y + squareHeight() - 1,
                     x + squareWidth() - 1, y + squareHeight() - 1);
    painter.drawLine(x + squareWidth() - 1, y + squareHeight() - 1,
                     x + squareWidth() - 1, y + 1);
}

下图展示俄罗斯方块这个小游戏的流程 :   

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值