Разработка приложения для Windows, представляющего собой компьютерную игру «Кости»

Автор: Пользователь скрыл имя, 05 Декабря 2011 в 21:59, дипломная работа

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

Разработать программу, моделирующую игру «Кости». Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 («бросает кубик», на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока.

Оглавление

ВВЕДЕНИЕ
ОСНОВНАЯ ЧАСТЬ
1 РАЗРАБОТКА ЭСКИЗНОГО И ТЕХНИЧЕСКОГО ПРОЕКТОВ ПРОГРАММЫ
1.1.Назначение и область применения
1.2.Технические характеристики
1.2.1. Постановка задачи
1.2.2. Описание алгоритма
1.2.3. Организация входных и выходных данных
1.2.4. Выбор состава технических и программных средств
2 РАЗРАБОТКА РАБОЧЕГО ПРОЕКТА
2.1 Разработка рабочего проекта
2.2 Написание программы
2.3 Текст программы
2.4 Тестирование программы
ЗАКЛЮЧЕНИЕ
ГЛОССАРИЙ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЯ

Файлы: 1 файл

Разработка приложения для Windows, представляющего собой компьютерную игру «Кости».doc

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

     StatusBar.Panels[1].Text:='Выпало:';

     StatusBar.Panels[2].Text:='Выигрыш:';

     end;

     //-------------------------------------------------------

     //Вывод  граней кубиков и подсчет выигрыша

     //-------------------------------------------------------

     procedure TFormGame.TimerTimer(Sender: TObject);

     var i:integer;   //Для создания цикла

         Viigresh:longint; //Выигрыш

     begin

       Randomize;

       for i:=1 to 2 do Kub[i]:=random(6)+1;  //Подбор случ. чисел

       //Вывод граней кубиков

       ImageTable.Canvas.CopyRect(Rect(11,17,71,77),

         ImageKubik.Canvas, Rect((Kub[1]-1)*60,0,(Kub[1]-1)*60+60,60));

       ImageTable.Canvas.CopyRect(Rect(82,17,142,77),

         ImageKubik.Canvas, Rect((Kub[2]-1)*60,0,(Kub[2]-1)*60+60,60));

       //Увеличение количества раз заходов в процедуру

       Rotation:=Rotation+1;

       if Rotation=6 then begin

         Rotation:=0;

         Timer.Enabled:=False;  //Выключение таймера

         Viigresh:=0;  //Очистка значения выигрыша

         //Подсчет выигрыша

         if (Kub[1]+Kub[2] < 7) and (SEChislo.Value < 7) then Viigresh:=SEStavka.Value;

         if (Kub[1]+Kub[2] > 7) and (SEChislo.Value > 7) then Viigresh:=SEStavka.Value;

         if Kub[1]+Kub[2] = SEChislo.Value then Viigresh:=SEStavka.Value * 4;

         StatusBar.Panels[1].Text:='Выпало: ' + IntToStr(Kub[1]+Kub[2]);

         StatusBar.Panels[2].Text:='Выигрыш: ' + IntToStr(Viigresh);

         SEStavka.MaxValue:=Kredit; //Макс ставка не превышает кредит

         if Viigresh = 0 then begin

           Viigresh:=Viigresh - SEStavka.Value;  //Минусовой выигрыш

           StatusBar.Panels[0].Text:='Ты проиграл!';

         end else StatusBar.Panels[0].Text:='Ты выиграл!';

         Kredit:=Kredit+Viigresh;   //Увеличение кредита и

         LKredit.Caption:=IntToStr(Kredit);  //его вывод

         //Если кредит кончился

         if Kredit<=0 then begin

           Application.MessageBox('Ты проиграл!!!', 'Проигрыш',MB_OK+MB_ICONINFORMATION);

           FormNEw.BDelClick(nil);    //Удаление игрока

           FormNew.listbox.Refresh;   //Перерисовка списка игроков

           FormNew.ShowModal;         //Вызов окна выбора игрока

         end

         else if SEStavka.Value > Kredit then begin

           SEStavka.Value:=Kredit;

           SEStavka.MaxValue:=Kredit; //Максимальное значение ставки

         end;

       end;

     end;

     //---------------------------------------------------------------------

     //Выбор игрока

     //---------------------------------------------------------------------

     procedure TFormGame.FormActivate(Sender: TObject);

     begin

     FormNew.ShowModal;  //Вызов окна выбора игрока

     end;

     //---------------------------------------------------------------------

     //Закрытие игры

     //---------------------------------------------------------------------

     procedure TFormGame.FormClose(Sender: TObject; var Action: TCloseAction);

     begin

     FormNew.SaveGamer;  //Сохранение игроков

     end;

     //---------------------------------------------------------------------

     //Выбор  игрока

     //---------------------------------------------------------------------

     procedure TFormGame.BGamerClick(Sender: TObject);

     begin

     FormNew.SaveGamer; //Сохранение текущего игрока

     FormNew.ShowModal; //Вызов окна выбора игрока

     end;

     end. 

     Текст программы для формы – FormGame:

     unit Unit2;

     interface

     uses

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

       StdCtrls;

     type

       TFormNew = class(TForm)

         GroupBox1: TGroupBox;

         ListBox: TListBox;

         BNew: TButton;       //Создание нового игрока

         BDel: TButton;       //Удаление выбранного игрока

         BOK: TButton;        //Выбор выделенного игрока

         procedure BOKClick(Sender: TObject);

         procedure FormCreate(Sender: TObject);

         procedure BNewClick(Sender: TObject);

         procedure SaveGamer;

         procedure BDelClick(Sender: TObject);

       private

         { Private declarations }

       public

         { Public declarations }

       end;

     var

       FormNew: TFormNew;

       FO, FS:TextFile;          //Файлы для чтения и записи

       S, NameGamer:string; //Для чтения строчек  из файла и имя игрока

       i, j,                               //Для создания циклов

       KolGamer:integer;      //Количество  игроков

     implementation

     uses Unit1;

     {$R *.DFM}

     //----------------------------------------------

     //Перезапись файла игроков

     //----------------------------------------------

     procedure TFormNew.SaveGamer;

     begin

       AssignFile(FO, 'Players.dat'); AssignFile(FS, '1.dat');

       Reset(FO); Rewrite(FS);

       //Чтение количества игроков

       Readln(FO, S); KolGamer:=StrToInt(S);

       Writeln(FS, S); //Запись во временный файл

       //Цикл перебора всех игроков  в файле

       for i:=1 to KolGamer do

         if i<>ListBox.ItemIndex+1 then //Если игрок не текущий

           for j:=1 to 6 do begin Readln(FO, S); Writeln(FS, S); end

         else begin

            for j:=1 to 6 do Readln(FO, S);  //Пропуск 6 строчек

            //Запись новых значений о текущем игроке

            Writeln(FS, NameGamer);

            Writeln(FS, IntToStr(Kredit));

            Writeln(FS, IntToStr(FormGame.SEStavka.Value));

            Writeln(FS, IntToStr(FormGame.SEChislo.Value));

            Writeln(FS, IntToStr(Kub[1]));

            Writeln(FS, IntToStr(Kub[2]));

         end;

       //Закрытие файлов и удаление временного

       CloseFile(FO); CloseFile(FS);

       CopyFile('1.dat', 'Players.dat',False);

       DeleteFile('1.dat');

     end;

     //----------------------------------------------------

     //Выбор  игрока из списка

     //----------------------------------------------------

     procedure TFormNew.BOKClick(Sender: TObject);

     begin

       if ListBox.Items.Text='' then exit; //Если список чист

       AssignFile(FO,'Players.dat');

       Reset(FO); //Открытие файла для чтения

       //Чтение количества игроков

       Readln(FO, S); KolGamer:=StrToInt(S);

       //Если игрок выбран то идет  перебор в файле

       if ListBox.ItemIndex<>0 then

         for i:=1 to ListBox.ItemIndex do for j:=1 to 6 do Readln(FO, S);

       //Если доходит очередь до игрока, выбранного из списка, то

       //заполняются значениями объекты окна игры

       with FormGame do begin

         Readln(FO, S); NameGamer:=S;

         Readln(FO, S); Kredit:=StrToInt(S);

         LKredit.Caption:=IntToStr(Kredit);

         Readln(FO, S); SEStavka.Value:=StrToInt(S); SEStavka.MaxValue:=Kredit;

         Readln(FO, S); SEChislo.Value:=StrToInt(S);

         for i:=1 to 2 do begin Readln(FO, S); Kub[i]:=StrToInt(S); end;

         //Вывод граней кубиков

         ImageTable.Canvas.CopyRect(Rect(11,17,71,77),

           ImageKubik.Canvas, Rect((Kub[1]-1)*60,0,(Kub[1]-1)*60+60,60));

         ImageTable.Canvas.CopyRect(Rect(82,17,142,77),

           ImageKubik.Canvas, Rect((Kub[2]-1)*60,0,(Kub[2]-1)*60+60,60));

         StatusBar.Panels[1].Text:='Выпало: ' + IntToStr(Kub[1]+Kub[2]);

         StatusBar.Panels[0].Text:='';

         StatusBar.Panels[2].Text:='Выигрыш:';

       end;

       //Закрытие файла и окна выбора игрока

       CloseFile(FO);

       ModalResult:=mrOK;

     end;

     //---------------------------------------------------------

     //Заполнение списка игроков

     //---------------------------------------------------------

     procedure TFormNew.FormCreate(Sender: TObject);

     begin

       ListBox.Clear; //Очистка списка

       try

         AssignFile(FO,'Players.dat');

         Reset(FO); //Открытие файла для чтения

         //Чтение количества игроков в  файле

         Readln(FO,S); KolGamer:=StrToInt(S);

         if KolGamer>0 then for i:=1 to KolGamer do begin

           Readln(FO, S);        //Чтение имени игрока

           ListBox.Items.Add(S); //Добавление имени в  список

           for j:=1 to 5 do Readln(FO, S); //Пропуск 5 строчек

         end;

         CloseFile(FO);    //Закрытие файла

       except

       on EInOutError do begin  //Если файл не существует

         AssignFile(FO,'Players.dat');

Информация о работе Разработка приложения для Windows, представляющего собой компьютерную игру «Кости»