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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 09:38   #1
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию Объектно ориентированный код

Игра "Пятнашки".
Написал код в процедурно ориентированном методе, но мне нужен объектно ориентированный(Не очень мне понятный), вроде написал классы, и теперь не пойму как их использовать. Или может я что-то неправильно сделал, мб исправить что-нибуть, ну короче вот код. Здесь 2 модуля в одном описание процедур, в другом их вызов.
Код:
type
  TTable = class
    public
        procedure Size; //Задать размер таблиц
        procedure CompTable1;//Заполнить первую таблицу
        procedure CompTable2;//Заполнить вторую таблицу
        procedure Start; //процедура начала
        procedure MoveCells; //процедура передвижения ячеек
    private
        n:integer;
        a:array[1..100,1..100] of integer;
        b:array[1..100] of integer;

    end;

  TTimer = class
    public
       procedure Time;// процедура таймера
       procedure Compare;// процедура сравнения двух таблиц
    private
       ss,mm,hh:string; //элеенты строки часов секунды, минуты, часы.
       s,m,h:integer; //переменные секунд, минут, часов.
       c:integer;
       n:integer;
       st:string;
    end;

  TWorkOfFile = class
    public
       procedure OpenFile; //процедура вывода списка из файла
       procedure SeveInFile; //процедура записи новых строк в фаил
    private
       sFileName: String;
       s,s1: string;
       f:textfile;
    end;
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, ComCtrls, Menus, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    BitBtn3: TBitBtn;
    StringGrid2: TStringGrid;
    StatusBar1: TStatusBar;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    Timer1: TTimer;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    BitBtn2: TBitBtn;
    Edit1: TEdit;
    Memo1: TMemo;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    {procedure BitBtn2Click(Sender: TObject);}
    procedure BitBtn3Click(Sender: TObject);
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  var
    Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5, unit6;

{$R *.dfm}

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
 Ttable.Start;
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);
begin
 Ttable.MoveCells;
end;

procedure TForm1.N2Click(Sender: TObject);
 begin
   Close;
end;

procedure TForm1.N4Click(Sender: TObject);
 begin
   showmessage('Игра "Пятнадцать" - увлекательная, интересная, развивающая. Состоит в том чтобы собрать 
разбросанные пазлы в данную последовательность. Чем быстрее - тем лучше =).');
   OkBottomDlg.Showmodal;
 end;

procedure TForm1.N5Click(Sender: TObject);
 begin
   OKBottomDlg2.Showmodal;
 end;

procedure TForm1.Timer1Timer(Sender: TObject);
 begin
   Ttimer.Time;
   Ttimer.Compare;
end;

procedure TForm1.Label3Click(Sender: TObject);
 begin
   showmessage('Как можно быстрее расставить цифры в левом игровом поле точно также как в правом.');
 end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Ttable.Size;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
 Close;
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
 TWorkOfFile.OpenFile;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
 OKBottomDlg3.Showmodal;
end;

end.

Последний раз редактировалось Stilet; 17.11.2012 в 13:17.
Heng вне форума Ответить с цитированием
Старый 17.11.2012, 10:56   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

Весь проект полностью выложите, архивом, а то некогда собирать вручную такое.
Ну, и поконкретнее опишите Вашу проблему, что не получается ? Вызывать методы класса из кода формы и возвращать результаты для отображения на форму ?
phomm вне форума Ответить с цитированием
Старый 17.11.2012, 15:14   #3
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Весь проект полностью выложите, архивом, а то некогда собирать вручную такое.
Ну, и поконкретнее опишите Вашу проблему, что не получается ? Вызывать методы класса из кода формы и возвращать результаты для отображения на форму ?
Вот Мой проект
http://depositfiles.com/files/60v7km2c1

И если что-нибуть получиться то объясните пожалуйста.

Последний раз редактировалось Heng; 17.11.2012 в 15:22.
Heng вне форума Ответить с цитированием
Старый 17.11.2012, 15:17   #4
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от Heng Посмотреть сообщение
Вот Мой проект
http://depositfiles.com/files/60v7km2c1
Если например создал классы и методы это считается объектно ориентированным кодом ? Пытаюсь поместить процедуры на кнопки и Delphi ругается

[Error] Unit4.pas(29): This form of method call only allowed for class methods
Heng вне форума Ответить с цитированием
Старый 20.11.2012, 12:42   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

Вот что заметил - поправил, дальше доводите до ума и коли надо ещё спрашивайте.
Основная Ваша проблема - Вы не создавали объекты, а просто использовали классы как переменные, так кстати даже с записями бы не заработало, ибо обращаются не к типу а к переменной(полю) некоего типа.
Вложения
Тип файла: zip fifteen.zip (685.2 Кб, 10 просмотров)

Последний раз редактировалось phomm; 20.11.2012 в 12:47.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ (Eclipse) Ориентированный граф Life4Win Помощь студентам 2 25.05.2012 18:35
Доп.код,обратный код,прямой код вычисления Lukas077 Помощь студентам 0 20.03.2011 12:07
Ориентированный граф LENA_M HTML и CSS 0 01.11.2009 00:46
Ориентированный граф. Помогите!!!!!!!!!! Alija Паскаль, Turbo Pascal, PascalABC.NET 0 08.09.2009 22:23
Хелп по VBA ориентированный под Excel Реланиум Microsoft Office Excel 1 24.11.2006 02:16