Beispiel #1
0
   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);
   }
Beispiel #2
0
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;
    }

}
Beispiel #3
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);
	}
}