![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите пожалуйста мы в коледже начинаем изучать ООП... и вот собственно практическая робота и что то в ней не так никак не могу понять... уже три часа ... Игра "мишень" ... вот код..
Код:
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
|
||||
|
||||
![]() На вскидку, это что:
Код:
ShiftX := random(100) mod 3 1; {Äâà âèïàäêîâ³ ÷èñëà ìíîæèíè) Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Ето код програмы там весь есть...типа в Практической....
а еще вопрос... разве такой синтаксис Код:
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
|
|||
|
|||
![]() 57 стока ..constructor Create(a, b : integer; owner : TWinControl);
выдает ошыбку Undeclarated identifier Create.... подскажыте с чем оно связано?....ето ж зарезервированая команда.... |
#5
|
||||
|
||||
![]() Это разные понятия.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
andywhitedsgn (26.09.2012)
|
#6
|
||||
|
||||
![]() Этот конструктор нигде не декларирован.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() Пожалуйста подскажыте хорошую литературу...по object pascal... а то нам такую информацыю дают что там сам чёрт себе голову сламает...
|
#8
|
|||
|
|||
![]() Ясно спасибо за ответ..И самое интересное что по мнению преподавателя ето готовый код програмы..... То есть ладно бы он сказал дополнить... или там есть ошыбки исправте.....)))
|
#9
|
||||
|
||||
![]() Этот код в принципе не может работать. Там столько ошибок, бррр...
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
![]() Ну вот и я про ето... и ето преподаватель.... лутше самому учить.....)))
|
#11
|
|||
|
|||
![]() Цитата:
|