Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РПЗ.doc
Скачиваний:
4
Добавлен:
15.09.2019
Размер:
1.61 Mб
Скачать

3. Реализация

3.1 Блок-схемы алгоритмов программы

Блок-схема алгоритма дачи взятки и проверки денег представлены на рисунках 3.1 и 3.2 соответственно.

Рис 3.1 процедуры TForm2.ButtonVzyatkaClick

Рис 3.2 функции TForm2.ProverkaMoney

3.2 Тестирование

В данной программе наиболее критическими являются ошибки, возникающие при ввода данных взятки и подделки бюллетеней, за этот процессы отвечают модули ButtonVzyatkaClick и ButtonNasClick. Так как их реализация обрабоки ошибок одинакова, то достаточно протестировать один модуль.

  • Объект испытания: ButtonVzyatkaClick.

  • Цель испытания: выявить все возможные варианты неправильного ввода и предусмотреть их ввод пользователем.

  • Требования к модулю: данный модуль проверяет правильность ввода данных и работает с ними в дальнейшем. Вводимые данные не могут быть отрицательными, могут содержать в себе только цифры, количество введенных символов не должно превышать семи.

  • Метод испытаний: модуль тестировался методом черного ящика.

  1. Нормальными условиями для данного модуля является положительное десятичное число. При нормальных условиях модуль выдаёт правильный результат. Результаты приведены в таблице 3.31.

Таблица 3.31 Тестирование при нормальных условиях

Входные данные

Сбой в работе

15646

нет

1222

нет

232456

нет

  1. Граничным значением для данного модуля является ввод строки c 7 символами, при данных условиях алгоритм работает верно. При вводе малого количества цифр модуль выдаёт правильный результат. Результаты приведены в таблице 3.32.

Таблица 3.32 Тестирование при граничных значениях

Входные данные

Сбой в работе

9999999

нет

0

нет

  1. Экстремальными данными является отсутствие введенных символов. Результаты приведены в таблице 3.33.

Таблица 3.33 Тестирование при экстремальных данных

Входные данные

Сбой в работе

Сообщение: Введите данные!

В ходе тестирования серьёзных ошибок (приводящих к досрочному выходу из программы) не было выявлено. Все крайние ситуации, возникающие при вводе данных, были предусмотрены. Программа работает верно, во всех выше изложенных ситуациях и возвращает правильный результат.

Заключение

В ходе выполнения работы была подробно рассмотрена предметная область, в результате чего были выделены объекты, их свойства и методы. Были учтены пределы изменения числовых значений, что сделало программу более надежной. Выполнили все задачи, поставленные во введении. Получили гибкую систему, которую можно надстраивать и пополнять новыми возможностями.

Приложение a Документированный текст программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, ComCtrls, jpeg, Xpman, StdCtrls;

type

TForm1 = class(TForm)

Image1: TImage;

ProgressBar1: TProgressBar;

Timer1: TTimer;

Label1: TLabel;

procedure FormActivate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure exits;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

extglobal:boolean;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);

begin

Timer1.Enabled:=true;

extglobal:=false;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if ProgressBar1.Position>=ProgressBar1.Max then begin

Timer1.Enabled:=false;

form1.Hide;

Form2.Visible:=true;

end;

ProgressBar1.Position:=ProgressBar1.Position+25;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Action:=caNone;

exits;

if extglobal then

Action:=caFree;

end;

procedure TForm1.exits;

var ext:byte;

begin

ext:=MessageDlg('Вы действительно хотите выйти?',mtCustom,mbOKCancel,1);

if ext=mrOk then

extglobal:=true;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, jpeg, OleCtrls, MARQUEELib_TLB,

Buttons, XPMan, TeeProcs, TeEngine, Chart, Series, Menus, AppEvnts;

type

TFirstClass=class

protected

procedure SetValue(NewValue:integer); virtual; abstract;

function GetValue:integer; virtual; abstract;

end;

Tokrug=class (TFirstClass)

public

Fnaselenie:integer;

FMaskNas:boolean;

FMaskMinVs:boolean;

FLider:integer;

Floyalnost:byte;

FReklama:byte;

FMinimalMoney:integer;

FAct:array[0..5] of boolean;

