资源简介
一个基于Qt5的俄罗斯方块游戏,包括背景图片,背景音乐,方块消除效果,方块图片效果。可以直接运行。

代码片段和文件信息
#include“box.h“
#include
#include
#include
#include
#include“sender.h“
#include
#include
OneBox::OneBox(const QColor &color):brushColor(color)
{
}
QRectF OneBox::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-10-penWidth/2-10-penWidth/220+penWidth20+penWidth);
}
void OneBox::paint(QPainter *painterconst QstyleOptionGraphicsItem *optionQWidget *widget)
{
//为小方块使用贴图
painter->drawPixmap(-10-102020QPixmap(“:/images/box.gif“));
painter->setBrush(brushColor);
QColor penColor = brushColor;
//将颜色的透明度减小
penColor.setAlpha(20);
painter->setPen(penColor);
painter->drawRect(-10-102020);
}
//形状比边框小0.5像素,这样方块组中的小方块才不会发生碰撞
QPainterPath OneBox::shape() const
{
QPainterPath path;
path.addRect(-9.5-9.51919);
return path;
}
BoxGroup::BoxGroup()
{
setFlags(QGraphicsItem::ItemIsFocusable);
//保存变换矩阵,当BoxGroup进行旋转后,可以使用它来进行恢复
oldTransform = transform();
timer = new QTimer(this);
nettimer = new QTimer(this);
connect(timerSIGNAL(timeout())thisSLOT(moveOneStep()));
connect(nettimerSIGNAL(timeout())thisSLOT(netmoveOneStep()));
currentShape=RandomShape;
sender = new Sender;
connect(thisSIGNAL(lansend(QByteArray))senderSLOT(startBroadcasting(QByteArray)));
}
QRectF BoxGroup::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-40-penWidth/2-40-penWidth/2
80+penWidth80+penWidth);
}
void BoxGroup::keyPressEvent(QKeyEvent *event)
{
static qreal angle = 0;
switch(event->key())
{
case Qt::Key_Down:
moveBy(020);
if(isColliding()){
moveBy(0-20);
//将小方块从方块组中移除到场景中
clearBoxGroup();
//需要显示新的方块
emit needNewBox(0);
}
emit lansend(“1“);
qDebug(“down“);
break;
case Qt::Key_Left:
moveBy(-200);
if(isColliding())
moveBy(200);
emit lansend(“2“);
break;
case Qt::Key_Right:
moveBy(200);
if(isColliding())
moveBy(-200);
emit lansend(“3“);
break;
case Qt::Key_Up:
setRotation(angle+90.0);
angle = angle+90.0;
if(isColliding())
{
setRotation(angle-90.0);
angle = angle-90.0;
}
emit lansend(“4“);
break;
//空格实现坠落
case Qt::Key_Space:
moveBy(020);
while(!isColliding()){
moveBy(020);
}
moveBy(0-20);
clearBoxGroup();
emit needNewBox(0);
emit lansend(“5“);
break;
}
}
void BoxGroup::netevent(QByteArray datagram)
{
static qreal angle = 0;
QString ch;
int a;
ch=QString(datagram);
a=ch.toInt();
switch(a)
{
case 1:
moveBy(020);
if(isCol
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-24 22:54 Tetris\
文件 804 2018-07-11 15:22 Tetris\.gitignore
文件 7868 2018-07-24 18:07 Tetris\box.cpp
文件 1544 2018-07-24 18:07 Tetris\box.h
目录 0 2018-07-11 17:23 Tetris\images\
文件 310 2018-07-11 17:25 Tetris\images.qrc
文件 912897 2011-07-17 16:29 Tetris\images\background.png
文件 709509 2011-07-17 13:39 Tetris\images\background01.png
文件 645354 2011-07-17 13:51 Tetris\images\background02.png
文件 1213 2011-07-17 11:41 Tetris\images\box.gif
文件 1116 2011-07-17 11:13 Tetris\images\icon.png
文件 7521 2011-03-17 17:09 Tetris\images\logo.png
文件 284 2018-07-11 22:14 Tetris\main.cpp
文件 1030 2018-07-24 22:28 Tetris\sender.cpp
文件 551 2018-07-24 15:48 Tetris\sender.h
文件 127 2018-07-11 15:34 Tetris\tetris.h.autosave
文件 385 2018-07-23 23:14 Tetris\Tetris.pro
文件 18439 2018-07-24 22:24 Tetris\Tetris.pro.user
文件 21202 2018-07-24 22:54 Tetris\view.cpp
文件 1898 2018-07-24 22:41 Tetris\view.h
相关资源
- 酒店管理系统基于Qt Creator5)
- flash3.0小游戏
- Scrach 欢乐狙击手.sb2
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- c 制作的RPG小游戏
- 电梯模拟程序C/C 算法实现
- Qt 播放音频文件
- 多线程实例:桌面智能弹球小游戏
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- 小鱼捉迷藏Scratch小游戏
- Scrach3.0 跳一跳小游戏
- js 迷宫小游戏源码
- Greenfoot小游戏合辑
- MQTT推送Demo
- Scratch 走迷宫 小游戏源码
- Scratch 青蛙过马路 小游戏源码(.sb2)
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- Scratch 贪吃蛇 小游戏源码
评论
共有 条评论