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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2009, 15:56   #11
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Точно такую же процедуру можно сделать для выигрыша, если в твоей игре поставить условие выигрыша, поменять тока переменные, название функции и цвет.
Gapro вне форума Ответить с цитированием
Старый 26.08.2009, 14:01   #12
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

вот что у меня получилось:

я хотел её улучшить и запутался. можно ли этот файл разбить на несколько и соединиться с ними через основной файл ??? и как это сделать
Вложения
Тип файла: rar ИГРА1.rar (863 байт, 16 просмотров)
alex(21) вне форума Ответить с цитированием
Старый 26.08.2009, 14:41   #13
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
По умолчанию

alex(21), у Вас код совершенно НЕ читабельный, поэтому и путаетесь. пользуйтесь отступами и все будет понятно. ведь всего 2 маленькие процедуры.
Для справки: прочитайте про понятие модуля.

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.

Последний раз редактировалось sheka; 26.08.2009 в 14:45.
sheka вне форума Ответить с цитированием
Старый 26.08.2009, 14:51   #14
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

Цитата:
прочитайте про понятие модуля.
а где это найти?
alex(21) вне форума Ответить с цитированием
Старый 26.08.2009, 15:22   #15
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
Стрелка

хотя бы в википедии.
ссылку специально не дам.
но, как я уже говорил, увеличивайте читабельность - т.к. разбираться в таких программах намного легче:
Код:
program
var
  a:integer;
  b:char;
begin
  if true then
    begin
      a:=2;
      ...
    end;
  case c of
    '1': begin
           ...
         end;
    end;
end.
Не правда ли?

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Старый 26.08.2009, 18:40   #16
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Можно не только с помощью модулей:

Цитата:
Предположим, вы с другом решили создать программу из 7 процедур. Вы делаете 3 процедуры и тело программы, а ваш друг - 4 процедуры. Друг записал все 4 процедуры в файл VSTAVKA.pas на вашем компьютере. Вот он:
PROCEDURE fa ; BEGIN Sound(698); Delay(300); NoSound END;
PROCEDURE sol; BEGIN Sound(784); Delay(300); NoSound END;
PROCEDURE la ; BEGIN Sound(880); Delay(300); NoSound END;
PROCEDURE si ; BEGIN Sound(988); Delay(300); NoSound END;
Конечно, файл вашего друга не является законченной программой и сам по себе не запускается.
А вот ваша программа:
USES CRT;
PROCEDURE doo; BEGIN Sound(523); Delay(300); NoSound END;
PROCEDURE re ; BEGIN Sound(587); Delay(300); NoSound END;
PROCEDURE mi ; BEGIN Sound(659); Delay(300); NoSound END;
BEGIN
doo;re;mi;fa;sol;la;si;la;sol;fa;mi ;re;doo
END.
Теперь вам нужно собрать оба куска в единую программу. Для этого вы можете скопировать текст из файла вашего друга в свой файл (как это делается, расказано в части IV). Но если вы не хотите этого делать, чтобы, скажем, не увеличивать свой файл, вы можете воспользоваться директивой компилятора $I. Директива компилятора - это специальная инструкция, вставленная в текст вашей программы на Паскале и предназначенная для управления компьютером на этапе компиляции вашей программы. Директива компиляции имеет вид {$....} и Паскаль не путает ее с обычным комментарием только из-за наличия значка доллара. Символы, стоящие после значка доллара, и являются управляющей информацией для компилятора. Директива {$I c:\PASC\F25} является приказом компилятору подставить в это место текст, находящийся в файле F25 из каталога PASC диска c. Если файл находится в текущем каталоге, то достаточно указать его имя. Вот ваша готовая к работе программа с директивой:
USES CRT;
PROCEDURE doo; BEGIN Sound(523); Delay(300); NoSound END;
PROCEDURE re ; BEGIN Sound(587); Delay(300); NoSound END;
PROCEDURE mi ; BEGIN Sound(659); Delay(300); NoSound END;

{$I VSTAVKA} {Директива компилятору на вставку текста из файла VSTAVKA}

BEGIN
doo;re;mi;fa;sol;la;si;la;sol;fa;mi ;re;doo
END.





Цитаты из
Диалог-МИФИ_-_Turbo_Pascal_7.0._Самоучитель_для_ начинающих.1999.

