Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

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

Вот собственно код:
dre:=(sqrt(sqr(Xc[j]-Xc[i])+sqr(Yc[j]-Yc[i])));
Dre:Integer;
Пишет ошибкку что с двух сторон ":=" должен быть один тип... Что делать? Перевод всего в реал приносит в подарок кучу ошибок...

Функции округления не работают(Может подключить что-то надо? Ни Floor, ни Ceil)

На всякий случай(вдруг тупая ошибка)-
//Проработка и нарисовка шариков
Procedure drawCircus(sh:integer);
Var i:integer;
Var dre:integer;
begin
For i:=1 to sh do begin
	for j:=1 to 4 do begin
	   dre:=(sqrt(sqr(Xc[j]-Xc[i])+sqr(Yc[j]-Yc[i])));
		   if d<10 then begin
			  dy[i]:=(yc[i])-(yc[J]-yc[i])/10*(10-dre);
			  dx[i]:=(xc[i])-(xc[J]-xc[i])/10*(10-dre);
			  dy[j]:=(yc[j])-(yc[i]-yc[j])/10*(10-dre);
			  dx[j]:=(xc[j])-(xc[j]-xc[j])/10*(10-dre);
		   end;
		end;
	if ((xc[i] < 10) OR (xc[i] > GetWidth - 20)) then dx[i]:=-dx[i];
	if ((yc[i] < 8) OR (yc[i] > GetHeight - 15)) then dy[i]:=-dy[i];
	if (xc[i] < 10) then xc[i] := 10 ;
	if (yc[i] < 8)  then yc[i] := 8 ;
	if xc[i] > GetWidth - 20 then xc[i] := GetWidth - 20 ;
	if yc[i] > GetHeight - 15 then yc[i] := GetHeight - 15;
	if (xc[i]-(d div 2) <= x) and (y<=yc[i]) and (yc[i]<=y+30 )then
	dx[i]:=-dx[i];
	xc[i]:=xc[i]+dx[i];
	yc[i]:=yc[i]+dy[i];
		DrawEllipse(xc[i], yc[i], d, d);

	end;

end;
Тупые Пиксели)
(Offline)
 
Ответить с цитированием
Старый 07.12.2009, 00:44   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

Квадратный корень (sqrt) всегда был и остается вещественной функцией, присваивать его напрямую к integer нельзя, только к real, или к integer, но через round(x:real) .
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
VotapilD (07.12.2009)
Старый 07.12.2009, 16:23   #3
VotapilD
Оператор ЭВМ
 
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

Ок, перевёл всё в реал.
Ошибка в параметре 1(ошибка 2 раза):
dre:=sqrt(sqr(Xc[j]-Xc[i])+sqr(Yc[j]-Yc[i]));
DrawEllipse(xc[i], yc[i], d, d);

Если во втором я понимаю, то в первом-нет(
Насколько я понял, ему не нравится -sqr(Xc[j]-Xc[i])+sqr(Yc[j]-Yc[i]) (чем же это может не нравиццо?=) )
Ps.
Вторую решил добавлением
function round(x:real):integer;
begin
end;
...
DrawEllipse(round(xc[i]), round(yc[i]), d, d);
...
(Offline)
 
Ответить с цитированием
Старый 07.12.2009, 17:07   #4
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

В хэлпе к каждой функции описаны типы входных параметров. Читаем и наслаждаемся.
(Offline)
 
Ответить с цитированием
Старый 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)
 
Ответить с цитированием
Старый 07.12.2009, 18:42   #6
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

function inttostr(inttostr:integer):string;
begin
end;
function round(x:real):integer;
begin
end;
Это прямо так и написано в коде?
Так первая всегда будет давать 0 (точнее, неопределенное значение), а вторая ''.

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

Прям так в коде...
Похоже я чего-то не понимаю. Где-то я такое на форуме видел. А как надо?
(Offline)
 
Ответить с цитированием
Старый 07.12.2009, 22:22   #8
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

Ну так тело функции описать надо, чтобы она выполняла действия и возвращала значение.
Функции round в MP нет, но есть Trunc, правда она не округляет, а обрезает целую часть, но для графики можно использовать.
Для перевода int в String есть встроенная функция function IntegerToString(i:integer):String.
Так что никаких функций для этого самому писать не нужно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
VotapilD (09.12.2009)
Старый 08.12.2009, 12:56   #9
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: Проблема с дробями, типом real и т.д....

trunc(1.5) = 2, прям как round
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
VotapilD (09.12.2009)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильно считает в real Winner BugTracker 0 05.11.2009 01:00
Проблемы с real Winner Основной форум 12 24.10.2009 00:41
real-time изменение image Taugeshtu 2D-программирование 4 29.02.2008 16:44
Real Time 3D Terrain Engines Using C++ And DirectX 9 [Eng] johnk C++ 4 28.11.2007 14:58
Real-ный вопрос triton Основной форум 3 04.10.2007 19:43


Часовой пояс GMT +4, время: 13:26.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com