unit hockey;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ImgList, Grids, jpeg;
const
MESSAGE_STR='MyMessage';
No=0;
Yes=1;
Timeout=25;
PKN=0.8;
PKZ=0.8;
PBN=0.6;
PBZ=0.6;
PBV=0.5;
PKV=0.5;
type
TForm1 = class(TForm)
Image1: TImage;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;

procedure WndProc(var Message: TMessage);override;
procedure FormCreate(Sender: TObject);
private

{ Private declarations }
public
msgSIMPR:UINT;
{ Public declarations }
end;


var
Form1: TForm1;
shaiba:array[0..5] of boolean;
curdir:string;
kv:boolean;
bv:boolean;
zk:boolean;
zb:boolean;
zb1:boolean;
zk1:boolean;
turn:integer;
team:boolean;
implementation
procedure TForm1.WndProc(var Message : TMessage);
var res:boolean;
begin

res:=true;
if message.Msg=msgSIMPR then
begin
//ПОЛУЧИЛИ СООБЩЕНИЕ!!!!!!!!!!
Res:=false;
if message.WParamHi=0 then
begin
//УСЛОВИЕ!!!!!!!!!!
case message.WParamLo of
//таблица1
1 : begin
if team then begin
case message.LParam of
1: begin // шайба у своего нападающего
if shaiba[0] then Res:=true;
end;
2: begin // шайба у своего защитника
if shaiba[1] then Res:=true;
end;
3: begin // открыт ли свой нападающий
if not(zk) then Res:=true;
end;
4: begin // шайба у чужого нападающего
if shaiba[2] then Res:=true;
end;
5: begin // шайба у чужого защитника
if shaiba[3] then Res:=true;
end;
6: begin // шайба в чужих воротах
if bv then Res:=true;
end;
7: begin // тайм-аут
if (turn>timeout) then Res:=true;
end;
8: begin // открыт ли защитник противника
if (zk1) then Res:=true;
end;
end; {case}
end
else
case message.LParam of
1: begin // шайба у своего нападающего
if shaiba[2] then Res:=true;
end;
2: begin // шайба у своего защитника
if shaiba[3] then Res:=true;
end;
3: begin // открыт ли свой нападающий
if not(zb) then Res:=true;
end;
4: begin // шайба у чужого нападающего
if shaiba[0] then Res:=true;
end;
5: begin // шайба у чужого защитника
if shaiba[1] then Res:=true;
end;
6: begin // шайба в чужих воротах
if kv then Res:=true;
end;
7: begin // тайм-аут
if (turn>timeout) then Res:=true;
end;
8: begin // открыт ли защитник противника
if (zb1) then Res:=true;
end;

end; {case}
end;

//таблица2
2 : begin
if team then begin
case message.LParam of
1: begin // шайба у чужого защитника
if shaiba[3] then Res:=true;
end;
2: begin // шайба у своего нападающего
if shaiba[0] then Res:=true;
end;
3: begin // открыт ли свой нападающий
if not(zk) then Res:=true;
end;
4: begin // тайм-аут
if (turn>timeout) then Res:=true;
end;
5: begin // шайба у вратаря противника
if shaiba[5] then Res:=true;
end;
end; {case}
end
else
case message.LParam of
1: begin // шайба у чужого защитника
if shaiba[1] then Res:=true;
end;
2: begin // шайба у своего нападающего
if shaiba[2] then Res:=true;
end;
3: begin // открыт ли свой нападающий
if not(zb) then Res:=true;
end;
4: begin // тайм-аут
if (turn>timeout) then Res:=true;
end;
5: begin // шайба у вратаря противника
if shaiba[4] then Res:=true;
end;
end; {case}
end; {2}
//таблица3
3 : begin
if team then begin
case message.LParam of
1: begin // шайба у своего вратаря
if shaiba[4] then Res:=true;
end;
2: begin // закрыт ли свой защитник
if not(zk1) then Res:=true;
end;
3: begin // открыт ли свой нападающий
if not(zk) then Res:=true;
end;
4: begin // тайм-аут
if (turn>timeout) then Res:=true;
end;
5: begin // шайба в своих воротах
if kv then Res:=true;
end;
end; {case}
end
else
case message.LParam of
1: begin // шайба у своего вратаря
if shaiba[5] then Res:=true;
end;
2: begin // закрыт ли свой защитник
if not(zb1) then Res:=true;
end;
3: begin // открыт ли свой нападающий
if not(zb) then Res:=true;
end;
4: begin // тайм-аут
if (turn>timeout) then Res:=true;
end;
5: begin // шайба в своих воротах
if bv then Res:=true;
end;
end; {case}
end; {3}
end; {case}
end;


