Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61

Создания классов и связь между ними

16.05.2014, 20:33. Показов 5456. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу опишите как написать класс (что куда). И сделать связь между ними.
Ниже ошибка:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
unit Block;
 
interface
 
uses
  System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects;
 
type
  TBlock = class(TImage);
  TBlockType = (Air,Solid,Tnt);
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
    BlockType:TBlockType;
    Pos:TPoint;
  published
    { Published declarations }
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Standard', [TBlock]);
end;
 
end.
Предположим на форме объекты класса TBlock и один TPlayer необходимо выполнить эту функцию или сделать эвент при выполнении:
Delphi
1
2
3
4
 function Dump (B:TBlock,P:TPlayer):Boolean;     // Проверка столкновения
 begin
if (((B.Position.X+B.Width>=P.Position.X) and (B.Position.X<=P.Position.X)) or ((P.Position.X+P.Width>=B.Position.X) and (B.Position.X>=P.Position.X))) and (((B.Position.Y+B.Height>=P.Position.Y) and (B.Position.Y<=P.Position.Y)) or ((P.Position.Y+P.Height>=B.Position.Y) and (B.Position.Y>=P.Position.Y))) then Dump:=true else Dump:=false;
 end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2014, 20:33
Ответы с готовыми решениями:

Создать любые две таблицы, установить между ними связь, и с помощью запроса показать эту связь
Короче такое задание. Создать любые две таблицы, установить между ними связь и с помощью запроса показать эту связь. Как это сделать?...

2 формы и связь между ними
Подскажите пожалуйста возможна ли такая схема, и если возможна, то как: в одном проекте 2 класса каждый класс должен выполняться...

Субконто и счета связь между ними
вопрос чисто теоретический, имеется текст задания, я его уже размещал, но опять решил вернуться и допонять, вот текст: &quot;Необходимо...

40
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
21.05.2014, 08:51  [ТС]
Студворк — интернет-сервис помощи студентам
Бред тогда почему вот это работало?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
procedure LoadWorld;
var
i,n:integer;
K:char;
begin
form2.show;
AssignFile(filee,link);
reset(filee);
for i:=0 to 50 do
for n := 0 to 100 do
begin
read(filee,k);
Application.ProcessMessages;
if (k='a') or (k='A') or (k=' ') then begin B[i,n].TypeF:=air; b[i,n].TypeB:='..\res\air.png'; end;
if (k='s') or (k='S') then begin b[i,n].TypeF:=solid; b[i,n].TypeB:='..\res\stone.png'; end;
if (k='d') or (k='D') then begin b[i,n].TypeF:=solid; b[i,n].TypeB:='..\res\dirt.png'; end;
if (k='g') or (k='G') then begin b[i,n].TypeF:=solid; b[i,n].TypeB:='..\res\grass.png'; end;
end;
closefile(filee);
for i:=0 to 50 do begin
Application.ProcessMessages;
for n:= 0 to 100 do
begin
if not ( b[i,n].TypeF=air ) then begin
B[i,n].i:=TImage.Create(form1);
B[i,n].i.Parent:=Form1;
b[i,n].i.Height:=32;
b[i,n].i.Width:=32;
B[i,n].i.Position.X:=n*32;
b[i,n].i.Position.Y:=i*32;
b[i,n].i.MultiResBitmap.Bitmaps[1].LoadFromFile(b[i,n].TypeB);
end;
end;
end;
form1.Button1.Text:=floattostr(player.Px)+' '+floattostr(player.Py);
form1.PlayerD.Position.X:=player.Px;
form1.PlayerD.Position.Y:=player.Py;
form2.Close;
end;
Добавлено через 1 минуту
Или нужно написать процедуру для создания класса?

