Форум: "Игры";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизКак двигать спрайт... Найти похожие ветки
← →
JUS (2004-08-15 20:59) [0]Подскажите плиз как сделать чтоб мой джигит шёл. т.е. Я нажимаю кнопку вправо и как обратится к его координатам? и ещё: он падает с неба на землю TZemla, как сделать чтоб он остановился на ней? (не так как сделал я , а по другому)? {я пока учусь Sprite у меня не анимированные пока}; Вот Код игры:
...
//////////////var
Form1: TForm1;
implementation
{$R *.dfm}
Type
TZemla=Class(TImageSprite)
Public
Constructor Create(AParent:TSprite);Override;
end;
TTrava=Class(TImageSprite)
Public
Constructor Create(AParent:TSprite);Override;
end;
TDzigit=Class(TImageSprite)
Procedure DoCollision(Sprite:TSprite; var Done:Boolean);Override;
Procedure DoMove(MoveCount:Integer);Override;
Public
constructor Create(Aparent:TSprite);Override;
End;
/////////////////////////////////////////////////////
Constructor TZemla.Create(AParent:TSprite);
Begin
Inherited Create(AParent);
Image:=Form1.DXImageList1.Items.Find("земля");
X:=0;
Y:=500;
Z:=2;
Width:=Image.Width;
Height:=Image.Height;
end;
Constructor TTrava.Create(AParent:TSprite);
Begin
Inherited Create(AParent);
Image:=Form1.DXImageList1.Items.Find("трава");
X:=0;
Y:=460;
Z:=2;
Width:=Image.Width;
Height:=Image.Height;
end;
Constructor TDzigit.Create(AParent:TSprite);
Begin
Inherited Create(AParent);
Image:=Form1.DXImageList1.Items.Find("Джигит");
X:=100;
y:=0;
z:=2;
Width:=Image.Width;
Height:=Image.Height;
PixelCheck:=True;
end;
///////////////////////////////////////////////
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
IF not DXDraw1.CanDraw Then exit;
DXDraw1.Surface.Fill(9);
DXSPRITEEngine1.Move(1000 Div 60);
DXSpriteEngine1.Dead;
DXSpriteEngine1.Draw;
DXDraw1.Flip;
//Вывод на экран землю и траву
TZemla.Create(DXSpriteEngine1.Engine);
TTrava.Create(DXSpriteEngine1.Engine);
end;
Procedure TDzigit.DoCollision(Sprite:TSprite; var Done:Boolean);
Begin
IF Sprite Is TZemla Then Begin Dead; end;
end;
Procedure TDzigit.DoMove(MoveCount:Integer);
Begin
Inherited DoMove(MoveCount);
//Collision;
IF y>380 then Begin y:=380;end;
y:=y+(100/100)*MoveCount;
end;
procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
DXTimer1.Enabled:=True;
end;
procedure TForm1.DXDraw1Finalize(Sender: TObject);
begin
DXTimer1.Enabled:=False;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key=vk_Escape Then close;
end;
procedure TForm1.DXTimer1Activate(Sender: TObject);
begin
DXTimer1.Enabled:=True;
end;
procedure TForm1.DXTimer1Deactivate(Sender: TObject);
begin
DXTimer1.Enabled:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TDzigit.Create(DXSpriteEngine1.Engine);
DXDraw1.Initialize;
end;
end.
← →
Servelat © (2004-08-15 22:06) [1]Во-первых, IMHO, правила хорошего тона: куча плохо написанного кода прямо в посте не ведет к наглядному пониманию (по крайней мере мною) проблемы. Неужели так сложно закачать на какой-нить сервак zip архив с твоим кодом? В противном случае, я должен создать форму, понакидать на неё компонентов, сделать имена, как твои, подставить все обработчики событий в нужные места, подыскать картинки под твои спрайты, короче куча геморроя, все это чтобы увидеть что к чему. Это сразу отбивает желание рассматривать твою проблему.
Далее по коду:
//Вывод на экран землю и траву
TZemla.Create(DXSpriteEngine1.Engine);
TTrava.Create(DXSpriteEngine1.Engine);
Не правда, тут происходит создание двух объектов, а никак не вывод их на экран (вывод производят строчки
DXSpriteEngine1.Draw;
DXDraw1.Flip;
). А учитывая что это создание объектов происходит по таймеру, то цель такого неэкономного обращения с ресурсами компьютера мне просто не понятна.
procedure TForm1.DXTimer1Activate(Sender: TObject);
begin
DXTimer1.Enabled:=True;
end;
Глупость, совершенно бессмысленный код. Событие DXTimerActivate происходит при установке его свойства Enabled в True. То есть, эта процедура вызывается тогда, когда DXTimer1.Enabled и так true.
Это и еще несколько ляпсусов наводят на мысль о низкой подготовке тебя в программировании, а соответственно игры тебе писать рано, ничего хорошего из этого не выйдет (IMHO). Прочитай книжку (лучше две) про ООП, напиши несколько утилиток, разберись с понятием объекта, наследования, etc. После этого скорее всего тебя посетит мысль о полной бесполезности кода в твоем первом посте, и ты перепишешь это все нафиг.
ЗЫ Все вышесказанное IMHO, я не хотел никого обидеть.
ЗЗЫ И все же не могу заметить, что "игра" - это слишком громкое название для твоего кода.
ЗЗЗЫ Мой пост можно было сделать куда короче, заменив его емким словом "RTFM".
← →
JUS (2004-08-16 00:27) [2]
> ЗЗЫ И все же не могу заметить, что "игра" - это слишком
> громкое название для твоего
Да, спасибо, согласен
> IMHO
Что значит?
← →
JUS (2004-08-16 00:32) [3]Да и закрырыв глаза на это кто мне ответит на первый вопрос, уж очень охото всё сразу узнать:)
И что значит
> ЗЫ
?
← →
gg_no_re (2004-08-16 00:35) [4]Тебе говорят же - покупай десяток книг и садись учись лам. А то насоздавал топиков - как запустить, как задвигать .....завтра будет - не двигается что делать..как кнопочку вывести..как обработчик ей написать...
← →
Megabyte-CeerCop © (2004-08-16 08:37) [5]Отвечаю как обратиться к его координатам:
У класса TImageSprite Кроме конструктора есть ещё и процедура doMove Декларируй её и в теле (еённом) Оперируй с опросом клавиш и координатами.
← →
NikotiN © (2004-08-16 13:02) [6]Тут не только по ООП книжки надо. Купи себе себе что-то, типа "Программирование" Окулова, кажется... Ну и заодно Библию Разработчика Delphi 4/5/6...
ЗЫ:
Ошибок и недочётов больше строк :)
IF y>380 then Begin y:=380;end;
y:=y+(100/100)*MoveCount;
← →
JUS (2004-08-17 18:31) [7]
> Неужели так сложно закачать на какой-нить сервак zip архив
> с твоим кодом?
Я просто не умею это телать. закидывать на сервак в смысле.
← →
Megabyte-Ceercop © (2004-08-19 06:52) [8][7]
Я тоже неумею на серваки закидывать.
Много раз уже пробовал.
Серьёзно :-|
← →
Jus (2004-08-20 20:36) [9]
> Megabyte-Ceercop ©
Вот нашёл где можно закинуть, толко на неделю или макс на 14 дней.
http://www.webfile.ru/
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c