Технология программирования

Автор работы: Пользователь скрыл имя, 23 Января 2011 в 12:52, курсовая работа

Описание работы

На заре компьютерной эры очень трудно было написать большую программу, потому что возможности компьютеров были ограничены. Ограничения проистекали из объема оперативной памяти, скорости считывания информации с вторичных носителей и быстродействия процессоров. В 60-70-е годы прошлого века эффективность применения компьютеров резко возросла, цены на них стали падать, а возможности ЭВМ увеличились. В результате стало выгодно, да и необходимо создавать все больше прикладных программ повышенной сложности. В качестве основных инструментов создания программных продуктов начали применяться алгоритмические языки высокого уровня. Эти языки расширили возможности отдельных программистов и групп разработчиков, что в свою очередь привело к увеличению уровня сложности программных систем.

Файлы: 1 файл

курсовая.doc

— 169.00 Кб (Скачать файл)

     If kr.BallinK(nx + bl.d div 2, ny) then OtY;

     If kr.BallinK(nx, ny + bl.d div 2) then OtX;

    end;

    271..360: begin

     If kr.BallinK(nx + bl.d div 2, ny) then OtY;

     If kr.BallinK(nx + bl.d, ny + bl.d div 2) then OtX;

    end;

   end;

  end;

  n := n + 1; n1 := n1 + 1; n2 := n2 + 1;

Until (n > bl.spd) or (kr.klkr = -1);

bl.Move(nx, ny);

End; 

procedure TEngine.Move;

Begin

If not MoveBall then Defeat

else If (kr.klkr = 0) then Victory;

End; 

procedure TEngine.Victory;

Begin

MainThread.tm := -1; ShowCursor(True); TheEnd := True;

Application.MessageBox('Вы победили!', 'Игра закончена');

End; 

procedure TEngine.Defeat;

Begin

MainThread.tm := -1; ShowCursor(True); TheEnd := True;

Application.MessageBox('Вы  проиграли.', 'Игра закончена');

End; 

procedure TEngine.ShowAll;

Begin

If not TheEnd then begin

  kr.DrawAll; bl.Move(bl.x, bl.y);

end;

End; 

Procedure TEngine.MovePl(nx, ny: Integer);

Begin

If not TheEnd then begin

  If (nx > Screen.Width - pl.widthPl) then nx := Screen.Width - pl.widthPl;

  pl.Move(nx, ny);

end;

End; 

Procedure TEngine.Free;

Begin

MainThread.Terminate;

bl.Free; kr.Free; pl.Free;

End; 

end.

Модуль uMainThread.pas

 

unit uMainThread; 

interface 

uses

  Classes; 

type

  TMainThread = class(TThread)

  private

    { Private declarations }

  public

    tm: ShortInt; // время обновления картинки

  protected

    procedure Execute; override;

  end; 

implementation 

uses Windows, uGame; 

{ TMainThread } 

procedure TMainThread.Execute;

Var tmr, a: DWord;

begin

  { Place thread code here }

  a := GetTickCount;

  Repeat

   tmr := GetTickCount;

   If (tmr - a > tm) then begin

    Synchronize(uGame.engine.Move);

    If (tm = -1) then Synchronize(uGame.fmGame.Close);

    a := GetTickCount;

   end;

  Until Terminated;

end; 

end.

Модуль uGame.pas

unit uGame; 

interface 

uses

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

  Dialogs, uMainThread, uEngine; 

type

  TfmGame = class(TForm)

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    procedure FormCreate(Sender: TObject);

    procedure FormPaint(Sender: TObject);

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

    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

  private

    { Private declarations }

  public

    { Public declarations }

    procedure RunG;

  end; 

var

  fmGame: TfmGame;

  engine: TEngine; 

implementation 

uses uMenu; 

{$R *.dfm} 

procedure TfmGame.RunG;

Begin

engine := TEngine.Create(fmGame.Canvas);

End; 

procedure TfmGame.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

CanClose := False;

engine.Free;

fmMenu.BackInToMenu;

Hide;

end; 

procedure TfmGame.FormCreate(Sender: TObject);

begin

Height := Screen.Height; Width := Screen.Width;

end; 

procedure TfmGame.FormPaint(Sender: TObject);

begin

engine.ShowAll;

end; 

procedure TfmGame.FormKeyPress(Sender: TObject; var Key: Char);

begin

If Key = #27 then begin

  ShowCursor(True); Key := #0; Close;

end;

end; 

procedure TfmGame.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

begin

engine.MovePl(x, y);

end; 

end.

Модуль uMenu.pas

unit uMenu; 

interface 

uses

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

  Dialogs, StdCtrls; 

type

  TfmMenu = class(TForm)

    Button1: TButton;

    Button2: TButton;

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

    procedure BackInToMenu;

  end; 

var

  fmMenu: TfmMenu; 

implementation 

uses uGame; 

{$R *.dfm} 

procedure TfmMenu.BackInToMenu;

Begin

Show;

End; 

procedure TfmMenu.Button2Click(Sender: TObject);

begin

Close;

end; 

procedure TfmMenu.Button1Click(Sender: TObject);

begin

fmGame.Show;

Hide;

fmGame.RunG;

end; 

end.

Информация о работе Технология программирования