Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Програмирование и игры.

Данила Терентьев Ученик (43), закрыт 1 год назад
Что не так с кодом ?
Ошибки:
1)[Warning] Unit1.pas(49): For loop control variable must be simple local variable
2)[Hint] Unit1.pas(88): Value assigned to 'win2' never used
3)[Error] Unit1.pas(92): Declaration expected but 'IF' found
4)[Error] Unit1.pas(94): Undeclared identifier: 'Timer1'
5)[Error] Unit1.pas(101): Identifier redeclared: 'Finalization'
6)[Error] Unit1.pas(102): Undeclared identifier: 'Time1'
7)[Warning] Unit1.pas(106): Text after final 'END.' - ignored by compiler

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus;

type
TForm1 = class(TForm)
Timer1: TTimer;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Img:array[1..2] of TBitmap;
Pole,Buf:TBitmap;
map:array[0..7,0..7] of Integer;
path:string;
i,j,Xn,Yn:integer;
Activ:Tpoint;
Current,Dohod:Boolean;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
Path:=ExtractFileDir(Application.ExeName);
Buf:=TBitmap.Create;
Buf.Width:=480;
Buf.Height:=480;


for i:=1 to 2 do
begin
Img[i]:=Tbitmap.Create;
Img[i].Transparent:=True;
Img[i].LoadFromFile(path+'/img/'+ inttostr(i)+'.bmp');
end;
Pole:=TBitmap.Create;
Pole.LoadFromFile(path+'/img/pole.bmp');
end;

procedure TForm1.N3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
for i:=0 to 7 do
for j:=0 to 7 do
map[i,j]:=0;

for i:=0 to 3 do
for j:=0 to 3 do
begin
map[i+4,j]:=1;
map[i,j+5]:=2;
end;

Activ.X:=1;
Activ.Y:=-1;
Current:=false;
Dohod:=False;
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var win1,win2:Boolean;
begin
if map[i+4,j]<>2 then win1:=False;
if map[i,j+5]<>1 then win2:=False;
end;


if win1=True then
begin
Timer1,Enabled:=false;
ShowMessage('Áåëûå ïîáåäèëè');


end;

if win2=True then
begin
Time1.Enabled:=false;
ShowMessage('×åðíûå ïîáåäèëè');


end;

//pole
Buf.Canvas.Drav(0,0,Pole);

//shaski
for i:=0 to 7 do
for j:=0 to 7 do
if map[i,j]>0 then Buf.Canvas.Drav(i*60+12,Img[ map[i,j] ]);


end.
Лучший ответ
G Мыслитель (5824) 1 год назад
Так компилятор же всё написал:
В строке № 92 if висит в воздухе между процедурами со всеми вытекающими последствиями в строке №94
В строке № 101 тоже код не внутри процедуры/функции.

Unit - это модуль программы, выполняющий библиотеку функций и процедур. Поэтому логично, что весь код должен быть внутри этих самых процедур и функций, а не висеть где-то между ними, как в приведённом коде. Вот компилятору и стало плохо от такого безобразия.
Остальные ответы
SSk-01 Мудрец (12646) 1 год назад
Читать ошибки не судьба? ВНЕЗАПНО, в них все написано
Похожие вопросы