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 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...
随机推荐
- ubuntu12.04的vim配置
ubuntu12.04中使用的vim的版本不支持像语法高亮和文件类型检测等配置 #sudo apt-get install vim vim默认的配置使用起来还不能让人满意,还需要自己配置默认配置文件是 ...
- jfinal获取当前访问路径和端口号
public void generateSingleLicense() throws Exception { System.out.println(getRequest().getRequestURL ...
- 关于js原型的面试题
今天遇到关于javascript原型的一道面试题,现分析下: 原题如下: function A(){ } function B(a){ this.a = a; } function C(a){ if( ...
- acmer -- 最美的情书
2014-09-29 20:51:45 POJ 2482 Fleeting time does not blur my memory of you. Can it really be 4 years ...
- c语言学习之基础知识点介绍(十五):函数的指针
一.函数的指针的介绍 /* 函数指针: 函数的指针,本质上一个指针 指向函数的指针,就是一个函数指针. 回忆:我们写的源代码编译成二进制的指令集,一串交给CPU执行的指令 先存在内存里面,然后CPU读 ...
- c语言学习之基础知识点介绍(十四):指针的进阶
一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占 ...
- meteor中分页库alethes:pages用法汇总
1.添加分页库: meteor add alethes:pages 2.新建分页: Pages = new Meteor.Pagination("collection-name") ...
- web服务器压力测试工具
http_load 是运行在linux操作系统上的命令行测试工具, 用来对网站做压力测试. 下载地址:http://www.acme.com/software/http_load/http_load- ...
- jQuery 源码分析2: jQuery.fn.init
//jQuery.fn.intit 中使用到的外部变量: // 判断是否为HTML标签或#id rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w ...
- Java学习笔记(基本数据类型和变量命名规则)
java基本数据类型 变量 1.变量就是可变的量. 2.常量就是不可变的量. 3.字面量:Java的变量和常量中存放的具体的数据成为字面量. 变量 命名规则: (1)首字母是英文字母.$或下划线,由字 ...