• 初学Silverlight,用它写了一个小游戏“宝石迷阵”


    游戏在此,鼠标右键可以安装到本地喔!
    提示功能需要当前关卡所得分数超过100分才能使用
    获取 Microsoft Silverlight

    学习一个东西最好的办法就是去用它。这句话一点没错,通过写这个游戏,确实让我初窥了Silverlight的门径。

     

    本来还有很多需要完善的地方比如音效、开始菜单动画以及一些高级玩法。不巧最近鼻炎发作,头痛难耐,实在是提不起精神来完善它了,索性就放出来吧。

     

    宝石迷阵这个游戏的规则很简单,通过交换两个相连宝石的位置,使横着或竖着的相连并相同的宝石超过三个,然后消除它们,相同的越多,所得分数就越高。当交换位置后没有可消除的宝石,就把这两个相连的宝石的位置还原。

     

    bijou 来表示宝石,宝石具有ColumnRow这两个属性。像这两个属性赋值时,也就修改了宝石在Grid控件里的位置:

    bijou.cs

    用一个二维数组来存储所有宝石的信息

    private bijou[,] bijous = new bijou[MaxColumn, MaxRow];

     

    现在,要实现通过bijous[Column, Row] 来得到指定行和列的宝石的引用。就要保证每一个宝石在bijous中的位置不会错误,并且在Gird中的行和列也要和bijous数组的索引值一样。为此,我实现了一个索引器


     

    索引器

     

    在游戏中,每一个宝石都可以上下左右移动(除了位置在边缘的宝石),所以,我写了4个方法,作用是把指定宝石向四个方向移动,并指定其在没有可消除宝石的情况下是否还原。

    下面贴出Up方法的代码:

     

    Up

     

    检测是否可消除,我用了一个全局检测的办法,当一个宝石执行换位操作时,执行检测是否可消除的方法,如果有可消除的宝石,返回宝石的List列表,如果没有,返回null


     

    GetErasablebijou


     

    接下来,就是消除宝石的方法,它接受一个List<bijou>参数,删除里面所有的bijou并以动画显示出来。


     

    RemoveListBijou

     

    消除该消除的宝石后,并不能直接在原位上填充新的宝石,这里需要一个动画效果,简单的模拟真实物理环境:上方的宝石会因为下面的宝石的消失而下落,新填充的宝石会在被消除宝石的那一列的0行出现,为此,要实现一个方法“FillNull

     

    FillNull

     

    整个游戏的流程大概就是这样了。下面放出源代码。
    https://files.cnblogs.com/zhubenwuzui/BejeweledRelease.rar

    由于本人是学生+新手,写出的代码肯定有很多缺陷,还请大家多多指教!
    QQ:234446552(加我时请注明来自博客园)
    本文地址:http://www.cnblogs.com/zhubenwuzui/archive/2009/09/13/BejeweledbySilverlight.html
    准备转载本文的各大网站的编辑们,在转载的同时请保留本文的链接并注明出处,谢谢!

  • 相关阅读:
    android技能树
    BitmapFactory 读取图片方法总结
    如何利用SecureCRT连接Ubuntu12.0.4
    Ubuntu 12.04如何从登录界面登录root
    ubuntu中vi在编辑状态下方向键不能用的解决
    在ubuntu12.0.4上搭建samba服务器以实现文件共享
    怎么利用ultraISO对一个文件夹制作ISO镜像
    VMware网络选项分析
    在vmware 6.5+ubuntu12.04上安装VMware tools出现问题的分析
    在ubuntu中获得root权限
  • 原文地址:https://www.cnblogs.com/DreamCreator/p/BejeweledbySilverlight.html
Copyright © 2020-2023  润新知