Pref  

PR()ject Pref

 

Сей программный продукт явился результатом моего недавнего увлечения игрой в преферанс. Игра оказалась настолько захватывающей и всепоглощающей, что привела к моим нескончаемым изысканиям в данной науке. Денно и нощно изучая старинные трактаты о делах и подвигах древних преферансистов, служившиx на благо царя и отечества, у меня возникло желание поведать о сим вам, нашими потомкам, дабы не кануло в лету сия история государства российского. Взял я в руки перо и пергамент и накорябал две кривые строчки, не дабы увековечить себя, а дабы донести до вас всю красоту и прелесть старинной игры.

Прошу не судить меня строго, ибо это не последний раз, когда вы откапываете сию странную и непонятную вещь в древних развалинах. Найденные ошибки и неточности, а также всяческие пожелания прошу вас закопать по адресу support@project.viptop.ru с пометкой PR()ject Pref, дабы я мог незамедлительно вам ответить. За сим разрешите откланяться и перейти к официальной части.

С уважением, PR()ject.

 

О программе
PR()ject Pref предназначен для подсчета вистов при игре в преферанс двух или трех человек.
PR()ject Pref не требует инсталяции.
Поддерживаются русский и английский языки.

3 игрока, русский интерфейс
Перемещение основного окна приложения осуществляется буксировкой мышью за любую его часть.
Двойной щелчек мышью в основном окне минимизирует приложение.

 


2 игрока, английский интерфейс
Щелчек правой кнопкой мыши в основном окне приложения вызывает выпадающее меню.
Кнопка "Reset/Очистить" обнуляет все поля.
Кнопка "?" вызывает помощь.

Настройки
Ярлыки на рабочем столе, в меню "Пуск" и в меню "Программы" создаются с помощю диалогового окна "Настройки" .

begin
top:=MainForm.top
+(MainForm.Height-Height) div 2;
Left:=MainForm.Left
+(MainForm.Width-Width) div 2;
end;

Подсчет вистов проводится по следующим алгоритмам:

  Для 3-х игроков
(нижнее поле основного окна соответствует 3-му игроку, левое - 1-му)
 
Пуля1:=Пуля1-Гора1;
Пуля2:=Пуля2-Гора2;
Пуля3:=Пуля3-Гора3;
Сумма:=Пуля1+Пуля2+Пуля3;
Если abs(Сумма) mod 3 = 1, то
Висты2 := -signum(Сумма)*3;
Висты3 :=-signum(Сумма)*3;
Пуля1 :=Пуля1-signum(Сумма);
Сумма:=Сумма-signum(Сумма);
Если abs(Сумма) mod 3 = 2, то
Висты2 :=signum(Сумма)*3;
Висты3 :=signum(Сумма)*3;
Пуля1 :=Пуля1+signum(Сумма);
Сумма:=Сумма+signum(Сумма);
Если abs(Сумма) mod 3 = 0, то
Висты2:=0;
Висты3:=0;
Висты1 := (Пуля1-Сумма/3)*10 + Висты1на2 - (Висты2на1 + Висты2) + Висты1на3 - (Висты3на1 + Висты3);
Висты2 := (Пуля2-Сумма/3)*10 + (Висты2на1 + Висты2) - Висты1на2 + Висты2на3 - Висты3на2;
Висты3 := (Пуля3-Сумма/3)*10 + Висты3на2 - Висты2на3 + (Висты3на1 + Висты3) - Висты1на3;

 

Для 2-х игроков
(нижнее поле основного окна соответствует 2-му игроку)

 
Пуля1:=Пуля1-Гора1;
Пуля2:=Пуля2-Гора2;
Сумма:=Пуля1+Пуля2;
Если abs(Сумма) mod 2= 1, то
Висты2 := -signum(Сумма)*5;
Пуля1 :=Пуля1-signum(Сумма);
Сумма:=Сумма-signum(Сумма);
Если abs(Сумма) mod 2= 0, то
Висты2:=0;
Висты1 := (Пуля1-Сумма/2)*10 + Висты1на2 - (Висты2на1 + Висты2);
Висты2 := (Пуля2-Сумма/2)*10 + (Висты2на1 + Висты2) - Висты1на2;

где
abs(x)
mod x
signum(x)
Пуля1
Гора1
Висты1
Висты1на2
и тд.
- абсолютная величина x,
- деление по модулю x,
- знак x,
- пуля 1-го игрока,
- гора 1-го игрока,
- висты 1-го игрока,
- висты 1-го игрока на 2-го

http://project.viptop.ru/
support@project.viptop.ru