@BeSnoMo
Выпускник

Как закончить цикл, чтобы игра завершилась graphics.h?

Ребят, я честно пытался найти тег код, но видимо я дурачок. Вопрос такой есть простенькая игра, где падают сверху шарики, на героя, если попадает он должен завершиться, но этого не происходит, почему не имею понятия(

do {

		setactivepage(o);
		cleardevice();
		int am = 40;
		int k = 0, xm = 0, ym = 0;
		int maxx = getmaxx();
		int maxy = getmaxy();
		line(0, 500, maxx, 500);
		keyb_init();
		keyb_redo();
		setcolor(Red);

		for (int i = 0; i < 30; i++)
		{
			if ((met[i][2] == 0) && ((float)rand() / RAND_MAX < 0.01)) { // Цикл задания координат, и вероятности появления шариков
				met[i][2] = 1;
				met[i][0] = rand() % 1000;
				met[i][1] = 0;
			}
		}
		for (int i = 0; i < 30; i++) // цикл отрисовки шариков
		{
			if (met[i][2] == 1) {
				met[i][1] += 3;
				circle(met[i][0], met[i][1], 15);
			}

		}
		for (int i = 0; i < 30; i++)
		{
			if (met[i][1] > 800) 
			{ 
				met[i][1] = 0; 
				met[i][2] = 0; 

			
			}
			
		}
			
			
		// движение героя
			
		if (keyb_isPressed(VK_UP) || p == 3) {
			setcolor(Black);
			line(0, 500, maxx, 500);
			if (x == 1200)
				x = -100;
			else if (x == -100)
				x = 1200;
			
			if (keyb_isPressed(VK_UP)&&(y!=0)) { p = 3;  y = y - dy; }
			else y = y + dy;
			if (y == 800)
				live--;
			if (y == 500 && dy < 0) { dy = -dy; p = 0; }
			if (keyb_isPressed(VK_RIGHT))
			{
				x = x + 5;
				for (int j = 0; j < 52; j++)
					for (int i = 0; i < 68; i++)
						if (A.now[3][i][j] != 11)
							putpixel(x + j, y + 100 - i, A.now[3][i][j]);

			}
			else if (keyb_isPressed(VK_LEFT)) {
				x = x - 5;
				for (int j = 0; j < 52; j++)
					for (int i = 0; i < 68; i++)
						if (A.now[3][i][j] != 11)
							putpixel(x - j, y + 100 - i, A.now[3][i][j]);
			}
			else {
				for (int j = 0; j < 52; j++) for (int i = 0; i < 68; i++)
					if (A.now[3][i][j] != 11)putpixel(x + j, y + 100 - i, A.now[3][i][j]);
			}
		}
		else
			if (keyb_isPressed(VK_RIGHT))
			{
				x = x + 20; p++;
				for (int j = 0; j < 52; j++)
					for (int i = 0; i < 68; i++)
						if (A.now[p][i][j] != 11)
							putpixel(x + j, y + 100 - i, A.now[p][i][j]);
				if (p == 2) p = 0;
				if (x == 1200)
					x = -100;
			}
			else if (keyb_isPressed(VK_LEFT)) {
				x = x - 20; p++;
				for (int j = 0; j < 52; j++)
					for (int i = 0; i < 68; i++)
						if (A.now[p][i][j] != 11)
							putpixel(x - j, y + 100 - i, A.now[p][i][j]);
				if (p == 2) p = 0;
				if (x == -50)
					x = 1200;
			}
			else {
				p = 0;  for (int j = 0; j < 52; j++) for (int i = 0; i < 68; i++)
					if (A.now[p][i][j] != 11)putpixel(x + j, y + 100 - i, A.now[p][i][j]);
			}
		if (keyb_isPressed(VK_UP))
		{
			y = y - 5; p = 3;

		}

				counter(k);


		//

		for (int i = 0; i < maxx / 3; i++)
		{

			{

				x1 = rand() % 1199;
				y2 = rand() % 800;
				c = rand() % 15;
				if (getpixel(x1, y2) != 0)
					putpixel(x1, y2, 0);
				else
					putpixel(x1, y2, Color(c));
				if (getpixel(x1, y2 != 0))
				{
					putpixel(x1, y2, 0);
				}
			}
		}

		for ( int i = 0; i < 30; i++)
		{
			if((x+68==met[i][0])&&(y+52==met[i][1])) // проверка столковения
				live = 0; 

		}
		
		///////////////////////
		setvisualpage(o);
		o++;
		if (o == 2) o = 0;
		
	} while (!keyb_isPressed(VK_ESCAPE)||(live==0));
	
}
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dedalqq
Могу предположить что вы ищите столкновение "пиксель в пиксель" попробуйте расширить зону столкновения заменив "а == х" на "a > x-d && a < x+d" ну и нафигачте принтов что бы посмотреть какие значения есть реально и почему вы не попадаете в свое условие
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы