Автор: Пользователь скрыл имя, 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
Литература……………………………………………………
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-
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(
begin
SpeedButton5.Caption := 'x';
SpeedButton1.Caption := '';
SpeedButton2.Caption := '';
SpeedButton3.Caption := '';
SpeedButton4.Caption
:= '';
Timer1.Interval := 200; //это задержка таймера
Sek
:= 1;
// это по сколько
очков даётся за 1-ну "еду"
end;
procedure
TForm1.SpeedButton4Click(
begin
SpeedButton4.Caption := 'x';
SpeedButton1.Caption := '';
SpeedButton2.Caption
:= '';
SpeedButton3.Caption := '';
SpeedButton5.Caption
:= '';
Timer1.Interval := 150;
Sek := 2;
end;
procedure
TForm1.SpeedButton3Click(
begin
SpeedButton5.Caption := '';
SpeedButton1.Caption := '';
SpeedButton2.Caption := '';
SpeedButton3.Caption := 'x';
SpeedButton4.Caption
:= '';
Timer1.Interval := 100;
Sek := 3;
end;
procedure
TForm1.SpeedButton2Click(
begin
SpeedButton5.Caption := '';
SpeedButton1.Caption := '';
SpeedButton2.Caption
:= 'x';
SpeedButton3.Caption
:= '';
SpeedButton4.Caption
:= '';
Timer1.Interval := 50;
Sek := 4;
end;
procedure
TForm1.SpeedButton1Click(
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
Информация о работе Создание интуитивно понятной игры «Змейка»