Создание интуитивно понятной игры «Змейка»

Автор: Пользователь скрыл имя, 16 Апреля 2012 в 18:43, курсовая работа

Краткое описание

Актуальность данной работы обуславливается растущей индустрией в сфере компьютерных игр, а, следовательно, является привлекательной площадкой для разработчиков программного обеспечения и торговых компаний.
Цель данной работы – создание интуитивно понятной игры «Змейка», которая сочетала бы в себе простоту и увлекательный игровой процесс.

Оглавление

Введение 4
Глава 1. Теоретическая часть 5
1.1 Анализ предметной области 5
1.2 Обоснование и выбор ПО 5
1.3 Обоснование и выбор технических средств 5
Вывод по Главе 1 6
Глава 2. Экспериментальная часть 7
2.1 Техническое задание 7
2.2 Реализация 10
2.2.1 Руководство программиста 10
2.2.2 Руководство пользователя 11
2.2.3 Программа и методика испытаний 11
Вывод по Главе 2 13
Заключение……………………………………………………………………………………………………………………………………………………………………..13
Литература……………………………………………………

Файлы: 1 файл

Курсовой проект.doc

— 368.00 Кб (Скачать)

  Halt; 

  end; 

  procedure TForm1.FormCreate(Sender: TObject);

  begin

  // задание начальных  значений переменных

  grot := false;

  Points:=0;

  Label2.Caption := IntToStr(Points); 

  Sek := 3;

  Vek :='l';

  for k := 1 to 9999 do

  begin

  q1[k]:=0;

  q2[k]:=0; 

  end;

  // начальная длина  удава - 4 клетки,

  // задание координат  каждой клетки  удава

  q:=4;

  q1[1]:=10;

  q2[1]:=15;

  q1[2]:=11;

  q2[2]:=15;

  q1[3]:=12;

  q2[3]:=15;

  q1[4]:=13;

  q2[4]:=15;

  // вызов процедур  отрисовки поля, удава  и еды

  ZZx;

  FFx; 

  end; 

  // этот таймер следит  за движением удава

  procedure TForm1.Timer1Timer(Sender: TObject);

  begin

  //это  если пришло сообщение "остановить"

  if (vek = 's') and (Label1.Visible=false) then 

  Label1.Visible := true else 

  Label1.Visible := false; 

  // тут расчитывается,  куда переместить  змею

  if (vek = 'u') then

  begin

  CCx;

  q2[1]:=q2[1]-1;

  end; 

  if (vek = 'd') then

  begin

  CCx;

  q2[1]:=q2[1]+1;

  end; 

  if (vek = 'l') then

  begin

  CCx;

  q1[1]:=q1[1]-1;

  end; 

  if (vek = 'r') then 

  begin

  CCx; 

  q1[1]:=q1[1]+1;

  end;

  // если наткнулись  на "еду", то

  if a[q1[1],q2[1]] = 2 then

  begin

  Points := Points + Sek;  // прибавить очки

  Label2.Caption := IntToStr(Points);

  q:=q+1;   //длина на один  больше 

  CCx;      //отрисовка удава

  FFx;

  end; 

  ////////////////////////////////////////////////////////

  //если  вышли за пределы  поля, тогда конец

  if (q1[1]=0) or (q2[1]=0) or (q1[1]=36) or (q2[1]=31) then AAx;

  //если  наткнулись на самого себя, то тоже выйти

  for i:=3 to q do

  if (q1[1]=q1[i]) and (q2[1]=q2[i]) then AAX; 

  //////////////////////////////////////////////////////// 

  ZZx; 

  //////////////////////////////////////////////////////// 

  // а вот фрагмент, выводящий уже  готовый массив а на экран

  for k := 10 to 350 do

  for l := 10 to 300 do

  begin

  if (k mod 10 = 0) and (l mod 10 = 0) then 

  begin 

  i:=k div 10;

  j:=l div 10; 

  // если клетка пустая - то красим в  белый

  if a[i,j] = 0 then

  Image1.Canvas.Brush.Color := clWhite

  else

  //если в клетке 1 (т.е. змея) то красим в синий 

  if a[i,j] = 1 then

  Image1.Canvas.Brush.Color := clBlue

  else

  //если  в клетке "еда", то красим в  красный

  if a[i,j] = 2 then

  Image1.Canvas.Brush.Color := clRed;

  // отрисовываем клетку

  Image1.Canvas.Rectangle(k-10,l-10,k,l);

  end; 

  end;

  //говорим,  что можно нажимать  на кнопки

  grot := false;

  end; 

  // процедура "если  нажата кнопка"

  procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

  begin

  // если нельзя нажимать  на кнопки, то не  принимаем сигналы с клавиатуры

  if not grot then begin

  // а если модно, то

  // если нажата клавиша ВВЕРХ, то 
 

  if (KEY = VK_UP) and (vek<>'d') then

  vek:='u';

  // если нажата клавиша  ВНИЗ, то

  if (key = vk_DOWN) and (vek<>'u') then

  vek:='d';

  // если нажата клавиша  ВЛЕВО, то

  if (key = vk_left) and (vek<>'r') then

  vek:='l';

  // если нажата клавиша  ВПРАВО, то 

  if (key = vk_right) and (vek<>'l') then

  vek:='r';

  // если нажат ПРОБЕЛ, то

  if (key=VK_space) then

  vek:='s'; 

  // говорим, что клавиатура  не читается

  grot := true;

  end; 

  end; 

  // дальше идут процедуры  обработки изменения  скорости

  procedure TForm1.SpeedButton5Click(Sender: TObject);

  begin

  SpeedButton5.Caption := 'x';

  SpeedButton1.Caption := '';

  SpeedButton2.Caption := '';

  SpeedButton3.Caption := '';

  SpeedButton4.Caption := ''; 

  Timer1.Interval := 200; //это задержка таймера

  Sek := 1;            // это по сколько  очков даётся за 1-ну "еду" 

  end; 

  procedure TForm1.SpeedButton4Click(Sender: TObject);

  begin

  SpeedButton4.Caption := 'x';

  SpeedButton1.Caption := '';

  SpeedButton2.Caption := ''; 
 

  SpeedButton3.Caption := '';

  SpeedButton5.Caption := ''; 

  Timer1.Interval := 150;

  Sek := 2;

  end; 

  procedure TForm1.SpeedButton3Click(Sender: TObject);

  begin

  SpeedButton5.Caption := '';

  SpeedButton1.Caption := '';

  SpeedButton2.Caption := '';

  SpeedButton3.Caption := 'x';

  SpeedButton4.Caption := ''; 

  Timer1.Interval := 100;

  Sek := 3;

  end; 

  procedure TForm1.SpeedButton2Click(Sender: TObject);

  begin

  SpeedButton5.Caption := '';

  SpeedButton1.Caption := '';

  SpeedButton2.Caption := 'x'; 

  SpeedButton3.Caption := ''; 

  SpeedButton4.Caption := ''; 

  Timer1.Interval := 50;

  Sek := 4;

  end; 

  procedure TForm1.SpeedButton1Click(Sender: TObject); 

  begin

  SpeedButton5.Caption := ''; 

  SpeedButton1.Caption := 'x';

  SpeedButton2.Caption := '';

  SpeedButton3.Caption := '';

  SpeedButton4.Caption := ''; 

  Timer1.Interval := 20;

  Sek := 5;

  end; 

  //это  чтобы показывалось  красивое окно  в начале

  procedure TForm1.FormActivate(Sender: TObject);

  begin

  Form1.Timer1.Enabled := false;

  Form2.Visible := true;

  end; 

  // это сделано чтобы  музыка не прерывалась

  // (если не сделать,  то она проиграет  один раз и все)

  procedure TForm1.Timer2Timer(Sender: TObject);

  begin 

  MediaPlayer1.Play;

  end; 

  // это сделано, чтобы  увеличить шанс "случайного"

  // появления "еды"

  initialization

  randomize; 

  end. 
 

  unit Unit2; 

  interface 

  uses

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

    Dialogs, jpeg, ExtCtrls; 

  type

    TForm2 = class(TForm)

      Image1: TImage;

      Timer1: TTimer;

      procedure Timer1Timer(Sender: TObject);

    private

      { Private declarations }

    public

      { Public declarations }

    end; 

  var

    Form2: TForm2;

  implementation 

  uses Unit1, Unit3; 

  {$R *.dfm} 

  procedure TForm2.Timer1Timer(Sender: TObject);

  begin

  Form3.Show;

  Timer1.Enabled := false;

  Form2.AlphaBlend := true; 

  Form2.AlphaBlendValue := 0;

  Form2.Enabled := false;

  end;

  end. 
 

  unit Unit3; 

  interface 

  uses

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

    Dialogs, Buttons, StdCtrls, ExtCtrls; 

  type

    TForm3 = class(TForm)

      Panel1: TPanel;

      Memo1: TMemo;

      GroupBox1: TGroupBox;

      RadioButton1: TRadioButton;

      RadioButton2: TRadioButton;

      RadioButton3: TRadioButton;

      SpeedButton1: TSpeedButton; 

      SpeedButton2: TSpeedButton; 

      SpeedButton3: TSpeedButton;

      CheckBox1: TCheckBox;

      OpenDialog1: TOpenDialog;

      procedure SpeedButton1Click(Sender: TObject);

      procedure SpeedButton3Click(Sender: TObject);

      procedure SpeedButton2Click(Sender: TObject);

      procedure CheckBox1Click(Sender: TObject); 

      procedure Panel1Click(Sender: TObject); 

      procedure FormCreate(Sender: TObject);

      procedure RadioButton1Click(Sender: TObject);

      procedure RadioButton2Click(Sender: TObject);

      procedure Memo1Change(Sender: TObject);

    private

      { Private declarations }

    public

      { Public declarations }

    end; 

  var

    Form3: TForm3;

    file314: TextFile;

    i: integer;

    SD: STRING;

  implementation 

Информация о работе Создание интуитивно понятной игры «Змейка»