• silverlight5开发的翻牌游戏


    扑克牌用了一个自定义控件,代码如下

     public class CardButton : Button
        {
            public int state;//是否翻转0是未翻转,1是已翻转
            private static CardButton button;
            public CardButton()
            {
                this.DefaultStyleKey = typeof(CardButton);
               // this.Click += CardButton_Click;
            }

    主要是继承了button控件然后增加了一个属性,记录牌是否翻转,然后修改了样式

     <Style TargetType="local:CardButton">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="local:CardButton">
                        <!--<Border Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}">
                        </Border>-->
                        <Grid x:Name="RootElement">
                            <!--<Rectangle x:Name="BodyElement" Width="260" Height="100"
              Fill="Lavender" Stroke="Purple" RadiusX="16" RadiusY="16" />-->
                            <!--<TextBlock Text="{TemplateBinding Content}" HorizontalAlignment="Center"
              VerticalAlignment="Center" />-->
                            <Image Source="{TemplateBinding Content}" Width="100" />
                        </Grid>

                    </ControlTemplate>
                  
                </Setter.Value>
            </Setter>
        </Style>

    页面上使用了一个wrappanel控件,实现流布局来展示牌

    主页面核心代码如下

       private void InitData()
            {
    
    
                count = 16;
                int[] j = new int[16] { 2, 6, 3, 6, 1, 5, 0, 3, 1, 7, 5, 0, 2, 4, 7, 4 };
                Random r=new Random();
          List<int> arr=     j.OrderBy(x=>r.Next()).ToList<int>();
      
                for (int i = 0; i < 16; i++)
                {
    
                    CardButton button = new CardButton();
                    button.state = 0;
                    button.Name = "btn" + i;
                    button.Content = "image/card.jpg";
                  
                    button.Tag = arr[i].ToString();
                    button.Click += button_Click;
                    Content.Children.Add(button);
                    list.Add(button);
    
                }
            }

    然后定义图片点击事件,两张相同的图片则消失,当点开第3张的时候,前2张翻转过来

     void button_Click(object sender, RoutedEventArgs e)
            {
                CardButton b = (CardButton)sender;
          
                b.state = 1;
                b.Content = "image/" + b.Tag + ".jpg"; ;
                if (list.Count(btn => btn.state == 1) >= 3)
                {
                    foreach (CardButton item in list.Where(btn => btn.state == 0 || btn.state == 1))
                    {
                        item.Content = "image/card.jpg";
                        item.state = 0;
                    }
                 
                    b.state = 1;
                    return;
                }
              
             
              
                foreach (CardButton item in list.Where(btn=>btn.state==1))
                {
                    if (b.Tag.ToString()==item.Tag.ToString()&&b.Name!=item.Name)
                    {
                        
                        count = count - 2;
                        b.Dispose();
                        item.Dispose();
                    }
                }
                #region 游戏结束
                if (count<=0)
                {
                    MessageBox.Show("恭喜你,太聪明了,闯关成功");
                  
                }
                #endregion
            }
  • 相关阅读:
    1755:菲波那契数列
    1788:Pell数列
    3089:爬楼梯
    7832:最接近的分数
    7649:我家的门牌号
    7216:Minecraft
    7213:垃圾炸弹
    2983:谁是你的潜在朋友
    2723:因子问题
    2722:和数
  • 原文地址:https://www.cnblogs.com/bjjjunjie/p/3528689.html
Copyright © 2020-2023  润新知