本文整理汇总了C#中System.Contract.IsDefined方法的典型用法代码示例。如果您正苦于以下问题:C# Contract.IsDefined方法的具体用法?C# Contract.IsDefined怎么用?C# Contract.IsDefined使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Contract
的用法示例。
在下文中一共展示了Contract.IsDefined方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetOners
//Онеры (для роббера)
public static void GetOners(OnersSwitcher oners, Contract contract, CardsDistribution cd)
{
// Определить масть, запомнить старую масть
CardTrump old_trump = oners.trump;
if (contract == null || !contract.IsDefined() || contract.NoContract)
{
oners.trump = CardTrump.NotYetDefined;
}
else
{
oners.trump = contract.Trump;
}
// Если масть неизвестна, то отменить онеры
if (oners.trump == CardTrump.NotYetDefined)
{
oners.Choise = 0; //-
}
// Взять из распределения карт
if (cd != null && cd.IsDefined())
{
oners.Choise = CountOners(cd, oners.trump);
}
//Использовать введенное пользователем значение
else
{
if (old_trump != oners.trump) //масть изменилась, отменить онеры
oners.Choise = 0; //-
}
}
示例2: RobberScore
public static void RobberScore(DealScoreExt out_score_ext, PairSwitcher pair, ZoneSwitcher zone, Contract contract, Result result, bool BonusForWholeRobber, Robber rob, int robdealNo, bool useOners, OnersSwitcher oners)
{
if (rob.WhereCompleted() != -1 && rob.WhereCompleted() < robdealNo)
{
out_score_ext.Clear();
}
else if (contract.NoContract)
{
out_score_ext.DealWasNotPlayed();
}
else if (!pair.IsDefined() || !zone.IsDefined() || !contract.IsDefined() || !result.IsDefined() || (useOners && !oners.IsDefined()))
{
out_score_ext.Clear();
}
else
{
bool inzone = ZoneSwitcher.IsPairInZone(pair.Pair, zone.Zone);
bool enemy_inzone = ZoneSwitcher.IsPairInZone(pair.Pair == Pairs.EW ? Pairs.NS : Pairs.EW, zone.Zone);
if (result.Quantity >= 0)
{
// --- Если контракт сыгран ---
// Очки за взятки:
int score = contract.Quantity * (SmallHelper.WhatTrumpType(contract.Trump) == TrumpType.Minor ? 20 : 30) + (contract.Trump == CardTrump.NT ? 10 : 0);
if (contract.Contra)
score *= 2;
else if (contract.ReContra)
score *= 4;
// Премия за превышение взяток:
ArrayList bonuses = new ArrayList();
if (result.Quantity > 0)
{
if (contract.Contra)
bonuses.Add(result.Quantity * (inzone ? 200 : 100));
else if (contract.ReContra)
bonuses.Add(result.Quantity * (inzone ? 400 : 200));
else
bonuses.Add(result.Quantity * (SmallHelper.WhatTrumpType(contract.Trump) == TrumpType.Minor ? 20 : 30));
}
if (contract.Quantity == 6) //малый шлем
{
bonuses.Add(inzone ? 750 : 500);
}
else if (contract.Quantity == 7) //большой шлем
{
bonuses.Add(inzone ? 1500 : 1000);
}
// Дополнительная премия за оскорбление:
if (contract.Contra)
bonuses.Add(50);
else if (contract.ReContra)
bonuses.Add(100);
switch (pair.Pair)
{
case Pairs.EW:
out_score_ext.EW_down = score;
// Премия за роббер:
if (BonusForWholeRobber)
{
if (rob.WhereCompleted() == robdealNo)
bonuses.Add(enemy_inzone ? 500 : 700);
}
// Премия за гейм:
else
{
if (rob.WhereCompleted() == robdealNo)
bonuses.Add(500);
else if (rob.DoesDealMakeGame(robdealNo))
bonuses.Add(200);
}
out_score_ext.EW_up = new int[bonuses.Count];
for (int i = 0; i < bonuses.Count; i++)
out_score_ext.EW_up[i] = (int)bonuses[i];
out_score_ext.NS_down = 0;
out_score_ext.NS_up = null;
break;
case Pairs.NS:
out_score_ext.NS_down = score;
// Премия за роббер:
if (BonusForWholeRobber)
{
if (rob.WhereCompleted() == robdealNo)
bonuses.Add(enemy_inzone ? 500 : 700);
}
// Премия за гейм:
else
{
if (rob.WhereCompleted() == robdealNo)
bonuses.Add(500);
else if (rob.DoesDealMakeGame(robdealNo))
bonuses.Add(200);
}
out_score_ext.NS_up = new int[bonuses.Count];
for (int i = 0; i < bonuses.Count; i++)
out_score_ext.NS_up[i] = (int)bonuses[i];
out_score_ext.EW_down = 0;
//.........这里部分代码省略.........
示例3: SportScore
public static void SportScore(SimpleScore out_score, PairSwitcher pair, ZoneSwitcher zone, Contract contract, Result result, bool bInvertScore)
{
if (out_score == null)
return;
if (contract.NoContract)
{
out_score.SetScore(0, 0);
}
else if (pair == null || zone == null || contract == null || result == null || !pair.IsDefined() || !zone.IsDefined() || !contract.IsDefined() || !result.IsDefined())
{
out_score.Born = false;
}
else
{
bool inzone = ZoneSwitcher.IsPairInZone(pair.Pair, zone.Zone);
int iNS = 0, iEW = 0;
if (result.Quantity >= 0)
{
// --- Если контракт сыгран ---
// Очки за взятки:
int score = contract.Quantity * (SmallHelper.WhatTrumpType(contract.Trump) == TrumpType.Minor ? 20 : 30) + (contract.Trump == CardTrump.NT ? 10 : 0);
if (contract.Contra)
score *= 2;
else if (contract.ReContra)
score *= 4;
// Премия за превышение взяток:
int bonus = 0;
if (result.Quantity > 0)
{
if (contract.Contra)
bonus += result.Quantity * (inzone ? 200 : 100);
else if (contract.ReContra)
bonus += result.Quantity * (inzone ? 400 : 200);
else
bonus += result.Quantity * (SmallHelper.WhatTrumpType(contract.Trump) == TrumpType.Minor ? 20 : 30);
}
if (contract.Quantity == 6) //малый шлем
{
bonus += (inzone ? 750 : 500);
}
if (contract.Quantity == 7) //большой шлем
{
bonus += (inzone ? 1500 : 1000);
}
if (score >= 100) //за гейм
{
bonus += (inzone ? 500 : 300);
}
else //за частичную запись
{
bonus += 50;
}
// Дополнительная премия:
int bonus_plus = 0;
if (contract.Contra)
bonus_plus = 50;
else if (contract.ReContra)
bonus_plus = 100;
// Присвоение очков:
if(pair.Pair == Pairs.NS && !bInvertScore || pair.Pair == Pairs.EW && bInvertScore)
iNS = score + bonus + bonus_plus;
else if(pair.Pair == Pairs.EW && !bInvertScore || pair.Pair == Pairs.NS && bInvertScore)
iEW = score + bonus + bonus_plus;
}
else
{
// --- Если контракт проигран ---
int enemy_score = 0;
for (int i = -1; i >= result.Quantity; i--)
{
if (i == -1)
{
if (contract.Contra)
enemy_score += (inzone ? 200 : 100);
else if (contract.ReContra)
enemy_score += (inzone ? 400 : 200);
else
enemy_score += (inzone ? 100 : 50);
}
else if (i == -2 || i == -3)
{
if (contract.Contra)
enemy_score += (inzone ? 300 : 200);
else if (contract.ReContra)
enemy_score += (inzone ? 600 : 400);
else
enemy_score += (inzone ? 100 : 50);
}
else
{
if (contract.Contra)
enemy_score += (inzone ? 300 : 300);
else if (contract.ReContra)
enemy_score += (inzone ? 600 : 600);
else
enemy_score += (inzone ? 100 : 50);
}
}
//.........这里部分代码省略.........