Qt版双人俄罗斯方块游戏
转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907
    之前写过《VC版双人俄罗斯方块》,将其在Qt下又重写了一遍,核心的算法还是采用VC下曾经用过的C++源码,直接用的是当时封装好的类,写在一个文件中,所以直接拿来用。不同的仍然是与显示有关的东西需要采用Qt下的显示方式。
以下是Qt版运行截图:
先是按键响应槽的实现代码:
void Tetris::keyPressEvent(QKeyEvent *event)
{if(event->key() == Qt::Key_0)onPause();if(event->key() == Qt::Key_Right)activeBrick->shiftRight(bin);else if(event->key() == Qt::Key_Left)activeBrick->shiftLeft(bin);else if(event->key() == Qt::Key_Up)activeBrick->rotateClockwise(bin);else if(event->key() == Qt::Key_Down)activeBrick->shiftDown(bin);if(event->key() == Qt::Key_6)activeBrick2->shiftRight(bin2);else if(event->key() == Qt::Key_4)activeBrick2->shiftLeft(bin2);else if(event->key() == Qt::Key_8)activeBrick2->rotateClockwise(bin2);else if(event->key() == Qt::Key_5)activeBrick2->shiftDown(bin2);}

之后还有就是绘制槽的实现代码:

void Tetris::paintEvent(QPaintEvent *event)
{QPainter painter(this);unsigned int width,i,j;unsigned int height,width1,height1;unsigned int height2,width2,height3,width3;width=bin->getWidth();  //左边主显示面板宽度与高度的获取height=bin->getHeight();width1=bin1->getWidth();//左边预测面板的宽度与高度的获取height1=bin1->getHeight();width2=bin2->getWidth();//右边主显示面板宽度与高度的获取height2=bin2->getHeight();width3=bin3->getWidth();//右边预测面板的宽度与高度的获取height3=bin3->getHeight();int nSize=20;QRect rect(0,0,860,500);QImage imageBack;imageBack.load(":/images/background.png");QBrush brushBack(imageBack);painter.setBrush(brushBack);painter.drawRect(rect);//右边玩家分数的输出QRect re;//pDC->FillSolidRect(re,RGB(210,255,255));char buf[100];// sprintf(buf,"  %d  ",numLines*10);// pDC->TextOut(330,90,buf);ui->label_scorel->setText(QString::number(numLines*10));ui->label_scorel_2->setText(QString::number(numLines1*10));//左边玩家分数的输出QRect re1;// pDC->FillSolidRect(re1,RGB(230,255,100));// char buf1[100];if(GameModal==2){//  sprintf(buf1,"  %d  ",numLines1*10);//  pDC->TextOut(440,90,buf1);}QRect  rc,rc1,rc2,rc3;QString str[] = {":/images/blue.png",":/images/red.png",":/images/green.png",":/images/blue.png",":/images/ya.png",":/images/yello.png"":/images/green.png",":/images/green.png"};int b,b1,b2;for(i=0;i<height1;i++){for(j=0;j<width1;j++){rc1=QRect(j*nSize+300,i*nSize,nSize,nSize);       //矩形的区域if(image1[i][j]!=0){b=image1[i][j];// qDebug()<<str[b];QImage img;img.load(":/images/red.png");// img.load(str[b]);QBrush brush(img);painter.setBrush(brush);painter.fillRect(rc1,brush);//  painter.setBrush(Qt::green);//  painter.drawRect(rc1);}}}for(i=0;i<height;i++){for(j=0;j<width;j++){rc=QRect(j*nSize+80,i*nSize,nSize,nSize);if(image[i][j]!=0){b=image[i][j];    //左边玩家主面板砖块的位图填充//     qDebug()<<str[b];QImage img;img.load(":/images/red.png");// img.load(str[b]);QBrush brush(img);painter.setBrush(brush);painter.fillRect(rc,brush);}}}/if(GameModal==2){for(i=0;i<height3;i++){for(j=0;j<width3;j++){rc3=QRect(j*nSize+420,i*nSize,nSize,nSize);if(image3[i][j]!=0){b=image3[i][j];//右边玩家预测砖块的位图填充//   qDebug()<<str[b];QImage img;img.load(":/images/green.png");// img.load(str[b]);QBrush brush(img);painter.setBrush(brush);painter.fillRect(rc3,brush);}}}for(i=0;i<height2;i++){for(j=0;j<width2;j++){rc2=QRect(j*nSize+540,i*nSize,nSize,nSize);if(image2[i][j]!=0){b=image2[i][j];//右边玩家主面板砖块的位图填充// qDebug()<<str[b];QImage img;img.load(":/images/green.png");// img.load(str[b]);QBrush brush(img);painter.setBrush(brush);painter.fillRect(rc2,brush);}}}}
}

其他的都和VC下的一样。

转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907