procedure SetValue(NewValue:integer); override;

function GetValue:integer; override;

property Lider:integer read GetValue write SetValue;

end;

TKandidat=class(TFirstClass)

public

FNominal:integer;

FReiting:byte;

procedure SetValue(NewValue:integer); override;

function GetValue:integer; override;

procedure SetReiting(NewValue:byte);

function GetReiting:byte;

function ProverkaMoney:boolean;

property Nominal:integer read GetValue write SetValue;

property Reiting:byte read GetReiting write SetReiting;

end;

TZhylik=class(TKandidat)

private

procedure SetReiting(NewValue:byte);

property Reiting:byte read GetReiting write SetReiting;

end;

TForm2 = class(TForm)

BackGround: TImage;

Map: TImage;

Marquee1: TMarquee;

XPManifest1: TXPManifest;

Graphics: TChart;

Series1: TBarSeries;

StartMenu: TRadioGroup;

MainMenu1: TMainMenu;

GameMenu: TMenuItem;

StartBtn: TMenuItem;

ExitBtn: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

ButtonStart: TButton;

LabelKarta: TLabel;

Portret: TImage;

InfoOfOkrug: TGroupBox;

MenuOfActions: TRadioGroup;

Dalnvostok: TImage;

Sibir: TImage;

Ural: TImage;

Privolga: TImage;

N_W: TImage;

Centre: TImage;

Sorth: TImage;

Naselenie: TLabeledEdit;

Lider: TLabeledEdit;

Loyalnost: TLabeledEdit;

MinVzyatka: TLabeledEdit;

WindowOfInfo: TGroupBox;

Kapital: TLabeledEdit;

Reiting: TLabeledEdit;

ButtonOfActions: TButton;

ButtonDecDays: TSpeedButton;

OstatokDays: TLabel;

OstatokXodov: TLabel;

LabelDay: TLabel;

N1: TMenuItem;

EndBtn: TMenuItem;

ReklamaGroupBox: TGroupBox;

ReklamaOne: TRadioButton;

ReklamaTwo: TRadioButton;

ButtonReklama: TButton;

VzytkaGroupBox: TGroupBox;

ButtonVzyatka: TButton;

Vzyatka: TLabeledEdit;

VzyatkaLabel: TLabel;

NasGroupBox: TGroupBox;

Nas: TLabel;

ButtonNas: TButton;

NasVzytka: TLabeledEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Image1: TImage;

Timer1: TTimer;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCreate(Sender: TObject);

procedure Graphic;

procedure ExitBtnClick(Sender: TObject);

procedure StartBtnClick(Sender: TObject);

procedure ButtonStartClick(Sender: TObject);

procedure OkrugRandom;

procedure DalnvostokDblClick(Sender: TObject);

procedure SibirDblClick(Sender: TObject);

procedure UralDblClick(Sender: TObject);

procedure N_WDblClick(Sender: TObject);

procedure PrivolgaDblClick(Sender: TObject);

procedure CentreDblClick(Sender: TObject);

procedure SorthDblClick(Sender: TObject);

function NameOfKandidat(index:integer):string;

procedure ButtonDecDaysClick(Sender: TObject);

procedure ButtonOfActionsClick(Sender: TObject);

procedure EndBtnClick(Sender: TObject);

function ProverkaMoney(summa:integer; okr:Tokrug):boolean;

procedure GetBonus(Plus:boolean);

procedure Actions(okr:tOkrug);

procedure xod;

procedure ButtonReklamaClick(Sender: TObject);

procedure UpDates(okr:tokrug);

procedure VzyatkaKeyPress(Sender: TObject; var Key: Char);

procedure ButtonVzyatkaClick(Sender: TObject);

function NameOfOkrug(index:integer):Tokrug;