if message.WParamHi=1 then
begin
//Действие!!!!!!!!!!
turn:=turn+1;
Label1.Caption:=IntToStr(turn);
Label4.Caption:=IntToStr(timeout - turn);
sleep(1000);
case message.WParamLo of
//таблица 1
1 : begin
if team then begin
case message.LParam of
1: begin // перехватить
randomize;
if (random<=PKZ) Then
begin
shaiba[2]:=false;
shaiba[1]:=true;
Form1.Image1.Picture.LoadFromFile(curdir+'pole_kz.JPG') ;
Memo1.Lines.Add('Красный защитник: перехватил');
end;
end;
2: begin // пас
if (random<=PKZ) Then
begin
shaiba[1]:=false;
shaiba[0]:=true;
Form1.Image1.Picture.LoadFromFile(curdir+'pole_kn.JPG') ;
Memo1.Lines.Add('Красный защитник: Пас красному нападающему');
end
else
begin
shaiba[1]:=false;
shaiba[3]:=true;
Form1.Image1.Picture.LoadFromFile(curdir+'pole_bz.JPG') ;
Memo1.Lines.Add('Красный защитник: неудачный пас');
end;

end;
3: begin // закрыть
randomize;
if (random<=PKZ) Then
begin
zb:=true;
Memo1.Lines.Add('Красный защитник: закрыл белого нападающего');
end;

end;
4: begin // ждать
Memo1.Lines.Add('Красный защитник: Ждать');
end;
5: begin // открыться
randomize;
if (random<=PKZ) Then
begin
zk1:=false;
Memo1.Lines.Add('Красный защитник: Открылся');
end;
end;
end; {case}
end
else
case message.LParam of
1: begin // перехватить
randomize;
if (random<=Pbz) Then
begin
shaiba[0]:=false;
shaiba[3]:=true;
Form1.Image1.Picture.LoadFromFile(curdir+'pole_bz.JPG') ;
Memo1.Lines.Add('Белый защитник: перехватил');
end;
end;
2: begin // пас
if (random<=PbZ) Then
begin
shaiba[3]:=false;
shaiba[2]:=true;
Form1.Image1.Picture.LoadFromFile(curdir+'pole_bn.JPG') ;
Memo1.Lines.Add('Белый защитник: Пас Белому нападающему');
end
else
begin
shaiba[3]:=false;
shaiba[1]:=true;
Form1.Image1.Picture.LoadFromFile(curdir+'pole_kz.JPG') ;
Memo1.Lines.Add('Белый защитник: неудачный пас');
end;

end;
3: begin // закрыть
randomize;
if (random<=PbZ) Then
begin
zk:=true;
end;
end;
4: begin // ждать
Memo1.Lines.Add('Ждать - Белый нападающий закрыт');
end;
5: begin // открыться
randomize;
if (random<=PbZ) Then
begin
zb1:=false;
Memo1.Lines.Add('Белый защитник: закрыл красного нападающего');
end;
end;
end; {case}
end; {1}
//таблица 2
2 : begin
if not (team) then begin
case message.LParam of
1: begin // бить по красным воротам
randomize;
if (random<=PBN) Then
begin
kv:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_kv.JPG');
Memo1.Lines.Add('Белые выиграли!');
end
else
begin
shaiba[2]:=false;
shaiba[4]:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_kvr.JPG');
Memo1.Lines.Add('Белый нападающий: вратарь поймал');
end;
end;
2: begin // перехватить
randomize;
if (random<=PBN) Then
begin
shaiba[2]:=true;
shaiba[1]:=false;
Image1.picture.LoadFromFile(curdir+'pole_bn.JPG');
Memo1.Lines.Add('Белый нападающий: перехватил');
end;
end;
3: begin // ждать
Memo1.Lines.Add('Белый нападающий: ждать');
end;
4: begin // открыться
randomize;
if (random<=PBN) Then
begin
zb:=false;
Memo1.Lines.Add('Белый нападающий: открылся');
end;
end;
5: begin // закрыть защитника
randomize;
if (random<=PBN) Then
Memo1.Lines.Add('Белый нападающий: закрыл красного защитника');
zk1:=true;
end;
end; {case}
end
else
case message.LParam of
1: begin // бить по белым воротам
randomize;
if (random<=PKN) Then
begin
bv:=true;
Image1.picture.LoadFromFile(curdir+'pole_bv.JPG');
Memo1.Lines.Add('Красные Выиграли!');
end
else
begin
shaiba[0]:=false;
shaiba[5]:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_bvr.JPG');
Memo1.Lines.Add('Красный нападающий: вратарь поймал');
end;
end;
3: begin // ждать
Memo1.Lines.Add('Красный нападающий: ждать');
end;
4: begin // открыться
randomize;
if (random<=PKN) Then
begin
zk:=false;
Memo1.Lines.Add('Красный нападающий: открылся');
end;
end;
2: begin // перехватить
randomize;
if (random<=PKN) Then
begin
shaiba[0]:=true;
shaiba[3]:=false;
Image1.picture.LoadFromFile(curdir+'pole_kn.JPG');
Memo1.Lines.Add('Красный нападающий: перехватил');
end;
end;
5: begin // закрыть защитника
randomize;
if (random<=PKN) Then
begin
zb1:=true;
Memo1.Lines.Add('Красный нападающий: закрыл белого защитника');
end;
end;


