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 = ;
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开发的翻牌游戏的更多相关文章
- 使用Html5+C#+微信 开发移动端游戏详细教程 :(三)使用html5引擎搭建游戏框架
教程里的案例我们是通过H5游戏引擎开发,目前H5的游戏引擎比较好用的是白鹭,不过对于新手来说白鹭的开发环境和工具使用过于复杂,这里推荐一个国内大神编写的游戏引擎:lufylegend. 直接在页面引入 ...
- 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)
在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 ...
- Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)
Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...
- Swift - 跑酷游戏开发(SpriteKit游戏开发)
一,下面演示了如何开发一个跑酷游戏,实现的功能如下: 1,平台工厂会不断地生成平台,并且向左移动.当平台移出游戏场景时就可将其移除. 2,生成的平台宽度随机,高度随机.同时短平台踩踏的时候会下落. 3 ...
- 怎样在Android开发中FPS游戏实现的两种方式比较
怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...
- pygame开发滑雪者游戏
pygame开发滑雪者游戏 一.实验说明 下述介绍为实验楼默认环境,如果您使用的是定制环境,请修改成您自己的环境介绍. 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou,该用户具备 s ...
- 斗牛app上架应用宝、牛牛手机游戏推广、百人牛牛app应用开发、棋牌游戏上传、手游APP优化
联系QQ:305-710439斗牛app上架应用宝.牛牛手机游戏推广.百人牛牛app应用开发.棋牌游戏上传.手游APP优化 iOS开发iPhone/iPad平台安卓手机软件开发机型覆盖范围 超过113 ...
- JavaScript案例开发之扑克游戏
随着时代的发展,知识也在日益更新,但是基础知识永远不会过时,它是新时代的基石,更是我们进一步学习的保障,下面带着大家用JavaScript开发一款真正的扑克游戏,和大家一起分享,希望你们能够喜欢:闲话 ...
- 【转】利用 three.js 开发微信小游戏的尝试
前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...
随机推荐
- dubbo使用方法
dubbo使用方法. Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载. ...
- Could not initialize class org.apache.log4j.LogManager 报错
部署项目的时候,在windows下一切正常,但是在centos下就发生如下错误 Caused by: java.lang.ExceptionInInitializerError at com.dsid ...
- 给未来的你——李开复2011级大学新生演讲
2011年09月26日08:30 来源:<中国青年报> <中国青年报>的读者朋友们: 你们肩负着中华的未来,你们身上正涌动着创新的血脉! 无论你在哪所学校,哪个城市,你都是与众 ...
- javaHDU1003Max Sum
import java.util.Scanner; public class Sum {public static void main(String args[]) {Scanner cin=n ...
- cglib源码分析(四):cglib 动态代理原理分析
本文分下面三个部分来分析cglib动态代理的原理. cglib 动态代理示例 代理类分析 Fastclass 机制分析 一.cglib 动态代理示例 public class Target{ publ ...
- 【排障】每次打开word都提示要安装配置
为什么每次打开word都提示要安装配置?很多人在打开word时,总是提示要安装配置一遍,花去不少时间,这是由于电脑里有两个不同版本的office软件,产生的原因可能是原来的卸载了没卸载干净,或是安装了 ...
- JVM工作原理和特点
操作系统装入JVM,是通过jdk中的java.exe来完成,通过以下4个步骤: 1. 创建JVM装载环境和配置: JVM装入系统,JVM提供的方式是操作系统的动态链接文件.文件就是一个装入路径的问题, ...
- thinkphp中关于rbac的两个session
最近在做单点登录,需要session由sso的client生成.所以研究了下RBAC的类的代码. 有了这两个seesion就可以用rbac进行权限验证 $_SESSION[C('ADMIN_AUTH_ ...
- SQL 收缩数据库文件大小
USE WebExam; GO ALTER DATABASE WebExam SET RECOVERY SIMPLE; GO -- 收缩文件到 1 MB. ); GO ALTER DATABASE W ...
- A题笔记(14)
Reverse Words in a String : http://oj.leetcode.com/problems/reverse-words-in-a-string/ 代码 : https:// ...