procedure ButtonNasClick(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const bonus=2;

var

Form2: TForm2;

Zhirik,Proxor,Zugan,Kandidat1:TKandidat;

Pytin,kandidat2:TZhylik;

Centr,Vostok,Sybir,S_Zap,Ug,Yral,Volga:Tokrug;

Player,okrug,day,hod:byte;

act0,act1,act2,act3,act4,ac5,zhyl:boolean;

reklama:string;

//Округа: 1:Южный, 2:Центр, 3:Север, 4:Волга, 5:Урал, 6:Сибирь, 7:Восток

implementation

uses Unit1, Unit3, Math, Unit4;

{$R *.dfm}

procedure TForm2.GetBonus(Plus:boolean);

var k1,k2:integer;

begin

repeat

k1:=random(3);

k2:=random(3);

until (k1<>Player) and (k1<>k2) and (k2<>Player);

case k1 of

0:if Plus then Pytin.Reiting:=Pytin.Reiting-bonus-1 else Pytin.Reiting:=Pytin.Reiting-bonus+1;

1:if Plus then Proxor.Reiting:=Proxor.Reiting-bonus+1 else Proxor.Reiting:=Proxor.Reiting+bonus-1;

2:if Plus then Zhirik.Reiting:=Zhirik.Reiting-bonus+1 else Zhirik.Reiting:=Zhirik.Reiting+bonus-1;

3:if Plus then Zugan.Reiting:=Zugan.Reiting-bonus+1 else Zugan.Reiting:=Zugan.Reiting+bonus-1;

end;

case k2 of

0:if Plus then Pytin.Reiting:=Pytin.Reiting-bonus-1 else Pytin.Reiting:=Pytin.Reiting-bonus+1;

1:if Plus then Proxor.Reiting:=Proxor.Reiting-bonus+1 else Proxor.Reiting:=Proxor.Reiting+bonus-1;

2:if Plus then Zhirik.Reiting:=Zhirik.Reiting-bonus+1 else Zhirik.Reiting:=Zhirik.Reiting+bonus-1;

3:if Plus then Zugan.Reiting:=Zugan.Reiting-bonus+1 else Zugan.Reiting:=Zugan.Reiting+bonus-1;

end;

case Player of

0:if Plus then Pytin.Reiting:=Pytin.Reiting+bonus else Pytin.Reiting:=Pytin.Reiting-bonus-4;

1:if Plus then Proxor.Reiting:=Proxor.Reiting+bonus else Proxor.Reiting:=Proxor.Reiting-bonus;

2:if Plus then Zhirik.Reiting:=Zhirik.Reiting+bonus else Zhirik.Reiting:=Zhirik.Reiting-bonus;

3:if Plus then Zugan.Reiting:=Zugan.Reiting+bonus else Zugan.Reiting:=Zugan.Reiting-bonus;

end;

end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Action:=caNone;

Form1.Close;

end;

procedure TForm2.FormCreate(Sender: TObject);

begin

Naselenie.Text:='';

Lider.Text:='';

Loyalnost.Text:='';

MinVzyatka.Text:='';

VzyatkaLabel.Caption:='Важно! Размер взятки должен быть выше '+#10+' величины минимальной взятки! ';

Nas.Caption:='Важно! Количество биллютеней должно быть '+#10+' выше величины населения! ';

zhyl:=false;

hod:=3;

day:=7;

OstatokDays.Caption:='До выборов осталось '+inttostr(day)+' дней ';

Application.Title:='Выборы 2012';

Marquee1.MarqueeDisplayText:='Здесь должна быть ваша реклама';

Centr:=Tokrug.Create;

S_Zap:=Tokrug.Create;

Ug:=Tokrug.Create;

Volga:=Tokrug.Create;

Yral:=Tokrug.Create;

Sybir:=Tokrug.Create;

Vostok:=Tokrug.Create;

WindowOfInfo.Visible:=false;

MenuOfActions.Visible:=false;

ButtonOfActions.Visible:=false;

LabelKarta.Visible:=false;

Map.Visible:=false;

Portret.Visible:=false;

InfoOfOkrug.Visible:=false;

Marquee1.Visible:=false;

ButtonStart.Visible:=false;

Graphics.Visible:=false;

OstatokDays.Visible:=false;

OstatokXodov.Visible:=false;

ButtonDecDays.Visible:=false;

LabelDay.Visible:=false;

OkrugRandom;

Marquee1.Enabled:=false;

end;

procedure TForm2.Graphic;

begin

with Series1 do begin

Clear;

Add(Pytin.FReiting,'Путин',clBlue);

Add(Zugan.FReiting,'Зюганов',clRed);

Add(Zhirik.FReiting,'Жириновский',clYellow);

Add(Proxor.FReiting,'Прохоров',clGreen);

end;

end;

procedure TForm2.ExitBtnClick(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm2.StartBtnClick(Sender: TObject);

begin

Image1.Visible:=false;

Label1.Visible:=false;

Label2.Visible:=false;

Label3.Visible:=false;

Label4.Visible:=false;

StartMenu.Visible:=true;

ButtonStart.Visible:=true;

EndBtn.Enabled:=true;

StartBtn.Enabled:=false;

end;

procedure TForm2.ButtonStartClick(Sender: TObject);

var dir:string;

begin

FormCreate(Sender);

dir:=ExtractFilePath(Application.ExeName);

OstatokDays.Visible:=true;

OstatokXodov.Visible:=true;

ButtonDecDays.Visible:=true;

LabelDay.Visible:=true;

ButtonStart.Visible:=false;

StartMenu.Visible:=false;

Pytin:=TZhylik.Create;

with Pytin do begin

Nominal:=1000000;

Reiting:=33;

end;

Proxor:=TKandidat.Create;

with Proxor do begin

Nominal:=750000;

Reiting:=20;

end;

Zhirik:=TKandidat.Create;

with Zhirik do begin

Nominal:=650000;

Reiting:=20;

end;

Zugan:=TKandidat.Create;

with Zugan do begin

Nominal:=700000;

Reiting:=25;

end;

case StartMenu.ItemIndex of

0: begin Portret.Picture.LoadFromFile(dir+'/Путин.jpg'); zhyl:=true; kandidat2:=Pytin end;

1: begin Portret.Picture.LoadFromFile(dir+'/Прохоров.jpg'); Kandidat1:=Proxor; end;

2: begin Portret.Picture.LoadFromFile(dir+'/Жириновский.jpg'); Kandidat1:=Zhirik; end;

3: begin Portret.Picture.LoadFromFile(dir+'/Зюганов.jpg'); Kandidat1:=Zugan; end;

end;

Player:=StartMenu.ItemIndex;

WindowOfInfo.Visible:=true;

LabelKarta.Visible:=true;

Map.Visible:=true;

Portret.Visible:=true;

Marquee1.Visible:=true;

InfoOfOkrug.Visible:=true;

if zhyl then begin

Kapital.Text:=InttoStr(Kandidat2.Nominal);

Reiting.Text:=IntToStr(Kandidat2.Reiting);

end else begin

Kapital.Text:=InttoStr(Kandidat1.Nominal);

Reiting.Text:=IntToStr(Kandidat1.Reiting);

end;

case player of

0: begin

ReklamaOne.Caption:='Великой стране – сильный лидер! ';

ReklamaTwo.Caption:='Великой стране – достойное будущее! ';

end;

1: begin

ReklamaOne.Caption:='Новый президент – новая Россия! ';

ReklamaTwo.Caption:='Требуйте большего! ';

end;

2: begin

ReklamaOne.Caption:='Жириновский. Или будет хуже. ';

ReklamaTwo.Caption:='Жириновский. И будет лучше. ';

end;

3: begin

ReklamaOne.Caption:='Власть и собственность – народу! ';

ReklamaTwo.Caption:='4 марта выбираем Зюганова! ';

end;

end;

end;

procedure TForm2.OkrugRandom;

var i:integer;

begin

randomize;

with Centr do begin

for i:=0 to 5 do

Centr.FAct[i]:=false;

Lider:=random(4);

FMaskNas:=true;

FMaskMinVs:=true;

Floyalnost:=0;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);

FMinimalMoney:=RandomRange(100000,400000);

end;

with S_Zap do begin

for i:=0 to 5 do

S_Zap.FAct[i]:=false;

Lider:=random(4);

FMaskNas:=true;

FMaskMinVs:=true;

Floyalnost:=0;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);