Текст понятный, думаю вы сами разберетесь.
Gapro вне форума Ответить с цитированием
Старый 26.08.2009, 18:42   #17
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

А вот и про модули:

Код:
Известно, что в Паскале нет стандартной функции, возводящей число в целую неотрицательную степень. В целую степень, большую двух. Предположим, что вы математик, и вам нужна функция, возводящая число в лю-бую целую неотрицательную степень. Напишем эту функцию:
FUNCTION st(a:Real;  n:Word) :Real;
	VAR	step	:Real;
			i		:Word;
	BEGIN
		step:=1;
		for i:=1 to n do step:=step*a;
		st:=step
	END;
BEGIN
	WriteLn(st(2,3))		{Это 2 в кубе, то есть 8}
END.
Пусть вы часто пишете программы, использующие возведение в степень. Но вам лень в каждую такую про-грамму вставлять описание функции st. Вы можете пойти двумя путями:
•	Описать st и другие часто встречающиеся процедуры и функции в другом файле и использовать директиву $I.
•	Описать st и другие часто встречающиеся процедуры и функции в другом файле и оформить этот файл, как новый модуль.
Второй способ немного сложнее, но намного лучше первого. Вот как будет выглядеть ваш модуль:
UNIT Mathemat; 		{Заголовок модуля с придуманным вами именем}

INTERFACE			{Раздел ИНТЕРФЕЙСА}
FUNCTION st(a:Real; n:Word) :Real;

IMPLEMENTATION	{Раздел РЕАЛИЗАЦИИ}
FUNCTION st;
		VAR	step	:Real;
				i		:Word;
		BEGIN
			step:=1;
			for i:=1 to n do step:=step*a;
			st:=step
		END;

BEGIN					{Раздел ИНИЦИАЛИЗАЦИИ, у нас он пуст}
END.
Вам нужно просто ввести этот текст, как обычную программу, в новое окно текстового редактора и сохра-нить на диске под именем Mathemat.pas, так как имя файла, в котором расположен модуль, должно совпадать с именем модуля. Однако, модуль не является программой и не может быть запущен на выполнение сам по себе. Пользоваться вашим новым модулем вы можете так же, как обычным стандартным. Вот ваша программа, вызы-вающая модуль:
USES Mathemat;
BEGIN
	WriteLn(st(10,6)  :20:4); 		{Это 10 в шестой степени}
	WriteLn(st(5, 3)  :20:4); 		{Это 5 в кубе}
END.
Файл-модуль на первых порах сохраняйте в том же каталоге, что и файл вызывающей его программы.
В разделе интерфейса вы приводите заголовки предназначенных для использования процедур, функций, а также описания типов, переменных и констант, которые вы также не хотите каждый раз описывать в вызывающей программе. В общем, все то, чем могут пользоваться другие программы.
В разделе реализации вы приводите краткие заголовки процедур и функций, полные заголовки которых приведены в разделе интерфейса, и описываете их тела. Если этим процедурам и функциям понадобятся для работы вспомогательные процедуры и функции, типы, константы и переменные, то они тоже описываются в раз-деле реализации.  
Когда вы в первый раз запустите на выполнение программу, вызывающую ваш новый модуль, этот модуль откомпилируется и сохранится на диске под именем Mathemat.tpu. В следующий раз будет использоваться именно он, а не Mathemat.pas (до тех пор, пока вы не измените текст модуля). 
Рассмотрим еше один пример. Предположим, что вы часто пишете графические программы и вам надоело в каждой программе инициализировать графику. К тому же вы недовольны, что стандартный модуль  Graph по-зволяет вам рисовать кружочки и квадратики, но не позволяет рисовать крестики и треугольники. И наконец, вы бы хотели, чтобы в начале работы любой вашей программы экран был бы обведен золотой рамочкой. Вот мо-дуль, решающий эти задачи:
UNIT Mygraph;

INTERFACE							{Раздел ИНТЕРФЕЙСА}
PROCEDURE krest(x_tsentr,  y_tsentr,  razmer:Word);
											{Задаются координаты центра и размер креста}
PROCEDURE treug(x1, y1, x2, y2, x3, y3 :Word);
											{Задаются координаты трех вершин треугольника}

