Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2011, 12:31   #1
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию Биллиардный Шар

“Биллиардный шар”. Нарисуйте «биллиардный стол» – большой прямоугольник. Окружность под углом летает по столу, отскакивая от его краев по закону отражения. Попав “в лузу” (любой из четырех углов стола), останавливается.

Никак не получается, помогите please =)
Kiber3D вне форума Ответить с цитированием
Старый 16.02.2011, 12:35   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Так ты ничего и не делал)
Чему получаться-то ?)
mss вне форума Ответить с цитированием
Старый 16.02.2011, 13:09   #3
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

uses graph,crt;
var device,mode,x_1,x_2,y_1,y_2,x,y:int eger;
label L1;
begin
device:=0; initgraph(device,mode,'f:\tp\bgi');
x_1:=160; x_2:=480; y_1:=50; y_2:=430;
rectangle(x_1,y_1,x_2,y_2); ellipse(x_1,y_1,270,360,20,20); ellipse(x_2,y_1,180,270,20,20);
ellipse(x_1,y_2,0,90,20,20); ellipse(x_2,y_2,90,180,20,20); x:=320; y:=419;
repeat
(тут что-то нужно поставить)
repeat
setcolor(15); circle(x,y,10);
setcolor(0); circle(x,y,10); x:=x+1; y:=y+1;
until (x=x_1) or (x=x_2) or (y=y_1) or (y=y_2); setcolor(15); circle(x,y,10);

(а между этим всем нужно еще поставить уравнения, repeat'ы или еще че-то там) пока сам над этим всем думаю =)

until ((x<181) and (y<71)) or ((x>459) and (y<71)) or ((x>459) and (y>409));
readln; closegraph
end.

Последний раз редактировалось Kiber3D; 16.02.2011 в 13:12.
Kiber3D вне форума Ответить с цитированием
Старый 16.02.2011, 13:13   #4
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Код:
USES Graph, CRT;
VAR x,y, dx,dy,  Device, Mode: Integer;   
BEGIN
	Device:=0;
	InitGraph(Device, Mode, 'c:\tp\bgi');
	Rectangle(35,35,605,445);    	{боpтики стола}
	x:=320;  y:=240;					{Hачинаем движение шаpика из центpа}
	dx:=1;	 dy:=1;						{Hапpавление движения - впpаво вниз}
	repeat
		SetColor(White);  Circle(x,y,10);
		Delay(10);
		SetColor(Black);  Circle(x,y,10);
		x:=x+dx; y:=y+dy;

		if (x<50)OR(x>590) 	then dx:=-dx;	{Удаpившись о ле-вый или пpавый боpт,
			шаpик меняет гоpизонтальную составляющую скоpости на пpотивоположную}
		if (y<50)OR(y>430) 	then dy:=-dy;	{Удаpившись о веpхний или нижний боpт,
			шаpик меняет веpтикальную составляющую скоpости на пpотивоположную}

		if 			(x<80) 	AND	(y<80)  		{Если шаpик в левом веpхнем углу}
			OR  	(x<80) 	AND	(y>400) 		{или в левом нижнем}
			OR  	(x>560)	AND	(y<80)  		{или в пpавом веpхнем}
			OR  	(x>560)	AND	(y>400) 		{или в пpавом ниж-нем,}
		  then											{то пpоpисовывай шаpик и делай паузу:}
			begin SetColor(White); Circle(x,y,10); ReadLn; Halt end;

	until 2>3;
END.
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)
DRAgon™ вне форума Ответить с цитированием
Старый 16.02.2011, 13:27   #5
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

ага, спасибо большое =)
хотелось бы, конечно, чтобы он отлетал не только под углом 90 градусов =) но и под острыми углами, и под тупыми углами =) ну ладно, сойдет, перехожу к следующему заданию в самоучителе =)
Kiber3D вне форума Ответить с цитированием
Старый 16.02.2011, 16:20   #6
Shift_sk
Форумчанин
 
Регистрация: 20.11.2010
Сообщений: 221
По умолчанию

парень если ты учишься по самоучителю то лучше сам делай а не у других проси)больше пользы будет!
www.bezperepl.at.ua
Код:
...
Shift_sk вне форума Ответить с цитированием
Старый 16.02.2011, 18:20   #7
Kiber3D
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 15
По умолчанию

да, спасибо за совет!=)
просто я этим самоучителем год назад занимался, дошел до этих задач, там их штук 5, и все они сложные, а ведь эта, про биллиардный шар, одна из легких, значит до остальных мне как до Китая, раз эту не могу решить =)
вот я все это и забросил =)
спустя год, вот вспоминаю, то что проходил... и опять перед глазами эта задача, я уж не стал над ней особо напрягаться, потому что я ранее много уже всего перепробовал, и ничего не получалось =) спрошу думаю =) пойму, что я упустил, и в самом деле, оказывается, ничего сложного-то и не было, я делал что-то подобное, что и Dragon показал, только я никак не мог додуматься, как сделать так, чтобы шар отскакивал в нужном направлении =)

( if (x<50)OR(x>590) then dx:=-dx; {Удаpившись о ле-вый или пpавый боpт,
шаpик меняет гоpизонтальную составляющую скоpости на пpотивоположную}
if (y<50)OR(y>430) then dy:=-dy; {Удаpившись о веpхний или нижний боpт,
шаpик меняет веpтикальную составляющую скоpости на пpотивоположную} )
Kiber3D вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глупый шар!(((( YooooO!!! Помощь студентам 0 25.01.2011 18:29
биллиардный шар... hasana Паскаль, Turbo Pascal, PascalABC.NET 3 18.05.2010 11:45
Потестите мониторинг шар! vaginoid2 Софт 0 25.12.2009 21:48
Биллиардный шар Shevali Помощь студентам 4 15.04.2009 08:32