FMinimalMoney:=RandomRange(100000,400000);

end;

with Ug do begin

for i:=0 to 5 do

Ug.FAct[i]:=false;

Lider:=random(4);

FMaskNas:=true;

FMaskMinVs:=true;

Floyalnost:=0;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);;

FMinimalMoney:=RandomRange(100000,400000);

end;

with Volga do begin

for i:=0 to 5 do

Volga.FAct[i]:=false;

Lider:=random(4);

Floyalnost:=0;

FMaskNas:=true;

FMaskMinVs:=true;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);

FMinimalMoney:=RandomRange(100000,400000);

end;

with Yral do begin

for i:=0 to 5 do

Yral.FAct[i]:=false;

Lider:=random(4);

Floyalnost:=0;

FMaskNas:=true;

FMaskMinVs:=true;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);

FMinimalMoney:=RandomRange(100000,400000);

end;

with Sybir do begin

for i:=0 to 5 do

Sybir.FAct[i]:=false;

Lider:=random(4);

Floyalnost:=0;

FMaskNas:=true;

FMaskMinVs:=true;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);

FMinimalMoney:=RandomRange(100000,400000);

end;

with Vostok do begin

for i:=0 to 5 do

Vostok.FAct[i]:=false;

Lider:=random(4);

Floyalnost:=0;

