- •1 Аналітичний розділ
- •2 Побудова інформаційно-математичної моделі задачі
- •3 Алгоритм задачі
- •4 Визначення структури даних
- •5 Розробка інтерфейсу програми
- •6 Складання коду програми
- •7 Реалізація проекту у візуальному середовищі
- •8 Аналіз програми
- •9 Тестування програми
- •10 Інструкції з експлуатації програми
- •2. Фленов м.Е Библия Delphi . – к.: кнеу, 2000. – 200 с.
2. Фленов м.Е Библия Delphi . – к.: кнеу, 2000. – 200 с.
3. Культин Н.Б Самоучитель. Основы программирования в Delphi Пер с англ – СПБ.: БХВ. Петербург, 2009. – 800 с.:
4. Чиртик А. Н. Программирование в Delphi. Трюки и эффекты – К.: КНЕУ, 2008. – 574 с.:
Додаток А
Unit 1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls, Spin, ComCtrls, MPlayer, Unit2, Unit3;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Game1: TMenuItem;
Button1: TButton;
SpinButton1: TSpinButton;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Edit1: TEdit;
Image6: TImage;
Image7: TImage;
Image8: TImage;
TrackBar1: TTrackBar;
Label1: TLabel;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button2: TButton;
PopupMenu1: TPopupMenu;
Label9: TLabel;
Label10: TLabel;
Button3: TButton;
GroupBox2: TGroupBox;
Memo1: TMemo;
N1: TMenuItem;
Memo2: TMemo;
TrackBar2: TTrackBar;
Label11: TLabel;
procedure FormCreate(Sender: TObject);
procedure SpinButton1DownClick(Sender: TObject);
procedure SpinButton1UpClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpinEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Save;
procedure Load;
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TrackBar2Change(Sender: TObject);
procedure Game1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
player = record
imia:string[20];
rezult:integer;
end;
var
Form1: TForm1;
photo: array [1..6] of TBitmap;
imia:string;
suma,kosti_count:integer;
stavka_na_gru,stavka_na_kosti,money:integer;
kosti_num: array [1..6] of integer;
players:array[1..11] of player;
file_top: file of player;
implementation
{$R *.dfm}
procedure Delay(dwMilliseconds: Longint);
var
iStart, iStop, iDiff: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
sleep(10);
Application.ProcessMessages;
iDiff :=iStop-iStart;
until (iDiff) >= dwMilliseconds;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
kosti_count:=2;
for i:=1 to 6 do
begin
photo[i]:=TBitmap.Create();
photo[i].Width:=64;
photo[i].Height:=64;
photo[i].Canvas.CopyRect(Rect(0,0,64,64),Image7.Picture.Bitmap.Canvas,Rect((i-1)*64,0,(i-1)*64+64,64));
(FindComponent('Image' + IntToStr(i)) as TImage).Canvas.CopyRect(Rect(0,0,64,64),Image7.Picture.Bitmap.Canvas,Rect((i-1)*64,0,(i-1)*64+64,64));
end;
Image8.Picture.Bitmap:=photo[2];
Load;
end;
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
if kosti_count>2 then
begin
kosti_count:=kosti_count-1;
image8.Picture.Bitmap:=photo[kosti_count];
end;
end;
procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
if kosti_count<6 then
begin
kosti_count:=kosti_count+1;
image8.Picture.Bitmap:=photo[kosti_count];
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j,g:integer;
ar,ar1: array[1..6] of integer;
begin
TrackBar2.Enabled:=false;
Button2.Enabled:=false;
TrackBar1.Enabled:=false;
randomize;
suma:=0;
label9.Caption:= ' ';
Label3.Visible:=true;
Label3.Caption := 'Сума = '+IntToStr(suma);
ar[1]:=20; ar1[1]:=0;
ar[2]:=30; ar1[2]:=0;
ar[3]:=40; ar1[3]:=0;
ar[4]:=50; ar1[4]:=0;
ar[5]:=60; ar1[5]:=0;
ar[6]:=70; ar1[6]:=0;
for i:=1 to kosti_count do
begin
g:=random(5)+1;
(FindComponent('Image' + IntToStr(i)) as TImage).Visible := true;;
(FindComponent('Image' + IntToStr(i)) as TImage).Picture.Bitmap:=photo[g];
end;
j:=0;
while(j<ar[kosti_count])do
begin
for i:=1 to kosti_count do
begin
g:=random(5)+1;
if(ar1[i]<ar[i]) then
begin
(FindComponent('Image' + IntToStr(i)) as TImage).Picture.Bitmap:=photo[g];
kosti_num[i]:=g;
end;
ar1[i]:=ar1[i]+1;
if(ar1[i]=ar[i]) then
begin
suma:=suma+kosti_num[i];
Label3.Caption := 'Сума = '+IntToStr(suma);
end;
end;
j:=j+1;
Delay(150);
end;
if (stavka_na_kosti=suma) then
begin
money:=money+stavka_na_gru*4;
label9.Caption :='x4!!! +'+IntToStr(stavka_na_gru*4);
label9.Visible:=true;
end
else
begin
if ((stavka_na_kosti<=kosti_count*3) and (suma<kosti_count*3)) then
begin
money:=money+stavka_na_gru;
label9.Caption :=' +'+IntToStr(stavka_na_gru);
label9.Visible:=true;
end
else
if ((stavka_na_kosti>kosti_count*3) and (suma>kosti_count*3)) then
begin
money:=money+stavka_na_gru;
label9.Caption :=' +'+IntToStr(stavka_na_gru);
label9.Visible:=true;
end
else
begin
money:=money-stavka_na_gru;
label9.Caption :=' -'+IntToStr(stavka_na_gru);
label9.Visible:=true;
end;
end;
label7.Caption:=intToStr(money)+'$';
if(money<>0) then
begin
TrackBar2.Enabled:=true;
TrackBar1.Enabled:=true;
TrackBar2.Position:=trunc(money/2);
TrackBar2.Max:=money;
TrackBar1.Position:=kosti_count;
Button2.Enabled:=true;
end
else
begin
label2.Visible:=false;
label3.Visible:=false;
label4.Visible:=false;
label8.Visible:=false;
label9.Visible:=false;
label11.Visible:=false;
TrackBar2.Visible:=false;
Button2.Visible:=false;
TrackBar1.Visible:=false;
for i:=1 to kosti_count do
(FindComponent('Image'+IntToStr(i)) as TImage).Visible:=false;
Label10.Caption:=' Програш!!!';
end;
end;
procedure TForm1.SpinEdit1KeyPress(Sender: TObject; var Key: Char);
begin
Key := #0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
Button1.Visible:=false;
Button3.Visible:=true;
SpinButton1.Enabled:=false;
Edit1.Enabled:=false;
label2.Visible:=true;
label4.Visible:=true;
label8.Visible:=true;
label11.Visible:=true;
//SpinEdit1.Visible:=true;
TrackBar2.Visible:=true;
SpinButton1.Visible:=true;
Button2.Visible:=true;
Button2.Enabled:=true;
TrackBar1.Visible:=true;
TrackBar1.Max:=kosti_count*6;
TrackBar1.Min:=kosti_count;
imia:=Edit1.text;
money:=30;
TrackBar2.Max:=money;
label7.Caption:=intToStr(money)+'$';
stavka_na_gru:=15;
TrackBar2.Position:=stavka_na_gru;
Label9.Caption:='';
Label10.Caption:='';
TrackBar1.Position:=kosti_count;
for i:=1 to kosti_count do
(FindComponent('Image'+IntToStr(i)) as TImage).Visible:=false;
TrackBar1.Enabled:=true;
TrackBar2.Enabled:=true;
save;
load;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
stavka_na_kosti:=TrackBar1.Position;
Label2.Caption:=IntToStr(stavka_na_kosti);
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if (money=1) then
//SpinEdit1.Value:=1;
TrackBar2.Position:=1;
if (money=0) then
begin
//SpinEdit1.MinValue:=0;
//SpinEdit1.Value:=0;
TrackBar2.Min:=0;
TrackBar2.Position:=0;
end;
//stavka_na_gru:=SpinEdit1.Value;
stavka_na_gru:=TrackBar2.Position;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
save;
load;
button1.Visible:=true;
SpinButton1.Enabled:=true;
Edit1.Enabled:=true;
label2.Visible:=false;
label3.Visible:=false;
label4.Visible:=false;
label8.Visible:=false;
label9.Visible:=false;
label11.Visible:=false;
//SpinEdit1.Visible:=false;
TrackBar2.Visible:=false;
Button2.Visible:=false;
TrackBar1.Visible:=false;
for i:=1 to kosti_count do
(FindComponent('Image'+IntToStr(i)) as TImage).Visible:=false;
end;
Procedure TForm1.save;
var i,j:integer;
zapus:player;
begin
players[11].imia:=imia;
players[11].rezult:=money;
for i:=1 to 10 do
for j:=1 to 10 do
if (players[j].rezult<players[j+1].rezult) then
begin
zapus:=players[j];
players[j]:=players[j+1];
players[j+1]:=zapus;
end;
AssignFile(file_top,'data.dat');
Rewrite(file_top);
for i:=1 to 10 do
begin
Write(file_top,players[i]);
end;
CloseFile(file_top);
end;
procedure TForm1.Load;
var i:integer;
begin
if FileExists('data.dat') then
begin
AssignFile(file_top,'data.dat');
reset(file_top);
for i:=1 to 10 do
begin
read(file_top,players[i]);
end;
CloseFile(file_top);
memo1.Lines.Clear;
memo2.Lines.Clear;
for i:=1 to 10 do
begin
Memo1.Lines.Add(players[i].imia);
Memo2.Lines.Add(intToStr(players[i].rezult));
end;
end
else
begin
for i:=1 to 10 do
begin
players[i].imia:='none';
players[i].rezult:=0;
end;
memo1.Lines.Clear;
memo2.Lines.Clear;
for i:=1 to 10 do
begin
Memo1.Lines.Add(players[i].imia);
Memo2.Lines.Add(intToStr(players[i].rezult));
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Save;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Load;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
save;
end;
procedure TForm1.TrackBar2Change(Sender: TObject);
begin
if (money=1) then
TrackBar2.Position:=1;
if (money=0) then
begin
TrackBar2.Min:=0;
TrackBar2.Position:=0;
end;
stavka_na_gru:=TrackBar2.Position;
label11.Caption:=IntToStr(stavka_na_gru);
end;
procedure TForm1.Game1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form3.ShowModal;
end;
end.
Unit 2
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, jpeg, ExtCtrls;
type
TForm2 = class(TForm)
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
end.
Unit 3
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
end.