ПОИМОГИТЕ, ЗАВТРА СДАВАТЬ
sovushka_03 в категроии Информатика, вопрос открыт 06.06.2017 в 22:03
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, game,
LCLType, EXTCtrls, StdCtrls;
type
{TForm1}
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate (Sender : TObject);
procedure FormKeyPress(Sender: TObject; var Key: char);
procedure Timer1Timer (Sender : TObject);
procedure NewGame;
procedure FromPaint (Sender : TObject);
procedure MoveSnake;
procedure GamePlay;
procedure GameOver;
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
SnakeLen : Integer;
AHead : THead;
AApple : TApple;
ATails : array [1..100] of TTail;
dir : String;
HeadPic, ApplePic, TailPic : TBitmap;
implementation
{$R *.lfm}
{ TForm1}
procedure TForm1.Timer1Timer (Sender : TObject);
begin
MoveSnake;
GamePlay;
Repaint;
end;
procedure TForm1.NewGame;
begin
AApple := TApple.Create(random(20)*24,random(20)*24, ApplePic);
AHead := THead.Create (random (20)*24, random (20)*24, HeadPic);
ATails [1] := TTail.Create (AHead.getX,AHead.getY-24, TailPic );
ATails [2] := TTail.Create (AHead.getX,AHead.getY-48, TailPic );
Snakelen := 2;
dir := 'Down';
Timer1.Enabled:=True;
Timer1.Interval:=300;
end;
procedure TForm1.MoveSnake;
var i : Integer;
begin
for i := SnakeLen downto 2 do
begin
ATails[i].setX(ATails[i-1].getX);
ATails[i].setY(ATails[i-1].getY);
end;
ATails[1].setX(AHead.getX);
ATails[1].setX(AHead.getX);
If dir = 'Down' Then AHead.setY(AHead.getY+24);
If dir = 'Up' Then AHead.setY(AHead.getY-24);
If dir = 'Left' Then AHead.setX(AHead.getX-24);
If dir = 'Down' Then AHead.setX(AHead.getX+24);
end;
procedure GamePlay;
var i : Integer;
begin
if (AHead.getX=AApple.getX) and (AHead.getY=AApple.getY) Then
begin
SnakeLen := SnakeLen + 1;
randomize;
AApple.setX(random(20)*24);
AApple.setY(random(20)*24);
ATails[SnakeLen] := TTail.Create (ATails [SnakeLen-1].getX,ATails[SnakeLen-1].getY,TailPic);
if Timer1.Interval > 55 then Timer1.Interval := Timer1.Interval - 5;
end;
If AHead.getX < 0 Then GameOver;
If AHead.getY < 0 Then GameOver;
If AHead.getX > 20 * 24 Then GameOver;
If AHead.getY > 20 * 24 Then GameOver;
for i := 1 to SnakeLen do
if (AHead.getX = ATails[1].getX) and (AHead.getY = ATails[i].getY) then
GameOver;
end;
procedure GameOver;
var i : Integer;
begin
Timer1.Enable := False;
ShowMessage ('Game Over');
AHead.Free;
AAppple.Free;
for i:= 1 to SnakeLen do
ATails [i].Free;
NewGame;
end;
procedure TForm1.FormCreate (Sender : TObject);
begin
DoubleBuffered := True;
Color := clBlack;
Width := 21 * 24;
Height := 21 * 24;
HeadPic := TBitmap.Create;
HeadPic.LoadFromFile ( ' yellow.bmp ' );
ApplePic := TBitmap.Create;
ApplePic.LoadFromFile ( ' green.bmp ' );
TailPic := TBitmap.Create;
TailPic.LoadFromFile ( ' red.bmp ' );
NewGame;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = VK_LEFT) and (dir <> 'Right') Then dir := 'Left';
if (Key = VK_RIGHT) and (dir <> 'Left') Then dir := 'Right';
if (Key = VK_UP) and (dir <> 'Down') Then dir := 'Up';
if (Key = VK_DOWN) and (dir <> 'Up') Then dir := 'Down';
end;
procedure TForm1.FromPaint(Sender : TObject);
var i : Integer;
begin
for i := 1 to SnakeLen do
Canvas.Draw(ATails[i].getX,ATails[i].getY,ATails[i].getBitmap);
Canvas.Draw(AHead.getX,AHead.getY,AHead.getBitmap);
Canvas.Draw(AApple.getX,AApple.getY,AApple .getBitmap);
end;
end.
(3104) Compiling unit1.pas
unit1.pas(19,28) Hint: (5024) Parameter "Sender" not used
unit1.pas(90,10) Error: (5000) Identifier not found "Timer1"
unit1.pas(90,36) Error: (5000) Identifier not found "Timer1"
unit1.pas(90,55) Error: (5000) Identifier not found "Timer1"
unit1.pas(94,26) Error: (5000) Identifier not found "GameOver"
unit1.pas(95,26) Error: (5000) Identifier not found "GameOver"
unit1.pas(96,32) Error: (5000) Identifier not found "GameOver"
unit1.pas(97,32) Error: (5000) Identifier not found "GameOver"
unit1.pas(101,7) Error: (5000) Identifier not found "GameOver"
unit1.pas(106,3) Error: (5000) Identifier not found "Timer1"
unit1.pas(110,3) Error: (5000) Identifier not found "AAppple"
unit1.pas(115,3) Error: (5000) Identifier not found "NewGame"
unit1.pas(157) Fatal: (10026) There were 11 errors compiling module, stopping
Fatal: (1018) Compilation aborted
Error: C:\lazarus\fpc\3.0.2\bin\i386-win32\ppc386.exe returned an error exitcode
0 ответов
Зарегистрируйтесь или авторизируйтесь на сайте чтобы оставить ответ на вопрос.