资源简介
一个基于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
相关资源
- flash cs5 与as3制作的仿雷电小游戏
- opencv+qt通过CGI读取网络摄像头工程
- 类《站桩英雄》微信小游戏源码
- qt贪吃蛇源代码
- Qt Creator中的3D绘图及动画教程(参照
- Qt实现的迷宫游戏_源码生成+寻路
- QT聊天室类似飞秋
- 本科毕业论文 基于QT的嵌入式终端应
- AutoCAD绘图交换文件DXF实体对象说明
- Qt学习之路2带目标可注释版pdf
- zw_Qt通过串口读单片机温度数据画动态
- Qt点餐管理系统
- Qt自定义按钮
- 《我要猫咪》微信小游戏相关工具
- 传智播客Qt5教程2016
- QT5.7串口助手VS2015下开发
- 基于QT股票交易系统毕业设计论文
- ssd4 ex4 ssd4 ex4 人机界面 QT QT版本的作
- 用VC和opengl开发的模仿cs的小游戏
- Qt做的超炫日历
- Qt5串口通信
- MT2503或FreeRTOS上移植MQTT协议
- 网上的一款QT界面设计的电子地图
- qt+opencv视频图像采集与基于tcp协议的
- qt_assistant中文版
- Qt下 用OpenGL 实现的模拟太阳系
- QTreeWidget,项可拖动、可编辑,创建、
-
Qt读写xm
l文件,QTreeWidget显示xm l和 -
QTreeWidget,读写xm
l功能、可拖动、编 - qT围棋源码
评论
共有 条评论