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/article/details/43972499