FMaskNas:=true;

FMaskMinVs:=true;

FReklama:=random(20);

Fnaselenie:=RandomRange(50000,250000);

FMinimalMoney:=RandomRange(100000,400000);

end;

end;

{ Tokrug }

function Tokrug.GetValue: integer;

begin

Result:=FLider;

end;

procedure Tokrug.SetValue(NewValue: integer);

begin

FLider:=NewValue;

end;

{ TKandidat }

function TKandidat.GetValue: integer;

begin

Result:=FNominal;

end;

function TKandidat.GetReiting: byte;

begin

Result:=FReiting;

end;

procedure TKandidat.SetValue(NewValue: integer);

begin

FNominal:=NewValue;

end;

procedure TKandidat.SetReiting(NewValue: byte);

begin

FReiting:=NewValue;

end;

function TKandidat.ProverkaMoney: boolean;

begin

if zhyl then begin

if Kandidat2.Nominal>0 then

Result:=true else Result:=false;

end else begin

if Kandidat1.Nominal>0 then

Result:=true else Result:=false;

end

end;

{ TZhylik }

procedure TZhylik.SETREITING(NewValue:byte);

begin

FReiting:=NewValue+2;

end;

procedure TForm2.DalnvostokDblClick(Sender: TObject);

begin

if (Vostok.FMaskNas) and (Vostok.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (Vostok.FMaskMinVs) and (Vostok.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(Vostok.Fnaselenie);

Lider.Text:=NameOfKandidat(Vostok.Lider);

Loyalnost.Text:=inttostr(Vostok.Floyalnost);

MinVzyatka.Text:=IntToStr(Vostok.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Дальневосточный округ)';

okrug:=7;

end;

procedure TForm2.SibirDblClick(Sender: TObject);

begin

if (Sybir.FMaskNas) and (Sybir.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (Sybir.FMaskMinVs) and (Sybir.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(Sybir.Fnaselenie);

Lider.Text:=NameOfKandidat(Sybir.Lider);

Loyalnost.Text:=inttostr(Sybir.Floyalnost);

MinVzyatka.Text:=IntToStr(Sybir.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Сибирский округ)';

okrug:=6;

end;

procedure TForm2.UralDblClick(Sender: TObject);

begin

if (Yral.FMaskNas) and (Yral.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (Yral.FMaskMinVs) and (Yral.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(Yral.Fnaselenie);

Lider.Text:=NameOfKandidat(Yral.Lider);

Loyalnost.Text:=inttostr(Yral.Floyalnost);

MinVzyatka.Text:=IntToStr(Yral.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Уральский округ)';

okrug:=5;

end;

procedure TForm2.N_WDblClick(Sender: TObject);

begin

if (S_Zap.FMaskNas) and (S_Zap.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (S_Zap.FMaskMinVs) and (S_Zap.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(S_Zap.Fnaselenie);

Lider.Text:=NameOfKandidat(S_Zap.Lider);

Loyalnost.Text:=inttostr(S_Zap.Floyalnost);

MinVzyatka.Text:=IntToStr(S_Zap.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Северо-Западный округ)';

okrug:=3;

end;

procedure TForm2.PrivolgaDblClick(Sender: TObject);

begin

if (Volga.FMaskNas) and (Volga.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (Volga.FMaskMinVs) and (Volga.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(Volga.Fnaselenie);

Lider.Text:=NameOfKandidat(Volga.Lider);

Loyalnost.Text:=inttostr(Volga.Floyalnost);

MinVzyatka.Text:=IntToStr(Volga.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Приволжский округ)';

okrug:=4;

end;

procedure TForm2.CentreDblClick(Sender: TObject);

begin

if (Centr.FMaskNas) and (Centr.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (Centr.FMaskMinVs) and (Centr.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(Centr.Fnaselenie);

Lider.Text:=NameOfKandidat(Centr.Lider);

Loyalnost.Text:=inttostr(Centr.Floyalnost);

MinVzyatka.Text:=IntToStr(Centr.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Центральный округ)';

okrug:=2;

end;

procedure TForm2.SorthDblClick(Sender: TObject);

begin

if (Ug.FMaskNas) and (Ug.Floyalnost<50) then Naselenie.PasswordChar:='?' else

Naselenie.PasswordChar:=#0;

if (Ug.FMaskMinVs) and (Ug.Floyalnost<50) then MinVzyatka.PasswordChar:='?' else

MinVzyatka.PasswordChar:=#0;

Naselenie.Text:=Inttostr(Ug.Fnaselenie);

Lider.Text:=NameOfKandidat(Ug.Lider);

Loyalnost.Text:=inttostr(ug.Floyalnost);

MinVzyatka.Text:=IntToStr(Ug.FMinimalMoney);

ButtonOfActions.Visible:=true;

MenuOfActions.Visible:=true;

MenuOfActions.Caption:='Выберите действие (Южный округ)';

okrug:=1;

end;

function TForm2.NameOfKandidat(index: integer): string;

begin

case index of

0: Result:='Путин';

1: Result:='Прохоров';

2: Result:='Жириновский';

3: Result:='Зюганов';

end;

end;

procedure TForm2.ButtonDecDaysClick(Sender: TObject);

var btn:byte;

i:integer;

begin

if day=0 then begin EndBtnClick(Sender); exit; end;

btn:=MessageDlg('Вы уверены, что хотите завершить день?',mtInformation,mbOKCancel,1);

if btn=mrCancel then exit;

Dec(day);

hod:=3;

for i:=1 to 7 do begin

NameOfOkrug(i).FReklama:=random(1);

NameOfOkrug(i).FAct[0]:=false;

end;

if zhyl then begin kandidat2.Nominal:=kandidat2.Nominal+kandidat2.Reiting*10000; Kapital.Text:=inttostr(kandidat2.Nominal) end else

begin kandidat1.Nominal:=kandidat1.Nominal+kandidat1.Reiting*10000; Kapital.Text:=inttostr(kandidat1.Nominal) end;

MenuOfActions.Visible:=false;

ButtonOfActions.Visible:=false;

OstatokXodov.Caption:='Осталось '+inttostr(hod)+' хода ';

if day>4 then

OstatokDays.Caption:='До выборов осталось '+inttostr(day)+' дней ' else

if day>1 then

OstatokDays.Caption:='До выборов осталось '+inttostr(day)+' дня 'else

OstatokDays.Caption:='До выборов осталось '+inttostr(day)+' день ';

if day=0 then begin

OstatokDays.Caption:='Выборы сегодня! ';

Graphic;

Graphics.Visible:=true;

if zhyl then

if (kandidat2.Reiting>Proxor.Reiting) and (kandidat2.Reiting>Zhirik.Reiting) and (kandidat2.Reiting>Zugan.Reiting) then

ShowMessage('Поздравляем! Вы победили!!!') else

ShowMessage('Увы! Вы проиграли!') else

if Kandidat1.Reiting>Pytin.Reiting then

ShowMessage('Поздравляем! Вы победили!!!') else

ShowMessage('Увы! Вы проиграли!');

EndBtnClick(Sender);

end;

end;

procedure TForm2.ButtonOfActionsClick(Sender: TObject);

begin

if NameOfOkrug(okrug).Floyalnost=100 then begin

ShowMessage('Данный округ полностью поддерживает вас!');

exit;

end;

Actions(NameOfOkrug(okrug));

UpDates(NameOfOkrug(okrug));

end;

procedure TForm2.EndBtnClick(Sender: TObject);

var btn:integer;

begin

btn:=MessageDlg('Вы уверены, что хотите завершить игру?'+#10+'(Все данные будут потеряны)',mtInformation,[mbYes,mbNo],1);

if btn=mrNo then exit;

if btn=mrYes then begin

EndBtn.Enabled:=false;

StartBtn.Enabled:=true;

FormCreate(Sender);

Label1.Visible:=true;

Label2.Visible:=true;

Label3.Visible:=true;

Label4.Visible:=true;

Image1.Visible:=true;

StartMenu.Visible:=false;

end;

end;

function TForm2.ProverkaMoney(summa: integer; okr: Tokrug): boolean;

begin

if Player=okr.Lider then summa:=summa div 2;

if zhyl then begin

Kandidat2.Nominal:=Kandidat2.Nominal-summa;

if Kandidat2.Nominal<0 then begin

ShowMessage('Недостаточно средств для проведения данного действия!');

Result:=false;

Kandidat2.Nominal:=Kandidat2.Nominal+summa;

end else

Result:=true;

end else begin

Kandidat1.Nominal:=Kandidat1.Nominal-summa;

if Kandidat1.Nominal<0 then begin

ShowMessage('Недостаточно средств для проведения данного действия!');

Result:=false;

Kandidat1.Nominal:=Kandidat1.Nominal+summa;

end else

Result:=true;

end;

end;

procedure TForm2.Actions(okr: tOkrug);

begin

if hod=0 then begin

ShowMessage('Ходы кончились!'+#10+'Необходимо завершить день!');

exit;

end;

case MenuOfActions.ItemIndex of

0: begin

if okr.FAct[0] then begin ShowMessage('Данное действие уже было выполнено!'); exit end;

if not ProverkaMoney(50000,Okr) then exit;

MenuOfActions.Visible:=false;

ButtonOfActions.Visible:=false;

ReklamaGroupBox.Visible:=true;

ReklamaOne.Checked:=true;

okr.FAct[0]:=true;

xod;

end;

1: begin

if okr.FAct[1] then begin ShowMessage('Данное действие уже было выполнено!'); exit end;

if not ProverkaMoney(500000,okr) then exit;

ShowMessage('Население благодарно вам за помощь!');

GetBonus(true);

okr.Floyalnost:=okr.Floyalnost+25;

if NameOfOkrug(okrug).Floyalnost=100 then GetBonus(true);

okr.FAct[1]:=true;

xod;

end;

2: begin

if okr.FAct[2] then begin ShowMessage('Данное действие уже было выполнено!'); exit end;

xod;

MenuOfActions.Visible:=false;

VzytkaGroupBox.Visible:=true;

okr.FAct[2]:=true;

end;

3: begin

if okr.FAct[3] then begin ShowMessage('Данное действие уже было выполнено!'); exit end;

xod;

MenuOfActions.Visible:=false;

NasGroupBox.Visible:=true;

okr.FAct[3]:=true;

end;

4: begin

if okr.FAct[4] then begin ShowMessage('Данное действие уже было выполнено!'); exit end;

if not ProverkaMoney(250000,okr) then exit;

okr.FMaskNas:=false;

okr.FMaskMinVs:=false;

Naselenie.PasswordChar:=#0;

MinVzyatka.PasswordChar:=#0;

okr.FAct[4]:=true;

xod;

ShowMessage('Ваша компания успешно провела разведку');

end;

end;

end;

procedure TForm2.xod;

begin

Dec(hod);

if hod>1 then

OstatokXodov.Caption:='Осталось '+inttostr(hod)+' хода ' else

OstatokXodov.Caption:='Остался '+inttostr(hod)+' ход ';

end;

procedure TForm2.ButtonReklamaClick(Sender: TObject);

begin

if (ReklamaOne.Checked) and(NameOfOkrug(okrug).FReklama<10) then begin

Marquee1.MarqueeDisplayText:=ReklamaOne.Caption;

ShowMessage('Народ доволен вашей рекламой!');

NameOfOkrug(okrug).Floyalnost:=NameOfOkrug(okrug).Floyalnost+25;

GetBonus(true);

end else

if (ReklamaTwo.Checked) and(NameOfOkrug(okrug).FReklama>=10) then begin

Marquee1.MarqueeDisplayText:=ReklamaTwo.Caption;

ShowMessage('Народ доволен вашей рекламой!');

NameOfOkrug(okrug).Floyalnost:=NameOfOkrug(okrug).Floyalnost+25;

GetBonus(true);

end else begin

if ReklamaTwo.Checked then

Marquee1.MarqueeDisplayText:=ReklamaTwo.Caption else

Marquee1.MarqueeDisplayText:=ReklamaOne.Caption;

ShowMessage('Народ разочарован вашей рекламой!');

GetBonus(false);

end;

UpDates(NameOfOkrug(okrug));

ReklamaGroupBox.Visible:=false;

MenuOfActions.Visible:=true;

ButtonOfActions.Visible:=true;

if NameOfOkrug(okrug).Floyalnost=100 then GetBonus(true);

end;

procedure TForm2.UpDates(okr: tokrug);

begin

if zhyl then begin

Kapital.Text:=IntToStr(Kandidat2.Nominal);

Reiting.Text:=intTostr(Kandidat2.Reiting);

end else begin

Kapital.Text:=IntToStr(Kandidat1.Nominal);

Reiting.Text:=intTostr(Kandidat1.Reiting);

end;

Loyalnost.Text:=inttostr(okr.Floyalnost);

if okr.Floyalnost>=50 then begin

Naselenie.PasswordChar:=#0;

MinVzyatka.PasswordChar:=#0;

end;

if okr.Floyalnost=100 then begin

okr.Lider:=Player;

Lider.Text:=NameOfKandidat(Player);

end;

end;

procedure TForm2.VzyatkaKeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

procedure TForm2.ButtonVzyatkaClick(Sender: TObject);

begin

try

if not ProverkaMoney(strtoint(Vzyatka.text),NameOfOkrug(okrug)) then exit;

If strtoint(Vzyatka.Text)>=nameofokrug(okrug).FMinimalMoney then begin

GetBonus(true);

NameOfOkrug(okrug).Floyalnost:=NameOfOkrug(okrug).Floyalnost+25;

ShowMessage('Взятка прошла успешно!');

end else begin

GetBonus(false);

ShowMessage('Взятка не удалась!');

end;

VzytkaGroupBox.Visible:=false;

MenuOfActions.Visible:=true;

if NameOfOkrug(okrug).Floyalnost=100 then GetBonus(true);

UpDates(NameOfOkrug(okrug));

except

ShowMessage('Введите данные');

end;

end;

function TForm2.NameOfOkrug(index: integer): Tokrug;

begin

case index of

1:Result:=Ug;

2:Result:=Centr;

3:Result:=S_Zap;

4:Result:=Volga;

5:Result:=Yral;

6:Result:=Sybir;

7:Result:=Vostok;

end;

end;

procedure TForm2.ButtonNasClick(Sender: TObject);

begin

try

if not ProverkaMoney(strtoint(NasVzytka.text),NameOfOkrug(okrug)) then exit;

If strtoint(NasVzytka.Text)>=nameofokrug(okrug).Fnaselenie then begin

GetBonus(true);

NameOfOkrug(okrug).Floyalnost:=NameOfOkrug(okrug).Floyalnost+25;

ShowMessage('Биллютени подделаны успешно!');

end else begin

GetBonus(false);;

ShowMessage('Подделка биллютеней не удалась!');

end;

NasGroupBox.Visible:=false;

MenuOfActions.Visible:=true;

if NameOfOkrug(okrug).Floyalnost=100 then GetBonus(true);

UpDates(NameOfOkrug(okrug));

except

ShowMessage('Введите данные!');

end;

end;

procedure TForm2.N5Click(Sender: TObject);

var i:integer;

begin

i:=Form3.ShowModal;

end;

procedure TForm2.N6Click(Sender: TObject);

var i:integer;

begin

i:=form4.ShowModal;

end;

end.

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.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm4 = class(TForm)

Memo1: TMemo;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]