IMPLEMENTATION					{Раздел РЕАЛИЗАЦИИ}
USES Graph;							{Без этого не будет работать процедура Line}
PROCEDURE krest;	BEGIN
		Line(x_tsentr-razmer,  y_tsentr,  x_tsentr+razmer,  y_tsentr);
		Line(x_tsentr,  y_tsentr-razmer,  x_tsentr,  y_tsentr+razmer);
							END;
PROCEDURE treug;	BEGIN
		Line(x1,y1,x2,y2);
		Line(x2,y2,x3,y3);
		Line(x3,y3,x1,y1);
							END;
											{Раздел ИНИЦИАЛИЗАЦИИ}
VAR d,m :Integer;						{Переменные для инициализации графики}
BEGIN									
	d:=0;
	InitGraph(d,m,'<путь к гр.др>');{Инициализация графики}
	SetColor(Yellow); 					{Рисуем рамочку}
	SetLineStyle(0,0,ThickWidth);
	Rectangle(10,10,630,470);
	SetColor(White); 					{Возвращаем нормальный цвет}
	SetLineStyle(0,0,NormWidth) 	{Возвращаем нормальную толщину линии}
END.
Если вы хотите, чтобы при запуске программы, использующей модуль, каждый раз перед выполнением са-мой программы автоматически выполнялись какие-то действия, вы задаете соответствующие операторы в разде-ле инициализации.  Если для этого нужны константы, типы и переменные, они описываются в разделе реализации. 
Вот программа, чертящая крест, треугольник и кружок:
USES Mygraph,Graph;
BEGIN
	treug(500,50,600,300,450,450);
	krest(200,150,80);
	Circle(100,350,40);
	ReadLn;
END.
Цитаты из
Диалог-МИФИ_-_Turbo_Pascal_7.0._Самоучитель_для_ начинающих.1999.

Текст понятный, думаю вы сами разберетесь.
Gapro вне форума Ответить с цитированием
Старый 27.04.2012, 21:34   #18
Erasyl
Новичок
Джуниор
 
Регистрация: 27.04.2012
Сообщений: 2
По умолчанию

А через какую програму создаете анимации?
просто в абцпаскале ето не прет то что написанно в кодах !!! если кто шарит помогите создать анимацию в абцпаскале сюжет таков :
Утро. С кровати встает молодой человек и пристально смотрит в окно, за которым находится детская площадка в которой находятся только пустые качели и лавочки. В его квартире очень темно, еле видно дверь комнаты. Когда он смотрит на площадку он вспоминает как в детстве он и двое его друзей часто качались на качелях и играли в карты и в шахматы на лавочках. Но после последней секунды пристального взгляда на площадку, по его щеке всегда стекает одинокая слеза. И после этого он закрывает глаза и мультипликация заканчивается.
Erasyl вне форума Ответить с цитированием
Старый 28.04.2012, 08:06   #19
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Варианта 2:
1. Съемка живого актера.
2. Использование 3D-персонажа.

PS. К языку программирования ни то, ни другое отношения не имеет.
s-andriano вне форума Ответить с цитированием
Старый 04.05.2012, 22:54   #20
Erasyl
Новичок
Джуниор
 
Регистрация: 27.04.2012
Сообщений: 2
По умолчанию

ya 4eto ne ponyal ? v ABC pascale kak sdelat' ? Sdelaite progu v ABCpascale plizzz ) Po sujetu )

zdes igra ploxo rabotaet elips kogda dvijhetsya ne ostanavlivaetsya i zhizni uxodyat esli dajhe popadaet kubik v elips

nepravilno rabotaet elips dvijhetsya neprerivno i zhizni snimayutsya esl;i dajhe est popadanie v elips

Последний раз редактировалось Stilet; 27.11.2014 в 21:41.
Erasyl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игрушка Nester Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 15.01.2009 19:02
Игрушка Rusl92 Мультимедиа в Delphi 8 25.09.2008 12:11
Delphi 7 задача на графику, игрушка Agent[PNZ] Помощь студентам 2 29.04.2008 10:54
игрушка в курсовике EDG_aka_Dima Помощь студентам 2 25.05.2007 06:13
Игрушка Rozalinda Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 14.01.2007 22:00