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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2016, 16:51   #11
Виктор Горбань
Новичок
Джуниор
 
Регистрация: 15.07.2016
Сообщений: 14
По умолчанию

на части потому, что не позволено мне загружать архивы больше полмегабайта. А размер такой создает RAD Studio, плюс несколько картинок внутри.
Виктор Горбань вне форума Ответить с цитированием
Старый 15.07.2016, 16:58   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
на части потому, что не позволено мне загружать архивы больше полмегабайта.
неправда!


Цитата:
А размер такой создает RAD Studio, плюс несколько картинок внутри.
опять неправда. не верю, что твой исходник может столько весить.
Зачем обманываешь людей, у которых просишь помощи?

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 15.07.2016 в 17:03.
min@y™ вне форума Ответить с цитированием
Старый 15.07.2016, 17:01   #13
Виктор Горбань
Новичок
Джуниор
 
Регистрация: 15.07.2016
Сообщений: 14
По умолчанию

там дополнительно загружается куча библиотек, создание формы и т.д. ну щас дам чисто код, посмотрите
Виктор Горбань вне форума Ответить с цитированием
Старый 15.07.2016, 17:03   #14
Виктор Горбань
Новичок
Джуниор
 
Регистрация: 15.07.2016
Сообщений: 14
По умолчанию

Как я думаю, проблема где-то в Tgamesform.FieldMouseDown -> winner

Код:
unit GamesUnit;

interface

uses

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.ImageList,
  Vcl.ImgList, Vcl.ComCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls;

