Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.09.2012, 22:03
andywhitedsgn andywhitedsgn вне форума
Прохожий
 
Регистрация: 26.09.2012
Сообщения: 6
Репутация: 10
По умолчанию Помогите с программой

Помогите пожалуйста мы в коледже начинаем изучать ООП... и вот собственно практическая робота и что то в ней не так никак не могу понять... уже три часа ... Игра "мишень" ... вот код..

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TPoint = object
  private
  x, y : integer;	{Êîîðäèíàòè}
  figure : TShape;
  public
  end;

  TCircle = object(TPoint)
  private
  radius : integer;	{Äîäàíî ïîëå äëÿ ðàä³óñà êîëà}
  public
  end;

  TRoundRect = object(TPoint)
  private
  w, h: integer;
  public
  end;





var
  Form1: TForm1;
  Point     : TPoint;
Circle    : TCircle;
RoundRect : TRoundRect;
count     : integer;



implementation

{$R *.dfm}

constructor Create(a, b : integer; owner : TWinControl);
{²í³ö³àë³çóº ïîëÿ êîîðäèíàò ÷èñëàìè à ³ Ü;
owner- îá'ºêò, íà ÿêîìó ðèñóºòüñÿ òî÷êà}
procedure Show;        {Ðèñóº òî÷êó ïîòî÷íèì êîëüîðîì }
procedure Hide;         {Âèòèðຠòî÷êó } 
procedure Draw(vis : boolean); virtual;
{³ðòóàëüíà ïðîöåäóðà, ÿêà âèêîðèñòîâóºòüñÿ ìåòîäàìè Show ³ Hide} 
procedure Set_Color(color: TColor);
procedure Move(dx, dy : integer);     {Ïåðåì³ùóº òî÷êó íà}
end;	{dx ïðàâîðó÷ ³ íà dy âíèç}

constructor TPoint.Create(a, b : integer; owner : TWinControl);
begin
figure := TShape.Create(nil);	{Ñòâîðþºìî îá'ºêò TShape}
figure.Parent := owner;	{Ðîçì³ùóºìî éîãî íà owner}
figure.Visible := false;      {"Ãàñèìî" éîãî äî âèêëèêó ìåòîäó Show}
õ := à; ó := Ü;	{Çàïàì'ÿòîâóºìî êîîðäèíàòè}
end;
procedure TPoint.Draw(vis : boolean); begin
with figure do  {Ïðàöþâàòèìåìî ç âëàñòèâîñòÿìè îá'ºêòà figure} begin
shape := stCircle;	{Òî÷êà - öå êîëî ç ðàä³óñîì 1 ï³êñåëü}
brush.Style := bsClear;         {Êîëî âñåðåäèí³, íå çàëèòå êîëüîðîì]
width := 2;	{Øèðèíà ô³ãóðè - 2 ï³êñåë³}
height := width;	{Âèñîòà ô³ãóðè - 2 ï³êñåë³}
left := õ - 1; top := ó - 1;     {Êîîðäèíàòè left òà top îá'ºêòà figure
ðîçòàøîâàí³ â ¿¿ ë³âîìó âåðõíüîìó êóò³, òîìó çì³ùóºìîñÿ òóäè â³ä
êîîðäèíàò (õ; ó), çàäàíèõ ÿê öåíòð êîëà ç ðàä³óñîì 1 ï³êñåëü}
visible := vis;	{Çàñâ³÷óºìî ÷è ãàñèìî òî÷êó}
end
end;
procedure TPoint.Set_Color(color: TColor); begin
figure.Pen.Color := color;      {Çàäàºìî êîë³ð äëÿ figure}
  end;
procedure TPoint.Show; 
begin
Draw(true);	{Çàñâ³÷óºìî òî÷êó - êîëî ðàä³óñà 1 ï³êñåëü}
end;
procedure TPoint.Hide ; 
begin
Draw( false);	{Ãàñèìî òî÷êó}
end;
procedure TPoint.Move(dx, dy: integer); 
begin
Hide;	{Ãàñèìî òî÷êó}
with figure do 
begin
x := x + dx; ó := ó + dy; {Çì³ùóºìî êîîðäèíàòè òî÷êè íà dx, dy} 
end;
Show;	{Çàñâ³÷óºìî òî÷êó íà íîâîìó ì³ñö³}
end;
{-----------------------------------------------------}
var Point: TPoint;
begin	{Ñòâîðþºòüñÿ òî÷êà â ïîçèö³¿(25,10) íà Forml}
Point. Create( 25,10, Form1);
Point.Show;	{Òî÷êà Point "çàñâ³÷óºòüñÿ" ³}
Point.Move(35, 70); {ïåðåíîñèòüñÿ íà 35 ï³êñåë³â ïðàâîðó÷ ³ 70}
Point.Hide;	{ï³êñåë³â ë³âîðó÷, "ãàñèòüñÿ" ³ ò.ä.}


{-----------------------------------------------------}

constructor
Create(a, b, ñ : integer; owner : TWinControl);
procedure Draw(vis : boolean); virtual;
end;
{implementation }
constructor Circle.Create(a, b, ñ : integer; owner : TWinControl);
begin	{Âèêëèêàºìî êîíñòðóêòîð áàçîâîãî êëàñó}
inherited Create(a, b, owner);
radius :=c;	{Çáåð³ãàºìî ðàä³óñ}
end;
procedure TCircle.Draw(vis : boolean);
begin
inherited;
with figure do
begin      {Êîîðäèíàòè ô³ãóðè çàäàþòüñÿ ¿¿ ë³âèì âåðõí³ì êóòîì}
left: = õ  radius;   top := ó radius;
width := 2 * radius;       {Øèðèíà ³ âèñîòà äîð³âíþº äâà ðàä³óñè}
height := width;
end
end;

constructor Create(a, b, c, d : integer; owner : TWinControl);
procedure Draw(vis : boolean); virtual;
end;
{implementation}
constructor TRoundRect.Create(a, b, c, d: integer; owner: TWinControl);
begin
inherited Create(a, b, owner);
w := c;   h := d;
end;
procedure TRoundRect.Draw(vis : boolean);
begin
inherited;
with figure do
begin
shape := stRoundRect;
width := w;   height := h;
left := x  wdiv2;   top := ó  hdiv2;;
end 
end;

procedure TPoint.Show; begin
Draw(true);	{Âèêëèêຠìåòîä Draw}
end;

procedure TPoint.Draw(vis : boolean);
begin
with figure do 
 begin
shape := stCircle;  brush.Style := bsClear;
width := 2;	{Øèðèíà ô³ãóðè - 2 ï³êñåë³}
height := width;	{Âèñîòà ô³ãóðè - 2 ï³êñåë³}
left:=x   1; top:=y 1;
visible := vis;	{Áóäå íàðèñîâàíà òî÷êà, à íå êîëî }
end
end;

procedure Draw(vis:boolean); virtual;

procedure TCircle.Draw(vis : boolean);
 {Áóäå íàðèñîâàíå êîëî} 
begin 
inherited; 
with figure do 
begin
left := x  radius;   top := ó radius;
width :=2 * radius;   height := width;
end
end;

procedure TForml.FormCreate(Sender : TObject);
var ³, middleX, middleY : integer;
begin
Panell.Color := clBlack;	{Çà÷îðíþºìî ïàíåëü ì³øåí³}
count := 0;	{Îáíóëþºìî ë³÷èëüíèê}
middleX := Panell .ClientWidth div 2;    {Ñåðåäèíà ïàíåë³ ó øèðèíó}
middleY := Panell.ClientHeight div 2;   {Ñåðåäèíà ïàíåë³ ó âèñîòó}
{Ñòâîðþºìî ïðÿìîêóòíèê}
RoundRect.Create(middleX, middleY, 30, 20, Panel1);
RoundRect.Set_Color(clLime); {Ñâ³òëî-çåëåíèì êîë³ðüîðîì)
RoundRect.Show ;	{ìàëþºìî ïðÿìîêóòíèê }
for ³ := 1 to 10 do	{Ìàëþºìî 10 êîíöåíòðè÷íèõ ê³ë}
begin	{Ñòâîðþºìî êîëî}
Circle.Create(middleX, middleY, ³ * 10, Panel1);
Circle. Set_Color(cl Yellow);      {Ñâ³òëî-æîâòèì êîëüîðîì}
Circle.Show ;	{ìàëþºìî êîëà}
end 
end;


procedure TForml.ButtonlClick(Sender: TObject);
var xl, yl, shiftX, shiftY : integer;
 begin
randomize;
ShiftX := random(100) mod 3   1; {Äâà âèïàäêîâ³ ÷èñëà ìíîæèíè)
ShiftY := random( 100) mod 3   1;	{{1,0,1) äëÿ çì³ùåííÿ)
RoundRect.Move( ShiftX * 8, ShiftY * 8);	{ïðÿìîêóòíèêà)
{Çì³ùóºìî ïðÿìîêóòíèê íà 8 ï³êñåë³â ó âèïàäêîâîìó íàïðÿìêó)
with RoundRect.figure do	{Ðîçãëÿíåìî RoundRect.figure)
begin        {Öå êîîðäèíàòè âèïàäêîâî¿ òî÷êè â äåÿêîìó îêîë³)
xl := left + (random(120)  60);	{ö³ë³ - òî÷êà âëó÷åííÿ)
yl := top + (random(80)  40);
Point.Create(xl, yl, Panel1);	{Ñòâîðþºìî òî÷êó)
Point.Set_Color(clWhite);	{Á³ëèì êîëüîðîì)
Point.Show ;	{ìàëþºìî òî÷êó)
if (xl > Left) and (xl < left + width)    {ßêùî âëó÷åííî ó ö³ëü,}
 and (yl > top) and (yl < top + height) then
begin
messagedlg('Âëó÷åííÿ!!', mtInformation, [mbOk], 0);
inc(count);	{çá³ëüøóºìî ë³÷èëüíèê âëó÷åíü)
end;{if}
if (left < 0) or (left + width > Panel1.ClientWidth)   {ßêùî ö³ëü)
or (top < 0) or (top + height > Panel1.ClientHeight) then
begin	{âèéøëà ³ç çîíè ïðèö³ëó (çà ïàíåëü)}
messagedlg('ʳíåöü ãðè! Óñüîãî áóëî ' + inttostr(count) + ' âëó÷åíü.', 
mtInformation, [mbOk], 0);
Forml.Close ;                                             {Çàê³í÷óºìîðîáîòó)
end    {if}
end    {with}
end;







end;



end.
 
Ответить с цитированием
  #2  
Старый 26.09.2012, 22:07
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

На вскидку, это что:
Код:
ShiftX := random(100) mod 3   1; {Äâà âèïàäêîâ³ ÷èñëà ìíîæèíè) 
откуда в конце строки 1 появилась (строка 212)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 26.09.2012, 22:37
andywhitedsgn andywhitedsgn вне форума
Прохожий
 
Регистрация: 26.09.2012
Сообщения: 6
Репутация: 10
По умолчанию

Ето код програмы там весь есть...типа в Практической....

а еще вопрос... разве такой синтаксис

Код:
TPoint = object
  private
  x, y : integer;	{Координати}
  figure : TShape;
  public
  end;
вот где в инете не смотрю...
Код:
TPoint = class
  private
  x, y : integer;	{Координати}
  figure : TShape;
  public
  end;

lmikle: пользуемся тегами!!!

Последний раз редактировалось lmikle, 26.09.2012 в 22:40.
Ответить с цитированием
  #4  
Старый 26.09.2012, 22:41
andywhitedsgn andywhitedsgn вне форума
Прохожий
 
Регистрация: 26.09.2012
Сообщения: 6
Репутация: 10
По умолчанию

57 стока ..constructor Create(a, b : integer; owner : TWinControl);

выдает ошыбку Undeclarated identifier Create.... подскажыте с чем оно связано?....ето ж зарезервированая команда....
Ответить с цитированием
  #5  
Старый 26.09.2012, 22:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это разные понятия.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
andywhitedsgn (26.09.2012)
  #6  
Старый 26.09.2012, 22:45
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Этот конструктор нигде не декларирован.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 26.09.2012, 22:45
andywhitedsgn andywhitedsgn вне форума
Прохожий
 
Регистрация: 26.09.2012
Сообщения: 6
Репутация: 10
По умолчанию

Пожалуйста подскажыте хорошую литературу...по object pascal... а то нам такую информацыю дают что там сам чёрт себе голову сламает...
Ответить с цитированием
  #8  
Старый 26.09.2012, 22:47
andywhitedsgn andywhitedsgn вне форума
Прохожий
 
Регистрация: 26.09.2012
Сообщения: 6
Репутация: 10
По умолчанию

Ясно спасибо за ответ..И самое интересное что по мнению преподавателя ето готовый код програмы..... То есть ладно бы он сказал дополнить... или там есть ошыбки исправте.....)))
Ответить с цитированием
  #9  
Старый 26.09.2012, 22:48
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Этот код в принципе не может работать. Там столько ошибок, бррр...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 26.09.2012, 22:50
andywhitedsgn andywhitedsgn вне форума
Прохожий
 
Регистрация: 26.09.2012
Сообщения: 6
Репутация: 10
По умолчанию

Ну вот и я про ето... и ето преподаватель.... лутше самому учить.....)))
Ответить с цитированием
  #11  
Старый 27.09.2012, 11:48
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 297
Репутация: -1806
По умолчанию

Цитата:
Сообщение от andywhitedsgn
подскажыте
ошыбку
жи-ши пишем с буквой И, дятел...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025