Реализовать навигацию по пунктам меню - PascalABC.NET

Формулировка задачи:

довольно таки стандартное действие, но не могу разобраться как нужно его реализовать: 1. Когда я нажимаю на одну из кнопок меню (а именно первую "играть") то должно появляться меню с другими кнопками, и если я в ново созданном меню нажму на кнопку "Назад" то она выполнит также дейсвтие для прошлого меню, по скольку там была кнопка "выход", я понимаю что проблема в том что оно проходит просто все if но не понимаю как правильно сделать. 2. И второй вопрос как реализовать в graphabc что бы после нажатия (в моем случае на кнопку "Правила") по верх моего окна, открывался txt файл, сообственно с самими правилами) Код ниже, но работать у вас не будет из-за отсутствия тех файлов (картинок) которые сообственно используються в программе. Создайте просто файлы с таким и же названиям)
uses
  graphabc, events, ABCObjects;
 
procedure MouseDown(x, y, mb: integer);
label 1, 2;
var
  n: picture;
  t: text;
  a: string;
 
begin
  1: n := Picture.Create('Bomberman.bmp');
  n.Load('Bomberman.jpg');
  n.Draw(0, 0);
  SetWindowTitle('Bomberman');
  SetWindowWidth(1279);
  SetWindowHeight(720);
  CenterWindow;
  rectangle(560, 400, 770, 480 );
  rectangle(560, 500, 770, 580 );
  rectangle(560, 600, 770, 680 );
  SetFontSize(35);
  Setfontstyle(fsBoldItalic);
  floodfill(561, 401, clGray);
  floodfill(561, 501, clGray);
  floodfill(561, 601, clGray);
  setbrushcolor(clGray);
  textout(575, 417, 'Играть');
  textout(565, 517, 'Правила');
  textout(588, 617, 'Выход');
  
  if mb = 1 then if x > 560 then if x < 770 then if y > 400 then if y < 480 then begin
            ClearWindow;
            n := Picture.Create('Bomberman.bmp');
            n.Load('Bomberman.jpg');
            n.Draw(0, 0);
            rectangle(560, 400, 770, 480 );
            rectangle(560, 500, 770, 580 );
            rectangle(560, 600, 770, 680 );
            SetFontSize(35);
            Setfontstyle(fsBoldItalic);
            floodfill(561, 401, clGray);
            floodfill(561, 501, clGray);
            floodfill(561, 601, clGray);
            setbrushcolor(clGray);
            textout(588, 617, 'Назад');
            if mb = 1 then if x > 560 then if x < 770 then if y > 400 then if y < 480 then begin end;
            if mb = 1 then if x > 560 then if x < 770 then if y > 500 then if y < 580 then begin end;
            if mb = 1 then if x > 560 then if x < 770 then if y > 600 then if y < 680 then begin goto 1 end;
          end;
  if mb = 1 then if x > 560 then if x < 770 then if y > 500 then if y < 580 then begin
          {  assign(t, 'правила.txt');
            reset(t);
            textout(1, 1, t);
            close(t); }
          end;
  if mb = 1 then if x > 660 then if x < 770 then if y > 600 then if y < 680 then begin
            Window.Close;
          end;
end;
 
 
 
var
  n: picture;
 
 
begin
  OnMouseDown := MouseDown;
  n := Picture.Create('Bomberman.bmp');
  n.Load('Bomberman.jpg');
  n.Draw(0, 0);
  SetWindowTitle('Bomberman');
  SetWindowWidth(1279);
  SetWindowHeight(720);
  CenterWindow;
  rectangle(560, 400, 770, 480 );
  rectangle(560, 500, 770, 580 );
  rectangle(560, 600, 770, 680 );
  SetFontSize(35);
  Setfontstyle(fsBoldItalic);
  floodfill(561, 401, clGray);
  floodfill(561, 501, clGray);
  floodfill(561, 601, clGray);
  setbrushcolor(clGray);
  textout(575, 417, 'Играть');
  textout(565, 517, 'Правила');
  textout(588, 617, 'Выход');
  
  
  
end.

Код к задаче: «Реализовать навигацию по пунктам меню - PascalABC.NET»

textual
Execute('Ваш путь');

7   голосов, оценка 4.714 из 5


СОХРАНИТЬ ССЫЛКУ