Найти в Дзене

Проектирование приложения «Построй предложение» в Lazarus

Постановка задачи, цель и назначение разрабатываемого приложения
Условие задачи:
Игра «Построй предложение». Цель – собрать слова в предложение (например, на иностранном языке). Количество собираемых предложений – 2-3. Аналог игры «Простой порядок» LearningApps.


Проектирование интерфейса приложения
На рисунке 1 показан интерфейс разрабатываемого приложения – вид основной рабочей формы на этапе проектирования.

Рисунок 1 – Интерфейс приложения. Этап проектирования
Рисунок 1 – Интерфейс приложения. Этап проектирования

Инструкция по использованию приложения

Приложение создано в среде разработки Lazarus. Основные компоненты, использованные при проектировании приложения: Label, Edit, Button.

При запуске приложения на экране появится основная форма (рисунок 2).

Рисунок 2 – Вид основной формы. Этап выполнения
Рисунок 2 – Вид основной формы. Этап выполнения

В данном приложение представлена игра «Построй предложение». Нужно из данных слов составить логичное предложение. Правильный порядок единственен, но можно его можно записать: строчными буквами, прописными буквами или как в предложении. И при разном написании счетчик все равно считает ответ правильным, если порядок соблюден. Слова вводятся по одному в «окошко» в нужном порядке.

Рисунок 3 – Вид при компилировании. Варианты правильного ответа.
Рисунок 3 – Вид при компилировании. Варианты правильного ответа.

Снизу есть счетчик, который подсчитывает количество правильных ответов. Если нарушен порядок слов в предложение, то это считается как ошибка.

Рисунок 4 – Работа счетчика. Правильное только 1 предложение.
Рисунок 4 – Работа счетчика. Правильное только 1 предложение.

Чтобы узнать количество правильных ответов, нужно нажать на кнопку «Проверить». При нажатии на кнопку в «Edit» выводится количество правильных ответов, от нуля до 3. Если правильных ответов будет меньше 3, то можно прям тут изменить свой ответ и снова нажать на кнопку, и количество посчитается с учетом новых данных.

Рисунок 4 – Повторная проверка. Перерасчет кол-ва правильных ответов.
Рисунок 4 – Повторная проверка. Перерасчет кол-ва правильных ответов.

Листинг

Листинг приложения

(шрифт Courier New, кегль – 10, междустрочный интервал - одинарный)

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,

ExtCtrls;

type

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;

Edit14: TEdit;

Edit15: TEdit;

Edit16: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

procedure Button1Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);

var k,x,y,i:integer;

begin

k:=0;

x:=0;

y:=0;

if ((Edit2.Text='Кролик') and (Edit3.Text='убегает') and (Edit4.Text='от') and (Edit5.Text='леопарда')) or

((Edit2.Text='кролик') and (Edit3.Text='убегает') and (Edit4.Text='от') and (Edit5.Text='леопарда')) or

((Edit2.Text='КРОЛИК') and (Edit3.Text='УБЕГАЕТ') and (Edit4.Text='ОТ') and (Edit5.Text='ЛЕОПАРДА'))

then

k:=1 else k:=0;

if ((Edit6.Text='На') and (Edit7.Text='столе') and (Edit8.Text='лежит') and (Edit9.Text='ароматный') and (Edit10.Text='рулет')) or

((Edit6.Text='на') and (Edit7.Text='столе') and (Edit8.Text='лежит') and (Edit9.Text='ароматный') and (Edit10.Text='рулет')) or

((Edit6.Text='НА') and (Edit7.Text='СТОЛЕ') and (Edit8.Text='ЛЕЖИТ') and (Edit9.Text='АРОМАТНЫЙ')and (Edit10.Text='РУЛЕТ'))

then

x:=1 else x:=0;

if ((Edit11.Text='Девочка') and (Edit12.Text='разглядывает') and (Edit13.Text='свое') and (Edit14.Text='отражение') and (Edit15.Text='в') and (Edit16.Text='зеркале')) or

((Edit11.Text='девочка') and (Edit12.Text='разглядывает') and (Edit13.Text='свое') and (Edit14.Text='отражение') and (Edit15.Text='в') and (Edit16.Text='зеркале')) or

((Edit11.Text='ДЕВОЧКА') and (Edit12.Text='РАЗГЛЯДЫВАЕТ') and (Edit13.Text='СВОЕ') and (Edit14.Text='ОТРАЖЕНИЕ') and (Edit15.Text='В') and (Edit16.Text='ЗЕРКАЛЕ'))

then

y:=1 else y:=0;

Edit1.Text:=IntToStr(k+x+y) ;

end;

end.