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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2016, 17:14   #1
Vladislav2114
Новичок
Джуниор
 
Регистрация: 25.05.2016
Сообщений: 1
По умолчанию Игра танчики - Delphi

Помогите пожалуйста исправить ошибку, все работает хорошо, но когда в мой танк прилетает пуля выдает вот такое сообщение
Изображения
Тип файла: jpg 213124.jpg (13.0 Кб, 126 просмотров)
Вложения
Тип файла: rar Tanks.rar (446.9 Кб, 18 просмотров)
Vladislav2114 вне форума Ответить с цитированием
Старый 25.05.2016, 21:23   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Код:
procedure TForm1.ObjDestroy(var Obj:TObj);
begin
TTImer(FindComponent('Move'+Obj.Name)).Free;
TTimer(FindComponent('Shot'+Obj.Name)).Free;
Obj.Free;
obj:=nil;  // fix1
end;

function TForm1.ObjDead(var Obj:TObj):boolean;
begin
 if Obj.ObjectData.Armor<=0 then begin
  ObjDestroy(obj);
  Result:=true;
 end else Result:=false;
end;
Код:
if (Name1='Bullet') and (Name2='Tank') then begin
    AssignFile(myFile, im+'1.txt');
    Append(myFile);
    Write(myFile, Score);
    Write(myFile, ' ');
    CloseFile(myFile);
 Obj2.ObjectData.Armor:=Obj2.ObjectData.Armor-Obj1.ObjectData.Power;
 Data:=Obj2.ObjectData.Data3;
 Par1:=Obj1.ObjectData.ObjParent;
 ObjDestroy(Obj1);
  if Obj2=Player then    begin end;   //half fix 
  
 if ObjDead(Obj2)=true then begin //  obj2 разрушается, но если это Player, то далее он ссылается черти куда. Надо корректно обработать разрушение объекта.  
  if Par1=Player.Name then begin // 
   Score:=Score+Data;
   Statusbar1.Panels[1].Text:='Î÷êè: '+inttostr(Score);
  end;
obg2 и Player это ссылки указатели на сами объекты. Поэтому обнуление Nil в предыдущем фиксе обнуляет только один указатель.

Данный участок надо переписать. А ещё лучше переписать весь код программы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 25.05.2016 в 21:26.
Pavia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Танчики 2.0 Ulex Gamedev - cоздание игр: Unity, OpenGL, DirectX 16 03.03.2016 22:42
Игра танчики. Antoxachelsea Фриланс 1 15.06.2012 02:24
Танчики на C# Brabus Помощь студентам 3 12.04.2011 21:49
Tunk Rush - 2D танчики MonoLife Gamedev - cоздание игр: Unity, OpenGL, DirectX 27 09.12.2010 05:43
Танчики PVD Gamedev - cоздание игр: Unity, OpenGL, DirectX 24 10.01.2010 21:25