Qt版双人俄罗斯方块游戏相关推荐

  1. Qt做的俄罗斯方块游戏

    最近一直在用Qt折腾一个简单的俄罗斯方块游戏,期间断断续续经过将近一个月的折腾,终于完成啦,挂在这里,供大家评阅,第一次做游戏,肯定会有很多的不足之处,希望大家指正. 其实做这个游戏主要是想学学多层控 ...

  2. python 双人俄罗斯方块游戏(附全部代码,约200行)

    游戏网格列表值为0的地方表示可以移动,为1的地方不能移动,包括旋转.显示阵列初始值为0,移动方块不能移动后,所占区域的值赋值1. self.display_array = [[0 for i in r ...

  3. VC版双人PK版俄罗斯方块

    源代码下载地址:http://download.csdn.net/detail/qq_29187355/9855657 1 题目要求 设计一个双人俄罗斯方块游戏 2 功能需求 (1)   实现双人俄罗 ...

  4. 基于java的俄罗斯方块游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    基于Java的俄罗斯方块游戏的设计与实现 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛 ...

  5. 多人联机的俄罗斯方块游戏(C++),游戏规则模仿任天堂Tetris99,基于qt,kcp,protobuf,qslog。

    目录 Tetris 游戏截图 游戏菜单 1v1对战 9人对局 游戏特性细节介绍 攻击机制 Tetris标准特性 Super Rotation System(超级旋转系统) 7 bag system ( ...

  6. linux qt 俄罗斯方块,使用Qt开发俄罗斯方块游戏

    使用Qt开发俄罗斯方块游戏,可能大家都比较感兴趣吧.那么就快看下面的详细讲解吧! 其实在QtCreator中已经有了俄罗斯方块的例子,大家可以在帮助中搜索Tetrix进行查看.其内容如下: 但是对于初 ...

  7. 俄罗斯方块游戏系统-c语言版

    Dec C++中常用的快捷键: 给代码行加注释:<Ctrl+/ > 删除代码行:<Ctrl+D > 只能删除光标所在的代码行 1.俄罗斯方块游戏开发设计细节: 随机产生下滑方块 ...

  8. 【冷却游戏】 安卓版 俄罗斯方块游戏 官方版

          应用说明: 这是一款非常传统的俄罗斯方块游戏,完全正统,完全纯净,非常小巧,却又不失极高的可玩性,在等车时,在地铁上,拿出手机来两盘吧. 更新日志: v1.0.1更新说明: 1.第一个版本 ...

  9. 500行代码写一个俄罗斯方块游戏

    导读:本文我们要制作一个俄罗斯方块游戏. 01 俄罗斯方块 Tetris 俄罗斯方块游戏是世界上最流行的游戏之一.是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这 ...

最新文章

  1. SLF4J 之logback.xml配置文件实例及其说明
  2. 【Python教程】装饰器的使用及固定模式
  3. ue4场景没阴影_UE4性能调试分析常用方法
  4. Android源码解析--AlertDialog及AlertDialog.Builder
  5. SPList和SPDocumentLibrary 通过代码更新审批状态
  6. php上传图片完成后的截图,php实现粘贴截图并完成上传功能
  7. CF1131 G. Most Dangerous Shark(DP+单调栈优化)
  8. CF446D-DZY Loves Games【高斯消元,矩阵乘法】
  9. python 操作系统学习_操作系统学习
  10. Jackson Annotation Examples
  11. 爬取博主所有文章并保存到本地(.txt版)--python3.6
  12. 微软职位内部推荐-Sr SDE-MOD-Beijing
  13. oracle怎样停止到数据,oracle启动和停止
  14. 基于PHP实现高性能敏感词过滤算法
  15. 基于LQR的车辆LKA算法设计
  16. 模式识别和机器视觉智能方面的论文投稿---国际著名期刊杂志论文投稿
  17. 【教程】如何批量将记事本文件或word文本转换成简体/繁体中文,下面教你方法
  18. matplotlib高级篇——坐标轴设置(坐标轴居中、坐标轴箭头、刻度设置、标识设置)
  19. Python+Appium+夜神模拟器 全流程从环境搭建到实现自动化(APP自动化)
  20. android 自定义view仿通讯录

热门文章

  1. 梦开始的地方----初识C语言(2)
  2. 随 Linux 自由驰骋
  3. 各大公司在github的开源代码
  4. 电商大数据平台运维案例
  5. python怎么写入excel_Python写入Excel
  6. 4.导出UnityPackage(AssetDatabase.ExportPackage(assetPathName ,fileName ,ExportPackageOptions.Recurse )
  7. 海外反欺诈解决方案专家ADVANCE.AI与印度尼西亚第一家替代信用评分提供商SDB达成战略合作
  8. Python制作英文学习词典
  9. 无表单不业务,动态表单让业务系统更高级
  10. Python 3爬虫网易云(十)—— 爬取歌词读入文件存储