void drawPuzzle(void) { bool isPlaying = (state == STATE_FREE || state == STATE_PICKED); if (toDrawAll) { arduboy.clear(); drawBoard(0); drawPieces(); toDrawAll = false; } else if (isPlaying && focusPieceIdx >= 0) { drawPiece(focusPieceIdx); } if (state == STATE_FREE) { drawCursor(); } if (state == STATE_CLEAR) { drawClearEffect(); } if (isHelpVisible && isPlaying) { HELP_T idx; if (state == STATE_FREE) { idx = HELP_FREE; } else { idx = (arduboy.buttonPressed(A_BUTTON)) ? HELP_HOLD : HELP_PICK; } drawHelp(idx, helpX, helpY); } }
static int display(Queenscreen *qs) { int polys = 0; glClear(clearbits); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /* setup light attenuation */ glEnable(GL_COLOR_MATERIAL); glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs))); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06); /** setup perspective */ glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE); glRotatef(30.0, 1.0, 0.0, 0.0); gltrackball_rotate (qs->trackball); glRotatef(qs->theta*100, 0.0, 1.0, 0.0); glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE); /* find light positions */ qs->position[0] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*-sin(qs->theta*100*M_PI/180.0); qs->position[2] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*cos(qs->theta*100*M_PI/180.0); qs->position[1] = 6.0; if(!wire) { glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_POSITION, qs->position); glEnable(GL_LIGHT0); } /* draw reflections */ if(!wire) { polys += draw_reflections(qs); glEnable(GL_BLEND); } polys += drawBoard(qs); if(!wire) glDisable(GL_BLEND); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.1); glTranslatef(0.5, 0.0, 0.5); polys += drawPieces(qs); /* rotate camera */ if(!qs->button_down_p) qs->theta += .002; /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */ if(++qs->steps == 1024) { qs->steps = 0; blank(qs); qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1)); qs->colorset = (qs->colorset+1)%COLORSETS; go(qs); } return polys; }
void MainWindow::paintEvent(QPaintEvent *) { QPainter *p = new QPainter(this); // BOARD ISNT DRAWING WTF anyNewKings(); drawBoard(p); drawPieces(p); }
void draw(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(0,25,15, 0,0,0, 0,1,0); glLightfv(GL_LIGHT0,GL_POSITION,lpos); glLoadName(99); drawBoard(); drawGrid(); drawPieces(); glutSwapBuffers(); }
static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire) { if (!cs->wire) { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, cs->piecetexture); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glColor4f(0.5, 0.5, 0.5, 1.0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialShadow); } drawPieces(mi, cs); if(cs->moving) drawMovingPiece(mi, cs, 0); if(cs->take) drawTakePiece(mi, cs, 0); glDisable(GL_TEXTURE_2D); }
/** reflectionboard */ static int draw_reflections(Queenscreen *qs) { int i, j; int polys = 0; glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS, 1, 1); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glColorMask(0,0,0,0); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); glBegin(GL_QUADS); /* only draw white squares */ for(i = 0; i < qs->BOARDSIZE; ++i) { for(j = (qs->BOARDSIZE+i) % 2; j < qs->BOARDSIZE; j += 2) { glVertex3f(i, 0.0, j + 1.0); glVertex3f(i + 1.0, 0.0, j + 1.0); glVertex3f(i + 1.0, 0.0, j); glVertex3f(i, 0.0, j); polys++; } } glEnd(); glEnable(GL_DEPTH_TEST); glColorMask(1, 1, 1, 1); glStencilFunc(GL_EQUAL, 1, 1); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glPushMatrix(); glScalef(1.0, -1.0, 1.0); glTranslatef(0.5, 0.001, 0.5); glLightfv(GL_LIGHT0, GL_POSITION, qs->position); polys += drawPieces(qs); glPopMatrix(); glDisable(GL_STENCIL_TEST); /* replace lights */ glLightfv(GL_LIGHT0, GL_POSITION, qs->position); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glColorMask(1,1,1,1); return polys; }
static int display(Queenscreen *qs) { int max = 1024; int polys = 0; glClear(clearbits); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotatef(current_device_rotation(), 0, 0, 1); /* setup light attenuation */ /* #### apparently this does nothing */ glEnable(GL_COLOR_MATERIAL); glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs))); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06); /** setup perspective */ glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE); glRotatef(30.0, 1.0, 0.0, 0.0); gltrackball_rotate (qs->trackball); glRotatef(qs->theta*100, 0.0, 1.0, 0.0); glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE); /* find light positions */ qs->position[0] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*-sin(qs->theta*100*M_PI/180.0); qs->position[2] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*cos(qs->theta*100*M_PI/180.0); qs->position[1] = 6.0; if(!wire) { glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_POSITION, qs->position); glEnable(GL_LIGHT0); } /* Since the lighting attenuation trick up there doesn't seem to be working, let's drop the old board down and drop the new board in. */ if (qs->steps < (max/8.0)) { GLfloat y = qs->steps / (max/8.0); y = sin (M_PI/2 * y); glTranslatef (0, 10 - (y * 10), 0); } else if (qs->steps > max-(max/8.0)) { GLfloat y = (qs->steps - (max-(max/8.0))) / (GLfloat) (max/8.0); y = 1 - sin (M_PI/2 * (1-y)); glTranslatef (0, -y * 15, 0); } /* draw reflections */ if(!wire) { polys += draw_reflections(qs); glEnable(GL_BLEND); } polys += drawBoard(qs); if(!wire) glDisable(GL_BLEND); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.1); glTranslatef(0.5, 0.0, 0.5); polys += drawPieces(qs); /* rotate camera */ if(!qs->button_down_p) qs->theta += .002; /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */ if(++qs->steps == max) { qs->steps = 0; blank(qs); qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1)); qs->colorset = (qs->colorset+1)%COLORSETS; go(qs); } return polys; }
void PieceWidget::paintEvent(QPaintEvent *) { QPainter p(this); drawPieces(&p); }
void Game::drawEverything() { //Draw the board and then the pieces drawBoard(); drawPieces(); }
void BoardWidget::paintEvent(QPaintEvent *) { QPainter p(this); if (boardPM.isNull()) drawBoard(); p.drawPixmap(0, 0, boardPM); /* draw balls */ if (renderMode) { drawPieces(&p); return; } int i,j; p.setRenderHint(QPainter::Antialiasing); int boardSize = width() *10/12; if (boardSize > height()) boardSize = height(); QMatrix m; QPoint cp = rect().center(); m.translate(cp.x(), cp.y()); m.scale(boardSize/1100.0, boardSize/1000.0); m.rotate(0); p.setMatrix(m); p.setBrush(palette().color(QPalette::WindowText)); for(j=-4;j<5;j++) for(i= ((j>0)?j-4:-4) ; i< ((j<0)?5+j:5) ;i++) { int x=xpos(i,j); int y=ypos(j); int w=field[60+j*11+i]; if (w==Board::color1) drawColor(&p, x,y, 35, redColor ); else if (w==Board::color1bright) drawColor(&p, x,y, 35, redHColor ); else if (w==Board::color2) drawColor(&p, x,y, 35, yellowColor ); else if (w==Board::color2bright) drawColor(&p, x,y, 35, yellowHColor ); } if (color1Count >0) { /* the outer marks of color1 */ if (color1Count <12) { for(i=11; i>8 && i>color1Count ;i--) drawColor(&p, xpos(12-i,7-i)+55, ypos(7-i), 35, redColor ); } for(i=14; i>11 && i>color1Count ;i--) drawColor(&p, xpos(-6,10-i)+55, ypos(10-i), 35, redColor ); /* the outer marks of color2 */ if (color2Count <12) { for(i=11; i>8 && i>color2Count ;i--) drawColor(&p, xpos(i-12,i-7)-55, ypos(i-7), 35, yellowColor); } for(i=14; i>11 && i>color2Count ;i--) drawColor(&p, xpos(6,i-10)-55, ypos(i-10), 35, yellowColor); } }