Автор работы: Пользователь скрыл имя, 26 Марта 2014 в 06:42, курсовая работа
Компьютерная игра (иногда используется неоднозначный термин видеоигра) — компьютерная программа, служащая для организации игрового процесса (геймплея), связи с партнёрами по игре, или сама выступающая в качестве партнёра.
Компьютерные игры часто создаются на основе фильмов и книг; есть и обратные случаи. С 2011 года компьютерные игры официально признаны в США отдельным видом искусства. Компьютерные игры оказали столь существенное влияние на общество, что в информационных технологиях отмечена устойчивая тенденция к геймификации для неигрового прикладного программного обеспечения.
1.Введение……………………………………………...................……………...4
2. Основная часть…………………………………...................……………......13
2.1. Спецификация……………………………………..........……....…...14
2.2. Заключение……………………………………….....……………....24
3. Литература.....................
В ходе выполнения данной работы, была разработана игровая программа «Игра в кости», повторены основные свойства и методы наиболее распространенных компонентов Delphi, получен навык работы с генератором случайных чисел, расширены знания о текстовых файлах в Delphi.
ЛИТЕРАТУРА
Интернет-ресурсы:
ПРИЛОЖЕНИЯ
Приложение 1
Протокол ошибок
№ |
Код ошибки |
Название ошибки |
Меры по исправлению |
1 |
57 |
':=' expected but ':' found |
Вместо ':' необходимо напечатать ':=' |
2 |
108 |
Undeclared identifier: 'n' |
В разделе Var, описать переменную нужного типа, в данном случае как integer. |
3 |
129 |
Undeclared identifier: 'bitbtn1' |
Создать на форме bitbtn1 |
Приложение 2
Инструкция по работе с ПК
Приложение 3
Листинг программы
program Dice;
uses
Forms,
diceU1 in 'diceU1.pas' {Form1},
diceU2 in 'diceU2.pas' {Form2},
diceU3 in 'diceU3.pas' {Form3},
Splash_dice in 'Splash_dice.pas' {fmSplash},
diceU4 in 'diceU4.pas' {Form4};
{$R *.res}
begin
Application.Initialize;
fmSplash := TfmSplash.Create(nil);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.Run;
end.
unit diceU1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons,xpman,mmsystem,jpeg,
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
Image2: TImage;
Image1: TImage;
StatusBar1: TStatusBar;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Timer1: TTimer;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Panel2: TPanel;
Label3: TLabel;
BitBtn4: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
save:boolean;
o:integer;
b,w:byte;
pr_w:real;
Form1: TForm1;
implementation
uses diceU2, diceU3, Splash_dice, diceU4;
{$R *.dfm}
//Нажатие на кнопку "Бросок"
procedure TForm1.BitBtn1Click(Sender: TObject);
var
k1,k2,n:byte; s:integer;
begin
//Проверка правильности
if not((strtoint(edit1.Text)>1)
then begin
showmessage('Недопустимое значение! Выберите число из диапазона от 2 до 12!');
edit1.Clear;
edit1.Focused;
end
else begin
if strtoint(edit2.Text)>o
then begin
showmessage('Недопустимое значение! Не хватает очков для ставки!');
edit2.clear;
edit2.Focused
end
else begin
n:=strtoint(edit1.text); //считывание числа
s:=strtoint(edit2.Text); //считывание ставки
randomize;
k1:=1+random(6); //присвоение случайного значения грани кости
case k1 of //и загрузка соответствующего изображения
1:image1.Picture.LoadFromFile(
2:image1.Picture.LoadFromFile(
3:image1.Picture.LoadFromFile(
4:image1.Picture.LoadFromFile(
5:image1.Picture.LoadFromFile(
6:image1.Picture.LoadFromFile(
end;
k2:=1+random(6);
case k2 of
1:image2.Picture.LoadFromFile(
2:image2.Picture.LoadFromFile(
3:image2.Picture.LoadFromFile(
4:image2.Picture.LoadFromFile(
5:image2.Picture.LoadFromFile(
6:image2.Picture.LoadFromFile(
end;
//вывод суммы
label3.caption:='Сумма: '+inttostr(k1)+' + '+inttostr(k2)+' = '+inttostr(k1+k2);
b:=b+1; //увеличение счетчика бросков и вывод в статус строку
statusbar1.Panels[1].Text:='
//------------------Проверка выпавших чисел-------------------------
if k1+k2=n //если число равно сумме
then
begin
s:=s*4; //увеличение ставки в 4 раза
showmessage('Ставка сыграла! Получено: '+inttostr(s));
o:=o+s; //увеличение числа очков на размер ставки
w:=w+1; //увеличение счетчика побед
statusbar1.Panels[0].Text:='
end
else
if (k1+k2<7) and (n<7) //если сумма меньше 7 и число меньше 7
then
begin
showmessage('Ставка сыграла! Получено: '+inttostr(s));
o:=o+s; //увеличение числа очков на размер ставки
w:=w+1; //увеличение счетчика побед
statusbar1.Panels[0].Text:='
end
else
if (k1+k2>7) and (n>7) //если сумма больше 7 и число больше 7
then
begin
showmessage('Ставка сыграла! Получено: '+inttostr(s));
o:=o+s; //увеличение числа очков на размер ставки
w:=w+1; //увеличение счетчика побед
statusbar1.Panels[0].Text:='
end
else //если ни одна из ситуаций не подходит
begin
showmessage('Ставка не сыграла! Потеряно: '+inttostr(s));
o:=o-s; //уменьшение числа очков на размер ставки
statusbar1.Panels[0].Text:='
end;
pr_w:=(w*100)/b; //вычисление и вывод процента побед
statusbar1.Panels[2].text:='
save:=false; // параметры игры изменились, необходимо новое сохранение
if o=0 then form2.ShowModal; //если очки закончились покажи форму 2
edit1.SetFocus; //фокус на поле ввода числа
end;
end;
end;
//процедура создания формы
procedure TForm1.FormCreate(Sender: TObject);
begin
PlaySound('..\sounds\Sound1.
fmSplash.Show; //перед созданием формы 1 покажи splash-форму на 3 секунды,
fmSplash.Repaint;//этого времени хватит чтобы загрузить дату и время на форму 1
sleep(3000);
fmSplash.close;
fmSplash.Free;
save:=false; //изначально игра не сохранена
o:=100; //стартовое количество очков
w:=0; //изначально 0 побед
statusbar1.Panels[0].Text:='
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//вывод даты и времени в статус строку
statusbar1.Panels[4].Text:='
statusbar1.Panels[3].text:='
end;
//ограничение на ввод в поле ввода числа
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//только цифры, backspase и enter
if not(key in ['0'..'9',#8,#13]) then key:=#0;
if key=#13 then edit2.SetFocus; //при нажатии на enter переключить фокус
end;
//ограничение на ввод в поле ввода ставки
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
//только цифры, backspase и enter
if not(key in ['0'..'9',#8,#13]) then key:=#0;
if (key=#13) and (bitbtn1.Enabled=true) then bitbtn1.SetFocus;
end;
//Проверка заполнения полей ввода
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (edit1.Text='') or (edit2.Text='')
then
bitbtn1.Enabled:=false
else
bitbtn1.Enabled:=true;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
if (edit1.Text='') or (edit2.Text='')
then
bitbtn1.Enabled:=false
else
bitbtn1.Enabled:=true;
end;
//запуск формы 3 в соответствии с параметром сохранения
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if save=false then form3.ShowModal else
form3.ShowModal;
end;
//процедура нажатия на кнопку сохранения
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
form2.showmodal;
end;
//процедура закрытия формы 1
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if save=false then form3.Show; //если игра не сохранена покажи форму 3
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
edit1.SetFocus; //при активации формы ставь фокус на поле ввода числа
end;
//процедура нажития на кнопку просмотра результатов
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
//запуск текстового файла
Shellexecute(handle,'open',
end;
//отслеживание нажатия на F1 на различных объектах формы
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if getasynckeystate($70)<>0 then form4.showmodal; end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if getasynckeystate($70)<>0 then form4.showmodal;
end;
procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if getasynckeystate($70)<>0 then form4.showmodal;
end;
procedure TForm1.BitBtn1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if getasynckeystate($70)<>0 then form4.showmodal;
end;
procedure TForm1.BitBtn2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if getasynckeystate($70)<>0 then form4.showmodal;
end;
procedure TForm1.BitBtn4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if getasynckeystate($70)<>0 then form4.showmodal;
end;
procedure TForm1.BitBtn3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if getasynckeystate($70)<>0 then form4.showmodal;
end;
end.
unit diceU2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,shellapi,xpman;
type
TForm2 = class(TForm)
Edit1: TEdit;
Label1: TLabel; BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses diceU1;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject);
var
f:textfile; m,str:string;
begin
//Работа с текстовым файлом
assignfile(f,'Результаты.txt')
append(f);
m:='--------------------------
str:='';
str:=datetostr(date)+#9+
writeln(f,str); //вывод сформированной строки в файл
writeln(f,m);
closefile(f); //закрытие файла
Shellexecute(handle,'open',
if o=0 then form1.Close //если форма открылась в случае проигрыша - то закрой программу
else form2.close; //иначе закрой форму 2
save:=true;
end;
procedure TForm2.Edit1Change(Sender: TObject);
begin
//проверка на заполнение
if edit1.Text='' then bitbtn1.Enabled:=false else bitbtn1.Enabled:=true;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
//если форма открылась в
if o=0 then
begin
form2.Height:=168;
form2.Label1.Caption:=' Вы проиграли! Введите ваше имя:';
end;
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key in ['0'..'9']) then key:=#0; //обеспечение корректного ввода в поле
end;
//Нажатие на "Отмена"
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
form2.Close; //закрой форму 2(возврат на форму 1)
edit1.Clear; //очисти поле ввода
end; end.
unit diceU3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,xpman;
type
TForm3 = class(TForm)
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses diceU1, diceU2; {$R *.dfm}
//выход из программы
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
form3.close;
form1.Close;
end;
//Отмена выхода