Добавлено через 2 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Procedure AddBlock(B:RBlock);
begin
a:=TImage.Create(Gamef);
a.Parent:=Gamef;
//a.Pos:=b.pos;
a.Position.X:=b.Pos.X*32;
a.Position.Y:=b.Pos.Y*32;
a.Height:=32;
a.Width:= 32;
//a.Hp:=b.Hp;
//a.BlockType:=StrToBlock(b.BlockType);
//a.BitMapType:=StrToMap(b.BitMapType);
a.MultiResBitmap.Bitmaps[1].LoadFromFile(MapToStr(BlockList.Items[0].BitMapType));
//BlockList.Add(a);
end;
Даже сделал A:TImage; всё равно не создаёт!


Добавлено через 5 минут

Delphi
1
2
3
4
5
6
7
8
9
10
11
a:=TBlock.Create(gamef.Blocks);
a.Parent:=Gamef.Blocks;
a.Pos:=b.pos;
a.Position.X:=b.Pos.X*32;
a.Position.Y:=b.Pos.Y*32;
a.Height:=32;
a.Width:= 32;
a.Hp:=b.Hp;
a.BlockType:=StrToBlock(b.BlockType);
a.BitMapType:=StrToMap(b.BitMapType);
a.MultiResBitmap.Bitmaps[1].LoadFromFile(MapToStr(a.BitMapType));
Добавлено через 4 минуты
BreakPoint поставил много в начале функции.
До них не доходит.

Добавлено через 5 минут
Вот теперь я понял это была бредовая ошибка делфи
ОН НЕ ПРОПУСКАЛ
вот ЭТО:
Delphi
1
rb.pos.Y:=0;
Добавлено через 2 минуты
Delphi
1
Pos:TPosition;
Добавлено через 59 секунд
Ура прошёл и создал мне блок!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Procedure AddBlock(B:RBlock);
begin
a:=TBlock.Create(gamef.Blocks);
a.Parent:=Gamef.Blocks;
a.X:=b.x;
a.Y:=b.y;
a.Position.X:=a.X*32;
a.Position.Y:=a.Y*32;
a.Height:=32;
a.Width:= 32;
a.Hp:=b.Hp;
a.BlockType:=StrToBlock(b.BlockType);
a.BitMapType:=StrToMap(b.BitMapType);
a.MultiResBitmap.Bitmaps[1].LoadFromFile(b.BitMapType);
BlockList.Add(a);
end;
Добавлено через 3 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Procedure AddBlock(B:RBlock);
begin
BlockList.Add(TBlock.Create(gamef.Blocks));
BlockList.Items[BlockList.Count-1].Parent:=Gamef.Blocks;
BlockList.Items[BlockList.Count-1].X:=b.x;
BlockList.Items[BlockList.Count-1].Y:=b.y;
BlockList.Items[BlockList.Count-1].Position.X:=b.X*32;
BlockList.Items[BlockList.Count-1].Position.Y:=b.Y*32;
BlockList.Items[BlockList.Count-1].Height:=32;
BlockList.Items[BlockList.Count-1].Width:= 32;
BlockList.Items[BlockList.Count-1].Hp:=b.Hp;
BlockList.Items[BlockList.Count-1].BlockType:=StrToBlock(b.BlockType);
BlockList.Items[BlockList.Count-1].BitMapType:=StrToMap(b.BitMapType);
BlockList.Items[BlockList.Count-1].MultiResBitmap.Bitmaps[1].LoadFromFile(b.BitMapType);
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2014, 08:51

DBlookuplistbox, DBlookupcombobox и связь между ними
Привет! Столкнулась с такой проблемой: У меня есть форма, где пользователь будет выбирать данные для заполнения таблицы. Хочу сделать...

Сортировка combo box связь между ними в форме
ПОДСКАЖИТЕ!!! Как связать между с собой несколько комбо боксов в форме, чтобы можно было сортировать несколько списков. К примеру есть...

Как наглядно представить код в виде иерархии классов и связей между ними
Желательно видеть как внутренние связи, между всеми методами, в том числе и обращения к переменным, так и внешние, между всеми элементами....

Создать две таблицы (продукт, и производитель), и создать между ними связь — один ко многим
Всем привет. Появилась проблема. Нужно создать две таблицы (продукт, и производитель), и создать между ними связь - один ко многим. Ниже...

Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили пе
Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
41
Ответ Создать тему
Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru