void score(int i,int l,int shots) { int n; for(n=0;n<3;n++) {sound(200); cleardevice(); delay(250); nosound(); settextstyle(4,0,8); setcolor(6); outtextxy(150,150,"Game Over"); setcolor(RED); rect(i); delay(350);} delay(100); getch(); cleardevice(); setbkcolor(RED); gotoxy(34,16); printf("Your Score:: %d",l*1000-::shots*150); gotoxy(33,17); printf("Highest Score:: 20000"); delay(2500); getch(); if(shots>=25)loose(i); else won(i); }
void snake_do(int dir) { if (dir == 0) { pos--; if( (pos%WIDTH)==WIDTH-1) pos += WIDTH; } else if (dir == 1) { pos++; if( (pos%WIDTH)==0) pos -= WIDTH; } else if (dir == 2) { pos-=WIDTH; } else if (dir == 3) { pos+=WIDTH; } if(pos<0) pos += LED_NUM; if(pos>=LED_NUM) pos -= LED_NUM; if(isonsnake(pos)) { loose(); snakesetup(); } for(i=snakelen; i>0; i--) { snake[i] = snake[i-1]; } snake[0] = pos; if(snakeadd >0) { snakeadd--; snakelen++; } if (snakenom <= snakelen) { snakenom++; } if(isonsnake(nompos)) { place_nom(); snakeadd+=2; snakenom=0; } }
void CUI::displayHUD(void) { width = (GLfloat)glutGet(GLUT_WINDOW_WIDTH); height = (GLfloat)glutGet(GLUT_WINDOW_HEIGHT); glEnable(GL_TEXTURE_2D); if (data->drawHUD && data->gameState == PLAYING) { if (data->camera->speed >= 8.0f) glBindTexture(GL_TEXTURE_2D, speed8()); else if (data->camera->speed >= 6.0f) glBindTexture(GL_TEXTURE_2D, speed6()); else if (data->camera->speed >= 4.0f) glBindTexture(GL_TEXTURE_2D, speed4()); else if (data->camera->speed >= 2.0f) glBindTexture(GL_TEXTURE_2D, speed2()); else glBindTexture(GL_TEXTURE_2D, speed0()); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex2f(10, height-10); glTexCoord2f(1, 0); glVertex2f(40, height-10); glTexCoord2f(1, 1); glVertex2f(40, height-110); glTexCoord2f(0, 1); glVertex2f(10, height-110); glEnd(); } if (data->gameState == LOOSE) { glBindTexture(GL_TEXTURE_2D, loose()); glBegin(GL_QUADS); glColor3f(1.0f, 1.0f, 1.0f); glTexCoord2f(1, 1); glVertex2f(0, 0); glTexCoord2f(1, 0); glVertex2f(0, height); glTexCoord2f(0, 0); glVertex2f(width, height); glTexCoord2f(0, 1); glVertex2f(width, 0); glEnd(); } if (data->gameState == WIN) { glBindTexture(GL_TEXTURE_2D, win()); glBegin(GL_QUADS); glColor3f(1.0f, 1.0f, 1.0f); glTexCoord2f(1, 1); glVertex2f(0, 0); glTexCoord2f(1, 0); glVertex2f(0, height); glTexCoord2f(0, 0); glVertex2f(width, height); glTexCoord2f(0, 1); glVertex2f(width, 0); glEnd(); } glDisable(GL_TEXTURE_2D); }
void alpha_bleeding(unsigned char *image, int width, int height) { const size_t N = width * height; std::vector<int8_t> opaque(N); std::vector<bool> loose(N); std::vector<size_t> pending; std::vector<size_t> pendingNext; pending.reserve(N); pendingNext.reserve(N); int offsets[][2] = { {-1, -1}, { 0, -1}, { 1, -1}, {-1, 0}, { 1, 0}, {-1, 1}, { 0, 1}, { 1, 1} }; for (size_t i = 0, j = 3; i < N; i++, j += 4) { if (image[j] == 0) { bool isLoose = true; int x = i % width; int y = i / width; for (int k = 0; k < 8; k++) { int s = offsets[k][0]; int t = offsets[k][1]; if (x + s >= 0 && x + s < width && y + t >= 0 && y + t < height) { size_t index = j + 4 * (s + t * width); if (image[index] != 0) { isLoose = false; break; } } } if (!isLoose) pending.push_back(i); else loose[i] = true; } else { opaque[i] = -1; } } while (pending.size() > 0) { pendingNext.clear(); for (size_t p = 0; p < pending.size(); p++) { size_t i = pending[p] * 4; size_t j = pending[p]; int x = j % width; int y = j / width; int r = 0; int g = 0; int b = 0; int count = 0; for (size_t k = 0; k < 8; k++) { int s = offsets[k][0]; int t = offsets[k][1]; if (x + s >= 0 && x + s < width && y + t >= 0 && y + t < height) { t *= width; if (opaque[j + s + t] & 1) { size_t index = i + 4 * (s + t); r += image[index + 0]; g += image[index + 1]; b += image[index + 2]; count++; } } } if (count > 0) { image[i + 0] = r / count; image[i + 1] = g / count; image[i + 2] = b / count; opaque[j] = 0xFE; for (size_t k = 0; k < 8; k++) { int s = offsets[k][0]; int t = offsets[k][1]; if (x + s >= 0 && x + s < width && y + t >= 0 && y + t < height) { size_t index = j + s + t * width; if (loose[index]) { pendingNext.push_back(index); loose[index] = false; } } } } else { pendingNext.push_back(j); } } if (pendingNext.size() > 0) { for (size_t p = 0; p < pending.size(); p++) opaque[pending[p]] >>= 1; } pending.swap(pendingNext); } }