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

 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 = ;
int[] j = new int[] { , , , , , , , , , , , , , , , };
Random r=new Random();
List<int> arr= j.OrderBy(x=>r.Next()).ToList<int>(); for (int i = ; i < ; i++)
{ CardButton button = new CardButton();
button.state = ;
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 = ;
b.Content = "image/" + b.Tag + ".jpg"; ;
if (list.Count(btn => btn.state == ) >= )
{
foreach (CardButton item in list.Where(btn => btn.state == || btn.state == ))
{
item.Content = "image/card.jpg";
item.state = ;
} b.state = ;
return;
} foreach (CardButton item in list.Where(btn=>btn.state==))
{
if (b.Tag.ToString()==item.Tag.ToString()&&b.Name!=item.Name)
{ count = count - ;
b.Dispose();
item.Dispose();
}
}
#region 游戏结束
if (count<=)
{
MessageBox.Show("恭喜你,太聪明了,闯关成功"); }
#endregion
}

silverlight5开发的翻牌游戏的更多相关文章

  1. 使用Html5+C#+微信 开发移动端游戏详细教程 :(三)使用html5引擎搭建游戏框架

    教程里的案例我们是通过H5游戏引擎开发,目前H5的游戏引擎比较好用的是白鹭,不过对于新手来说白鹭的开发环境和工具使用过于复杂,这里推荐一个国内大神编写的游戏引擎:lufylegend. 直接在页面引入 ...

  2. 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)

    在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 ...

  3. Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)

    Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...

  4. Swift - 跑酷游戏开发(SpriteKit游戏开发)

    一,下面演示了如何开发一个跑酷游戏,实现的功能如下: 1,平台工厂会不断地生成平台,并且向左移动.当平台移出游戏场景时就可将其移除. 2,生成的平台宽度随机,高度随机.同时短平台踩踏的时候会下落. 3 ...

  5. 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...

  6. pygame开发滑雪者游戏

    pygame开发滑雪者游戏 一.实验说明 下述介绍为实验楼默认环境,如果您使用的是定制环境,请修改成您自己的环境介绍. 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou,该用户具备 s ...

  7. 斗牛app上架应用宝、牛牛手机游戏推广、百人牛牛app应用开发、棋牌游戏上传、手游APP优化

    联系QQ:305-710439斗牛app上架应用宝.牛牛手机游戏推广.百人牛牛app应用开发.棋牌游戏上传.手游APP优化 iOS开发iPhone/iPad平台安卓手机软件开发机型覆盖范围 超过113 ...

  8. JavaScript案例开发之扑克游戏

    随着时代的发展,知识也在日益更新,但是基础知识永远不会过时,它是新时代的基石,更是我们进一步学习的保障,下面带着大家用JavaScript开发一款真正的扑克游戏,和大家一起分享,希望你们能够喜欢:闲话 ...

  9. 【转】利用 three.js 开发微信小游戏的尝试

    前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...

随机推荐

  1. ActionBarSherlock

    https://github.com/JakeWharton/ActionBarSherlock https://github.com/ddewaele/GoogleMapsV2WithActionB ...

  2. [Javascript] Object.freeze() vs Object.seal()

    let person = { firstName: "Zhentian", lastName: "Wan" }; /*Object.freeze() makes ...

  3. [React] React Fundamentals: First Component

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. Linux软连接和硬链接(摘录)

    1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...

  5. ajax异步传输

    2015.12.7 ajax异步传输 1.ajax :不是一个新的技术. js(XMLHTTPRequest) html css dom xml 这里只是一个新的js的内置对象.这算是js想要变得流行 ...

  6. javascript进击(九)参考手册

    完整的 Number 对象参考手册 如需可用于 Number 对象的所有属性和方法的完整参考,请访问我们的 Number 对象参考手册. 该参考手册包含每个属性和方法的描述和实例. 完整的 Strin ...

  7. wap上传图片跨域发送post请求

    wap和接口交互是跨域请求,一般只能通过Jsonp来进行数据的吞吐,然而jsonp只是GET请求,不能发送post请求,所以会对项目需求有所限制. 需求:wap跨域通过接口上传图片. 条件:接口是C# ...

  8. 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能

    转自http://jeffblog.sinaapp.com/archives/501 首先我们先下载一个文件GetSummery,这里我提供了,大家可以直接下载:下载 我们在数据库建立一个表,并给表中 ...

  9. 20151213Jquery学习笔记--插件

    插件(Plugin)也成为 jQuery 扩展(Extension),是一种遵循一定规范的应用程序接口编 写出来的程序.目前 jQuery 插件已超过几千种,由来自世界各地的开发者共同编写.验证 和完 ...

  10. python中关于正则表达式一

    ab+,描述一个'a'和任意个'b',那么'ab','abb','abbbbb' 正则表达式可以:1.验证字符串是否符合指定特征,比如验证是否是合法的邮件地址 2.用来查找字符串,从一个长的文本中查找 ...