Игра Кости

Автор работы: Пользователь скрыл имя, 12 Ноября 2009 в 17:46, Не определен

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

Игра кости на Delphi

Файлы: 24 файла

Abbox1.dcu

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

abbox4.pas

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

abbox4.dfm

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

Cursproj.dcu

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

kosti.dpr

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

abbox2.dcu

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

abbox3.dcu

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

abbox4.dcu

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

k.res

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

kos.avi

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

kos1.avi

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

kosti.res

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

abbox3.pas

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

abbox3.dfm

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

abbox2.pas

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

abbox2.dfm

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

Cursproj.pas

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

Cursproj.dfm

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

kosti.dof

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

kosti.cfg

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

К.Р..doc

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

//Процедура защиты  от ввода недопустимых символов  в поле ввода числа

begin

   //если  введен символ "1", то следующим может быть только "0", "1" или "2"

if edit1.Text='1' then

   begin

    edit1.MaxLength:=2;

    case key of

    '0'..'2',#8:

    else key:=chr(0); //иначе символ не отображать

    end

   end

  else  //Пока  ничего не введено (ноль не  отображается).

   case key of

   '1'..'9',#8: //отображать  только цифры. Разрешено использовать Backspase.

   else key:=chr(0);

  end;

  //Если введена  цифра 2,3,4,5,6,7,8 или 9 максимальная  длинна строки 1 символ.

  if   (edit1.Text='2') or (edit1.Text='3') or (edit1.Text='4')

     or(edit1.Text='5') or (edit1.Text='6') or (edit1.Text='7')

     or(edit1.Text='8') or (edit1.Text='9') then

     edit1.MaxLength:=1

  end; 

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

   // Для поля ввода ставки запрет ненужных символов анологичен.

begin

   edit2.MaxLength:=3;

   if (edit2.Text='') or (strtoint(edit2.text)>strtoint(l4.caption)) then

   case key of

   '1'..'9',#8:

   else key:=chr(0)

   end

   else

   case key of

   '0'..'9',#8:

   else key:=chr(0)

   end

end;

//Основная часть  программы. Клик на кнопке 'Играть'.

procedure TForm1.Button1Click(Sender: TObject);

//Используемые  переменные.

// St -  ставка  игрока.

// bank- переменная  отвечающая за кол-во очков.

// Sum - сумма цифр  двух костей.

// Chislo - число загаданное игроком.

// K1,k2 - выпавшие  кости.

var sum,chislo,k1,k2:byte;st,bank:integer;

   // "Перехват" возможных ошибок.

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

begin

    // Если  не введены ни число ни ставка.

   if (edit1.Text='') and (edit2.Text='') then

     begin

       // Выводится соответствующее сообщение  и программа выходит из процедуры.

       messagedlg('Введите число и ставку',mterror,[mbok],0);

       edit1.SetFocus;

       exit;

     end;

     // Если не введено число.

     if  edit1.Text='' then

      begin

       // Выводится соответствующее сообщение и программа выходит из процедуры.

       messagedlg('Введите число',mterror,[mbok],0);

       edit1.SetFocus;

       exit;

      end;

     // Если не введена ставка.

     if  edit2.Text='' then

      begin

       // Выводится соответствующее сообщение и программа выходит из процедуры.

       messagedlg('Сделайте ставку',mterror,[mbok],0);

       edit2.SetFocus;

       exit;

      end;

     // Если ставка равна нолю

     if edit2.Text='0' then

      begin

       // Выводится соответствующее сообщение и программа выходит из процедуры.

       messagedlg('Ноль это не ставка',mterror,[mbok],0);

       edit2.SetFocus;

       exit;

      end;

     // Преобразовываем строковые данные  полей для ввода числа иставки  и

     // заносим в соответствующие переменные.

     st:=strtoint(edit2.text);

     chislo:=strtoint(edit1.text);

     // Если игрок загадал единицу.

     if chislo=1 then

      begin

       // Выводится соответствующее сообщение  и программа выходит из процедуры.

       messagedlg('Сумма цифр двух костей '+#13+

                  'не может быть равна - 1.',mterror,[mbok],0);

       edit1.Text:='';

       edit1.SetFocus;

       exit;

      end;

     // Если игрок сделал ствку больше  чем есть в банке.

     if st>strtoint(l4.caption) then

      begin

       // Выводится соответствующее сообщение  и программа выходит из процедуры.

       messagedlg('В долг играть нельзя',mterror,[mbok],0);

       edit2.SetFocus;

       exit;

      end; 

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

     // "Прячем" компоненты для вывода  иллюстраций.

     image1.Visible:=false;

     image2.Visible:=false;

     // "Показываем" компоненты (экраны) для вывода AVI-файлов.

     panel1.Visible:=true;

     panel2.Visible:=true;

     // Открываем медиаплейеры и проигрываем AVI-файлы.

     // Не предусматриваем исключения  т.к. предусмотрели при закрытии

     // формы для ввода путей к  AVI - файлам.

     mp1.Open;

     // Задаём размеры области вывода AVI-файла.

     mp1.DisplayRect:=rect(0,0,105,105);

     // Воспроизведение

     mp1.Play;

     mp2.Open;

     // Задаём размеры области вывода AVI-файла.

     mp2.DisplayRect:=rect(0,0,105,105);

     // Воспроизведение

     mp2.Play;

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

     // Что-бы проиграть AVI-файл.

     sleep(700);

     // "Прячем" компоненты (экраны) для  вывода AVI-файлов.

     panel1.Visible:=false;

     panel2.Visible:=false;

     // "Показываем" компоненты для вывода иллюстраций.

     image1.Visible:=true;

     image2.Visible:=true;

     // Включаем генератор случайных чисел.

     randomize;

     // "Бросаем" кубики.

     // Присваеваем соответствующим переменным  функцию random(6) и прибавляем 1.

     k1:=random(6)+1;

     k2:=random(6)+1;

     // Заносим в переменную сумму  цифр костей.

     sum:=k1+k2;

     // Создаём битовый образ для  вывода изображения первого кубика.

     r1:=tbitmap.Create;

     // Загружаем картинку из файла  ресурсов.

     // Имя рисунка указываем с учётом  выпавшей цифры.

     r1.LoadFromResourceName(hinstance,'b'+inttostr(k1));

     // Выводим картинку.

     image1.Canvas.Draw(0,0,r1);

     // Создаём битовый образ для  вывода изображения второго кубика.

     r2:=tbitmap.Create;

     // Загружаем картинку из файла  ресурсов.

     // Имя рисунка указываем с учётом  выпавшей цифры.

     r2.LoadFromResourceName(hinstance,'b'+inttostr(k2));

     // Выводим картинку.

     image2.Canvas.Draw(0,0,r2); 

