// 绘制棋盘 void Board::paintEvent(QPaintEvent *) { DrawBackground(); // 绘制背景颜色 int r = height() / 20; _r = r; _off = QPoint(r + 1, r + 1); QPainter p(this); p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); p.save(); drawPlate(p); p.restore(); p.save(); drawPlace(p); p.restore(); p.save(); drawInitPosition(p); p.restore(); p.save(); drawStone(p); p.restore(); }
void drawWorld(void) { mvstack.push(model_view); drawDesert(); model_view = mvstack.pop(); mvstack.push(model_view); model_view *= Translate (0, 6 , -30); model_view *= RotateY(180); drawBench(); model_view = mvstack.pop(); mvstack.push(model_view); model_view *= Translate (25, 4, -30); drawTree(); model_view = mvstack.pop(); mvstack.push(model_view); model_view *= Scale(.9, .9, .9); model_view *= Translate (-25, 4, -30); drawTree(); model_view = mvstack.pop(); mvstack.push(model_view); model_view *= Scale(1, 2, 1); model_view *= Translate (25, 4, 30); drawTree(); model_view = mvstack.pop(); //house mvstack.push(model_view); model_view *= Translate(-40, 10, 0); model_view *= RotateY(90); drawHouse(); model_view = mvstack.pop(); //moon mvstack.push(model_view); set_colour(.9, .9, .8); model_view *= Translate (-70, 75, 200); model_view *= Scale(30, 30, 30); drawSphere(); model_view = mvstack.pop(); mvstack.push(model_view); model_view *= Translate(160,100, 0); model_view *= Scale (150, 200, 250); drawStone(); model_view = mvstack.pop(); mvstack.push(model_view); model_view *= Translate(-160,100, 0); model_view *= Scale (150, 200, 250); drawStone(); model_view = mvstack.pop(); if (TIME >= 7 && TIME < 8) { mvstack.push(model_view); model_view *= Translate (0, 10, -20); model_view *= Scale(1.2, 1.6, 1.2); model_view *= Translate (0, 66.5- TIME*9.5, -35 + TIME*5); model_view *= RotateX((180*7)-TIME*180); drawBanana1(); model_view = mvstack.pop(); } else if (TIME >= 8) { mvstack.push(model_view); model_view *= Translate (0, 0.5, -16.8); model_view *= Scale (1.2, 1.6, 1.2); model_view *= RotateX(180); drawBanana1(); model_view = mvstack.pop(); } }
// 绘制棋子 void Board::drawStone(QPainter &p) { for (int i = 0; i < 32; ++i) { drawStone(p, i); } }