一,定义
void Chess::Init()
{
//将背景和线进行初始化
bgFilename.clear();
bgFilename = "../chess/image/22.jpg";
LineWidgh=5;
lineColor=Qt::red;
lineStyle=Qt::SolidLine;
}
void Chess::ChessInit()
{
//初始化棋盘数据
//memset(chessData,0,sizeof(int)*324);
for(int i=1;i<=18;i++)
{
for(int j=1;j<=18;j++)
{
chessData[i][j]=0;
}
}
}
二,大小事件
void Chess::resizeEvent(QResizeEvent *event)
{
gridWidth=event->size().width()/GRID;
gridHeight=event->size().height()/GRID;
startX=gridWidth;
startY=gridHeight;
}
三,画背景
QPainter painter(this);
//画背景
QRect ret;
ret.setTopLeft(QPoint(0,0));
ret.setBottomRight((QPoint(this->width(),this->height())));
QPixmap pix;
pix.load(bgFilename);
painter.drawPixmap(ret,pix);
四,画线
QPen pen1;
pen1.setColor(lineColor);
pen1.setStyle(lineStyle);
pen1.setWidth(LineWidgh);
painter.setPen(pen1);
for(int i=0;i<=18;i++)
{
//x轴
painter.drawLine(startX,(i+1)*startY,19*gridWidth,(i+1)*startY);
//y轴
painter.drawLine((i+1)*startX,startY,(i+1)*gridWidth,19*startY);
}
五,画棋子
//画棋子
for(int i=1;i<=18;i++)
{
for(int j=1;j<=18;j++)
{
if(chessData[i][j]==write)
{
painter.drawPixmap(startX*i,startY*j,gridWidth,gridHeight,QPixmap("../chess/image/write.jpg"));
}
else if(chessData[i][j]==black)
{
painter.drawPixmap(startX*i,startY*j,gridWidth,gridHeight,QPixmap("../chess/image/black.jpg"));
}
else {
continue;
}
}
}
六,鼠标按下事件
void Chess::mousePressEvent(QMouseEvent *event)
{
int x=event->x();
int y=event->y();
if(x>=startX && x<=startY+18*gridWidth)
{
if(y>startY && y<=startY+18*gridHeight)
{
int i=0,j=0;
i=(x-startX)/gridWidth+1;
j=(y-startY)/gridHeight+1;
qDebug()<<i<<" "<<j;
chessData[i][j]=black;
this->update();
Sign(i,j);
}
}
}