{=========================================================} 

// Следующая  часть программы определяет проиграл  или выиграл игрок.

// А так же  величину выигрыша или проигрыша.

    // Если  загаданное число равно сумме выпавших костей.

    if sum=chislo then

     begin

      // Ставку увеличиваем в 4 раза, прибавляем к имеющимся очкам  в банке.

      bank:=strtoint(l4.caption)+4*st;

      // В поле для вывода кол-ва очей заносим теперешнее значение.

      l4.Caption:=inttostr(bank);

      // В метку для вывода информации

      // выводим сообщение о выигрыше  и его кол-во.

      l5.Caption:='Невероятно!!! Вы угадали!!!'+#13+

                  'Выигрыш - '+inttostr(4*st);

     end

    else

    // Следуюшее условие. Если и загаданное число и сумма цифр двух

    // костей одновременно больше или меньше семи.

    if (chislo<7) and (sum<7) or (chislo>7) and (sum>7) then

     begin

      // Ставку прибавляем к имеющимся  очкам в банке.

      bank:=strtoint(l4.caption)+st;

      // В поле для вывода кол-ва очей заносим теперешнее значение.

      l4.Caption:=inttostr(bank);

      // В метку для вывода информации

      // выводим сообщение о выигрыше  и его кол-во.

      l5.Caption:='Вы выиграли - '+inttostr(st)+#13+

                  'Вам определённо везёт!';

     end

    else

    // Все  остальные ситуации - проигрышные.

     begin

      // От имеющихся очей в банке  отнимаем ставку.

      bank:=strtoint(l4.caption)-st;

      // В поле для вывода кол-ва очей заносим теперешнее значение.

      l4.Caption:=inttostr(bank);

      // В метку для вывода информации

      // выводим сообщение о проигрыше  и его кол-во.

      l5.Caption:='Вы проиграли - '+inttostr(st)+#13+

                  'Попробуйте ещё!';

     end;

     // Определение победы или поражения  в игре.

     // Если кол-во очей в банке игрока превышает 1000, игрок победил.

     if strtoint(l4.caption)>=1000 then

     // С помощью диалогового окна  с одной кнопкой

     // выводим сообщение о победе  в игре.

      begin

       messagedlg('    Вы обанкротили  казино!!!'+#13+

                     'Вы можете начать заново.',mtcustom,[mbok],0);

       // Свойству "доступность" кнопки  и пункту меню 'Играть'

       // присваеваем значение False.

       n3.Enabled:=false;

       button1.Enabled:=false;

      end;

     // Если кол-во очей в банке игрока равно 0, игрок проиграл.

     // Заметим, что кол-во очей в  банке не может быть отрицательным,

     // т.к. игрок не может поставить  больше чем есть в банке,

     // поэтому не используем знак '<='.

     if strtoint(l4.caption)=0 then

     // выводим сообщение о поражении в игре.

kosti.exe

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

Abbox1.pas

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

Abbox1.dfm

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

Информация о работе Игра Кости