type
  TGamesForm = class(TForm)
    PageControl1: TPageControl;
    Page1: TTabSheet;
    Page2: TTabSheet;
    Page3: TTabSheet;
    NEWGAME: TButton;
    правила: TMemo;
    field:TImage;
    change: TRadioGroup;
    WinList: TImageList;
    WinImage: TImage;
    procedure правилаMouseEnter(Sender: TObject);
    procedure правилаMouseLeave(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure NEWGAMEClick(Sender: TObject);
    procedure CreateArrOfImages;
    procedure InitPole;
    procedure FormDestroy(Sender: TObject);

    procedure fieldMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Page1Enter(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
//const

type TMatrix = array[0..2,0..2] of timage;
var
  GamesForm: TGamesForm;
  zero,cross:tbitmap;
  game,xogame,tankgame:boolean;
  image1:timage;
  put:string;
  mz,mc:Tmatrix; //massZiro and MassCross
  i,j:integer;
  spacetop:integer;
  spaceleft:integer;
  PicShir:integer;
  gamer:boolean;
//  FieldTop, FieldLeft:integer;

implementation

{$R *.dfm}


procedure TGamesForm.fieldMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  procedure winner(jy,ix:integer);//вроде плеер такой: фолс=ноль, тру=крест.
    function proverka(line,column:integer; a:TMatrix):boolean;
     var
        sum:byte;
        i,j:integer;
     begin    //proverka
       begin
         sum:=0;
         for j:=0 to 2 do    //проверка сверху вниз
         if a[j,column].visible=true then sum:=sum+1;
       end;
       if sum=3 then proverka:=true
       else

       begin
         sum:=0;
         for i:=0 to 2 do    //проверка слева направо
         if a[line,i].visible=true then sum:=sum+1;
       end;
       if sum=3 then proverka:=true
       else

       begin
         sum:=0;
         if column=line then          //проверка основной диагонали
          for i:=0 to 2 do
           if a[i,i].visible=true then sum:=sum+1;
       end;
       if sum=3 then proverka:=true
       else

       begin
         sum:=0;
         if (column=length(a)-line-1) then          //проверка дополнительной диагонали
          begin
            if a[0,2].visible=true then sum:=sum+1;
            if a[1,1].visible=true then sum:=sum+1;
            if a[2,0].visible=true then sum:=sum+1;
          end;
        if sum=3 then proverka:=true;
        end;
     end;
   var result: integer;
   begin  //winner
     result:=1;
     if gamer=True then
      begin
        if proverka(jy,ix,mc)=true then result:=2; //cross
      end
     else   //if gamer=false
      begin   //gamer false=zero, gamer true=cross
        if proverka(jy,ix,mz)=true then result:=3; //zero
      end;
    //это были проверки, А ТЕПЕРЬ ДЕЙСТВИЕ!
    //сюда доходит. игра останавливается, но картинка не рисуется.
    if result>1 then   //1-пока ничья, 2-победа красных, 3-победа синих
     begin
       правила.text:='result='+IntToStr(result);
       game:=false;
       WinList.draw(WinImage.Canvas,0,0,result,true); //эта строка не работает
     end
    else
    WinList.draw(WinImage.Canvas,0,0,4,true);  //вместо проверки ничьей
    //else проверка ничьей
   end;
var
   ix,jy:integer;
begin     //FieldMouseDown
  jy:=(y) div PicShir;
  ix:=(x) div PicShir;
  if game=true then
   begin
     if (gamer=false) then
      begin
        {mass zero}
        mz[jy,ix].visible:=true;
        winner(jy,ix);
        gamer:=not gamer;
      end
     else
     if (gamer=true) then
      begin
        {mass cross}
        mc[jy,ix].visible:=true;
        winner(jy,ix);
        gamer:=not gamer;
      end;
  end;
end;

procedure TgamesForm.CreateArrOfImages;
begin
  for j:=0 to 2 do
   for i:=0 to 2 do
    begin
      mc[j,i]:=timage.Create(Self);
      mz[j,i]:=timage.Create(Self);
      mc[j,i].Parent:=Page1;{self}
      mz[j,i].Parent:=Page1;{self}
      with mz[j,i] do
       begin
         Width:=PicShir;
         Height:=PicShir;
         Left:=(spaceleft+i*Width);
         Top:=(spacetop+j*Height);
         Picture.LoadFromFile(put+'zero.png');
         Visible:=false;
       end;
      with mc[j,i] do
       begin
         Width:=PicShir;
         Height:=PicShir;
         Left:=(spaceleft+i*Width);
         Top:=(spacetop+j*Height);
         Picture.LoadFromFile(put+'cross.png');
         visible:=False;
       end;
    end;
end;

procedure TGamesForm.FormCreate(Sender: TObject);
begin
  gamesform.PageControl1.ActivePageIndex:=-1; //выбрать вкладку
  game:=false;
  xogame:=false;
  tankgame:=false;
  change.ItemIndex:=0;//т.е. первый
  zero:=tbitmap.Create;
  cross:=tbitmap.Create;
  put:=ExtractFilePath(Application.ExeName);
  spaceleft:=field.Left;
  spacetop:=field.Top;
  PicShir:=field.Width div 3;
end;

procedure TGamesForm.NEWGAMEClick(Sender: TObject);
begin
  if change.ItemIndex=0 then
   begin
     game:=true;
     InitPole;
     gamer:=true;
    // WinList.draw(WinImage.Canvas,0,0,0,true);
   end;
end;

procedure TGamesForm.Page1Enter(Sender: TObject);
begin
  if xogame=false then
   CreateArrOfImages;
end;

procedure TGamesForm.FormDestroy(Sender: TObject);
begin                  //здесь вроде бы записываются дополнительно те действия, которые не выполняются автоматически при этом событии.
  for j:=0 to 2 do
   for i:=0 to 2 do
    begin
      mc[j,i].Free;
      mz[j,i].Free;
    end;
end;

procedure TGamesForm.InitPole;
begin
  for j:=0 to 2 do
   for i:=0 to 2 do
    begin
      mz[j,i].Visible:=false;
      mc[j,i].Visible:=false;
    end;
end;

procedure TGamesForm.правилаMouseEnter(Sender: TObject);
begin
  правила.text:='Хочешь выиграть? Делай то, что надо!   Выигрывает тот, кто первый составит линию из своих терминаторов.  Линия может быть горизонтальной, диагональной или вертикальной';
end;

procedure TGamesForm.правилаMouseLeave(Sender: TObject);
begin
  правила.text:='правила';
end;


end.
Виктор Горбань вне форума Ответить с цитированием
Старый 15.07.2016, 17:07   #15
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

вот как ты думаешь, зачем мне весь проект? зачем я его просил?

апд.: слышь, я просмотрел щас фрагмент в предыд. посту. Короче, не надо, не давай мне проект свой. Если он весь так написан, то нуевовжопу.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 15.07.2016 в 17:10.
min@y™ вне форума Ответить с цитированием
Старый 15.07.2016, 17:09   #16
Виктор Горбань
Новичок
Джуниор
 
Регистрация: 15.07.2016
Сообщений: 14
По умолчанию

про размеры
Изображения
Тип файла: png размеры файлов.png (9.3 Кб, 31 просмотров)
Виктор Горбань вне форума Ответить с цитированием
Старый 15.07.2016, 17:10   #17
Виктор Горбань
Новичок
Джуниор
 
Регистрация: 15.07.2016
Сообщений: 14
По умолчанию

возможно, вы считаете, что ошибка может быть в другом блоке. И чтобы можно было запустить этот проект
Виктор Горбань вне форума Ответить с цитированием
Старый 15.07.2016, 17:16   #18
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

я про zip не говорил.
Цитата:
возможно, вы считаете, что ошибка может быть в другом блоке. И чтобы можно было запустить этот проект
чтобы прогнать его под дебаггером.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 15.07.2016, 17:18   #19
Виктор Горбань
Новичок
Джуниор
 
Регистрация: 15.07.2016
Сообщений: 14
По умолчанию

КАК написан? что не так, не пойму? слишком много инфы? я не понимаю, зачем именно вам проект? я могу через некоторое время предоставить сокращенную версию без нескольких процедур, но все равно текст не будет из двух строк
Виктор Горбань вне форума Ответить с цитированием
Старый 15.07.2016, 17:24   #20
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
КАК написан? что не так, не пойму?
Использование TImage для рисования - сразу фтопку. Но не это самое страшное.
Жэсть - это трёхуровневая вложенность функций!
Нахрена? Чтобы было сложно и неудобно отлаживать?
Маленький извращенец!
Цитата:
я не понимаю, зачем именно вам проект?
Повторяю для тех, кто в танке: чтобы прогнать его под дебаггером.
Цитата:
я могу через некоторое время предоставить сокращенную версию без нескольких процедур
Не надо. Я передумал. Пойду лучше пива попью холодного.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать окно по PNG с прорисовкой контролов sasha_gavrithing Мультимедиа в Delphi 7 10.12.2012 23:46
Проблема с прорисовкой TextBox Alena-b-v C# (си шарп) 2 01.08.2011 12:30
Медленная загрузка изображения из TImageList k1r1ch Общие вопросы Delphi 6 06.09.2010 18:25
Проблема записи изображения в DB RIO БД в Delphi 1 25.12.2009 13:06
Проблемы с прорисовкой :/ Ilidan Общие вопросы по Java, Java SE, Kotlin 0 16.10.2007 01:46