Показать сообщение отдельно
Старый 07.12.2009, 17:32   #5
VotapilD
Оператор ЭВМ
 
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

Разобрался... Теперь надеюсь последняя ошибка...
Может быть у меня что-то не так, но шарики по экрану не летают. Появляется только поле и шарик в углу 0,0
program linux;
type Shariki=array[1..16]of real;
//основные
var i,j,a,b,c,x,y,d,key,i1,j1:integer;
//для шарикоф
var xc, yc, dx, dy: Shariki;
//Level
var lev,fl,sh:integer;
txt,keyt:string;
//Int To Sring
function inttostr(inttostr:integer):string;
begin
end;
function round(x:real):integer;
begin
end;
//Рисует поле
Procedure drawPole;
begin
		SetColor(255, 255, 255);
		FillRect(0, 0, GetWidth, GetHeight);
		SetColor(0, 0, 0);	
		FillRect(0, 0, round(xc[1]), 4);
		for j:=0 to b do begin
			drawText('-',j*10,0);
			drawText('-',j*10,GetHeight-10);
		end;
		for j:=0 to a do begin
			drawText('|',5,j*10);
			drawText('|',GetWidth-5,j*10);
		end;
		//Заполнение экрана чем-нибудь
			for i:=1 to a-10 do begin
					for j:=1 to b-1 do begin
					drawText(txt,j*10,i*10);
					txt:=txt+'.'
					end;
			end;	
end;


//Проработка и нарисовка шариков
Procedure drawCircus(sh:integer);
Var i1,j1:integer;
Var dre:real;
begin
For i1:=1 to sh do begin
		for j1:=1 to sh do begin
				dre:=sqrt(sqr(round(xc[j1])-round(xc[i1]))+sqr(round(yc[j1])-round(yc[i1])));
			   if (dre<10.0)and(dre>0) then begin
				  dy[i1]:=(dy[i1])-(yc[J1]-yc[i1])/10*(10-dre);
				  dx[i1]:=(dx[i1])-(xc[J1]-xc[i1])/10*(10-dre);
				  dy[j1]:=(dy[j1])-(yc[i1]-yc[j1])/10*(10-dre);
				  dx[j1]:=(dx[j1])-(xc[j1]-xc[j1])/10*(10-dre);
			   end;
			end;
		if ((xc[i1] <= 10) OR (xc[i1] >= GetWidth - 20)) then dx[i1]:=-dx[i1];
		if ((yc[i1] <= 8) OR (yc[i1] >= GetHeight - 20)) then dy[i1]:=-dy[i1];
		if (xc[i1] < 10) then xc[i1] := 10 ;
		if (yc[i1] < 8)  then yc[i1] := 8 ;
		if xc[i1] > GetWidth - 20 then xc[i1] := GetWidth - 20 ;
		if yc[i1] > GetHeight - 15 then yc[i1] := GetHeight - 15;

	  xc[i1]:=xc[i1]+dx[i1]+0.05;
  	yc[i1]:=yc[i1]+dy[i1]+0.05;
		DrawEllipse(round(xc[i1]), round(yc[i1]), d, d);
	end;
end;

begin
		a:=GetHeight div 10;
		b:=GetWidth div 10;
		d:=10;
		x:=20;
		y:=30;
		xc[1]:=60;
		yc[1]:=60;
		dx[1]:=5;
		dy[1]:=5;
		xc[2]:=70;
		yc[2]:=66;
		dx[2]:=5;
		dy[2]:=5;
		xc[3]:=60;
		yc[3]:=46;
		dx[3]:=5;
		dy[3]:=5;
		xc[4]:=60;
		yc[4]:=43;
		dx[4]:=5;
		dy[4]:=5;
		dx[5]:=5;
		dy[5]:=5;
		dx[6]:=5;
		dy[6]:=5;
		sh:=6;
		  while KeyToAction(GetKeyClicked) <> GA_FIRE do begin
		//Прорисовка поля
			drawPole;
		//Шарики	
			drawCircus(sh);
			repaint;
			end;
		
end.
Спасиб за ответы, начинаю ещё лучше разбираться...



PS.Я из принципов без картинок...
(Offline)
 
Ответить с цитированием