public static bool IsSet(SetCard setCard1, SetCard setCard2, SetCard setCard3) { Contract.Requires <ArgumentNullException>(setCard1 != null); Contract.Requires <ArgumentNullException>(setCard2 != null); Contract.Requires <ArgumentNullException>(setCard3 != null); Contract.Requires <ArgumentOutOfRangeException>(setCard1 != setCard2); Contract.Requires <ArgumentOutOfRangeException>(setCard3 != setCard1 && setCard3 != setCard2); IList <int> c1 = setCard1.Profile; IList <int> c2 = setCard2.Profile; IList <int> c3 = setCard3.Profile; bool isSet = true; for (int i = 0; i < 4; i++) { if (c1[i] == c2[i]) { isSet = isSet && (c2[i] == c3[i]); } else { isSet = isSet && ((c1[i] != c3[i]) && (c2[i] != c3[i])); } if (!isSet) { break; } } return(isSet); } // bool IsSet()
public static Drawing GetFullCardDrawing(SetCard setCard) { Drawing designDrawing = GetCardDesignDrawing(setCard); DrawingGroup group = new DrawingGroup(); group.Children.Add(s_cardDrawing); group.Children.Add(designDrawing); return(group); }
private void resetMaterials() { if (m_set != null) { for (int i = 0; i < m_cards.Count; i++) { SetCard card = m_set[i]; m_cards[i].SetCard(card); } } }
private static SetCard[] GetDeck() { SetCard[] cards = new SetCard[c_deckSize]; for (int i = 0; i < c_deckSize; i++) { SetCard setCard = new SetCard(i); cards[setCard.Index] = setCard; } return(cards); }
public void SetCard(SetCard card) { if (m_card != card) { m_card = card; if (m_card != null) { Drawing drawing = SetCardDrawingFactory.GetFullCardDrawing(m_card); DrawingBrush brush = new DrawingBrush(drawing); DiffuseMaterial material = new DiffuseMaterial(brush); material.Freeze(); m_geometry.Material = material; } else { m_geometry.Material = new DiffuseMaterial(Brushes.Transparent); } } }
public static bool Convert(bool canPlay, SetCard card) { return(canPlay && (card != null)); }
public static Drawing GetCardDesignDrawing(SetCard setCard) { Contract.Requires <ArgumentNullException>(setCard != null); DrawingGroup drawingGroup = new DrawingGroup(); #region Border RectangleGeometry cardBorderGeometry = new RectangleGeometry(new Rect(s_cardSize)); GeometryDrawing cardBorderDrawing = new GeometryDrawing(null, s_borderPen, cardBorderGeometry); drawingGroup.Children.Add(cardBorderDrawing); #endregion #region Brush Brush itemBrush = null; switch (setCard.Fill) { case SetFill.Solid: switch (setCard.Color) { case SetColor.Green: itemBrush = Brushes.Green; break; case SetColor.Purple: itemBrush = Brushes.Purple; break; case SetColor.Red: itemBrush = Brushes.Red; break; } break; case SetFill.Stripe: switch (setCard.Color) { case SetColor.Green: itemBrush = s_stripedGreenBrush; break; case SetColor.Purple: itemBrush = s_stripedPurpleBrush; break; case SetColor.Red: itemBrush = s_stripedRedBrush; break; } break; case SetFill.Empty: itemBrush = Brushes.Transparent; break; } #endregion Pen itemPen = null; switch (setCard.Color) { case SetColor.Green: itemPen = s_greenPen; break; case SetColor.Purple: itemPen = s_purplePen; break; case SetColor.Red: itemPen = s_redPen; break; } Point startCenter = new Point(s_cardSize.Width / 2, s_cardSize.Height / 2); if (setCard.Count == 2) { startCenter.Y -= c_centerOffset / 2; } else if (setCard.Count == 3) { startCenter.Y -= c_centerOffset; } GeometryGroup geometryGroup = new GeometryGroup(); for (int i = 0; i < setCard.Count; i++) { Geometry itemGeometry = null; switch (setCard.Shape) { case SetShape.Diamond: itemGeometry = GetDiamondGeometry(); break; case SetShape.Oval: itemGeometry = new RectangleGeometry( new Rect(s_itemSize), s_itemSize.Height / 2, s_itemSize.Height / 2); break; case SetShape.Squiggle: itemGeometry = new PathGeometry(s_squigglePathFigureCollection); break; } itemGeometry.Transform = GetCenterTransform(itemGeometry, startCenter); geometryGroup.Children.Add(itemGeometry); startCenter.Y += c_centerOffset; } Debug.Assert(itemBrush != null); Debug.Assert(itemPen != null); GeometryDrawing itemDrawing = new GeometryDrawing(itemBrush, itemPen, geometryGroup); drawingGroup.Children.Add(itemDrawing); return(drawingGroup); }