end; {case}
end; {2}


3 : begin
if not (team) then begin
case message.LParam of
1: begin // пас защитнику
randomize;
if (random<=PBV) Then
begin
shaiba[5]:=false;
shaiba[3]:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_bz.JPG');
Memo1.Lines.Add('Белый вратарь: пас белому защитнику');
end
else
shaiba[5]:=false;
shaiba[0]:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_kn.JPG');
Memo1.Lines.Add('Белый вратарь: неудачный пас');
end;
2: begin // пас нападающему
randomize;
if (random<=PBv/2) Then
begin
shaiba[5]:=false;
shaiba[2]:=true;
Image1.picture.LoadFromFile(curdir+'pole_bn.JPG');
Memo1.Lines.Add('Белый Вратарь: Пас Белому нападающему');
end
else
begin
shaiba[5]:=false;
shaiba[1]:=true;
Image1.picture.LoadFromFile(curdir+'pole_kz.JPG');
Memo1.Lines.Add('Белый вратарь: неудачный пас');
end;
end;
3: begin // ждать
Memo1.Lines.Add('Белый вратарь: ждать');
end;
end; {case}
end
else
begin
case message.LParam of
1: begin // пас защитнику
randomize;
if (random<=PkV) Then
begin
shaiba[4]:=false;
shaiba[1]:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_kz.JPG');
Memo1.Lines.Add('Красный вратарь: пас красному защитнику');
end
else
begin
shaiba[4]:=false;
shaiba[2]:=true;
Image1.picture.LoadFromFile(curdir+ 'pole_bn.JPG');
Memo1.Lines.Add('Красный вратарь: неудачный пас');
end;
end;
2: begin // пас нападающему
randomize;
if (random<=Pkv/2) Then
begin
shaiba[4]:=false;
shaiba[0]:=true;
Image1.picture.LoadFromFile(curdir+'pole_kn.JPG');
Memo1.Lines.Add('Красный вратарь:Пас Красному нападающему');
end
else
begin
shaiba[4]:=false;
shaiba[3]:=true;
Image1.picture.LoadFromFile(curdir+'pole_bz.JPG');
Memo1.Lines.Add('Белый вратарь: неудачный пас');
end;
end;
3: begin // ждать
Memo1.Lines.Add('Красный вратарь: ждать');
end;
end; {case}
end;
end; {3}

end;{case}
Image1.Refresh;
if (team) then
begin
team:=false;

end
else
begin
team:=true;

end;

Res:=true;
end;

//Выдали результат!!!!!!!!!
if res then message.Result:=1
else message.Result:=0;
end
else inherited WndProc(Message); // на другие сообщения
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
shaiba[1]:= true;
shaiba[0]:= false;
shaiba[2]:= false;
shaiba[3]:= false;
shaiba[4]:= false;
shaiba[5]:= false;
kv:=false;
bv:=false;
zk:=false;
zb:=false;
zk1:=false;
zb1:=false;
team:=true;
turn:=0;
curdir:=GetCurrentDir+'\';
MsgSIMPR:=RegisterWindowMessage(MESSAGE_STR);
end;
end.





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.