Lazarus програма Вгадай число

Створюємо програму Вгадай число

Частина 1

Комп’ютер буде загадувати випадкове число, а користувач повинен буде його вгадати. Спочатку розмістимо мінімальну кількість необхідних компонентів для роботи програми. Надалі будемо додавати компоненти в міру необхідності.

Перший елемент TEdit, нам необхідний для того, щоб користувач міг ввести число з клавіатури. Вилучимо текст TEdit, для цього зайдемо в властивості Текст і вилучимо його значення.

Далі створюємо кнопку. Натискаючи на неї ми будемо перевіряти введене користувачем число з числом, яке придумав комп’ютер. І третій елемент Label для виведення повідомлень програмою.

Частина 2

Наступний наш крок це написання програмного коду самої програми.

Спочатку, комп’ютер буде генерувати випадкове число. Ці команди повинні виконуватися при створенні нашої форми. Обираємо в Інспектор об’єктів нашу форму Form1, переходимо в Події, та обираємо подію OnCreate (Створення форми) і пишемо наступний код:

1
2
randomize;
x:=random (10);

randomize – ця функція дає можливість використовувати генератор випадкових чисел.

x: = random (10) – вводимо змінну х і присвоюємо їй випадкове значення від 0 до 10

Далі не забуваємо оголосити змінну х. Повідомляємо компілятору, що змінна Х у нас ціле число Integer.

Частина 3

Наша програма буде працювати наступним чином. Користувач вводить число і натискає на кнопку. Після цього програма перевіряє вгадав користувач число чи ні.

Виділяємо кнопку. Переходимо в події. Вибираємо Подію OnClick.

Пишемо код

1
2
3
4
5
 if x = StrToInt (Edit1.Text)
  then Label1.Caption:='Ви вгадали число'
  else   if x > StrToInt (Edit1.Text)
  then Label1.Caption:='Число більше'
  else Label1.Caption:='Число меньше';

Якщо Х (це наше випадкове число) дорівнює значенню яке ввів користувач StrToInt (ця функція бере значення із Edit1 як ціле число), тоді виводимо повідомлення “Ви вгадали число”, інакше якщо Х більше за те число, яке ми ввели, тоді виводимо повідомлення, що число більше, інакше виводимо повідомлення, що число менше

Перевіряємо роботу нашої програми, натискаємо на кнопку Виконати (зелений трикутник)

Так програма скомпільована успішно.

Перевіряємо її роботу. Бачимо, що програма у нас працює

Частина 4

Що ще можна зробити у цій програмі? Перейменуємо кнопку, замість Button1 надрукуємо Ок.
Додамо назву у горі програми за допомогою Label. Напишемо Вгадай число
Щоб збільшити розмір тексту, знайдемо властивість Font і значення Size змінимо на 20.

Тепер ми можемо додати кількість спроб для вгадування числа.
Для цього ми введемо ще одну змінну А. І кожен раз при натисканні кнопки Ок наша змінна А буде збільшуватися на 1 і далі робимо перевірку.

if a = 3 then begin Button1.Enabled:=False;

Якщо А дорівнює 3. Даємо три спроби користувачу щоб вгадати число, тоді наш користувач програв і ми робимо нашу кнопку неактивною.

Label1.Caption:= (‘Ви програли, я загадав число ‘ + IntToStr(x)) end;

Так як у нас команд більше ніж одна, то додаємо з початку begin і у кінці end.
При створенні форми ми присвоюємо значення змінної А 1
Виконуємо програму. Бачимо помилку, пропущено знак присвоювання :=
Знову виконуємо програму.
Так вводимо число 5. Зразу вгадав число. Вводимо 1. Ок. Ви програли.
Тобто виходить що тільки дві спроби надається. Змінимо первинне значення змінної А на нуль.
Виконуємо програму. Перша спроба, друга спроба і третя спроба. Ви програли 🙂

Частина 5

Добре було би зробити, щоб, якщо користувач програв, то програма сказала яке число було загадане. Для цього ми дописуємо + IntToStr(x) (перевести ціле число у рядок) і додаємо пропуск, щоб не друкувати ці значення разом. Зупиняємо програму і виконуємо програму ще раз.

Допишемо Я загадав число і він виведе це число.
Ще потрібно додати кнопку меню, при натисканні на неї ми могли розпочати гру з початку.
Для цього використовуємо Меню. Клікаємо правою клавішею мишки на ньому. Обираємо NewItem1. Значення Caption змінюємо на Нова гра. В події обираємо Onclick

1
2
3
4
Button1.Enabled:=True;
  Edit1.Text:='';
   x:=random (10);
  a:=0;

Робимо кнопку Ок активною. Значення Edit1.text робимо пустим. І генеруємо нове число і потрібно обнулити наш лічильник.

Дивимось, що у нас вийшло.

Ось у нас з’явилось меню Нова гра. Перевіряємо роботу. Натискаємо Нова гра. Ага, забули очистити дане повідомлення. Давайте виправимо цю помилку. І зробимо деякі переміщення.
Знову перевіряємо нашу роботу.

Ок. Усе працює

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;  x,a:integer;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
  x:=random (10);
  a:=0;
end;
 
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
 Button1.Enabled:=True;
  Edit1.Text:='';
   x:=random (10);
  a:=0;
  Label1.Caption:=''
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
  if x = StrToInt (Edit1.Text)
  then Label1.Caption:='Ви вгадали число'
  else   if x > StrToInt (Edit1.Text)
  then Label1.Caption:='Число більше'
  else Label1.Caption:='Число меньше';
  a:=a+1;
  if a = 3 then begin Button1.Enabled:=False;
    Label1.Caption:= ('Ви програли, я загадав число ' + IntToStr(x)) end;
end;
 
end.