(9)开发的第一个项目

近期用C#开发了一个小的东西,甚至不能叫工程吧,但是我们做出了3个版本的,还是有点小骄傲的。下面我介绍下:

这是个小游戏,名字叫调皮蛋(Naughty egg),游戏规则非常简单,你的屏幕会响应你的拖动事件,你要避免红色加深,促进绿色加深,来赢取游戏。但是到第三关你就会发现惊喜!

在开发的时候我们也为了一些东西感到困扰,比如控件之间的数据绑定直接在XAML里面就能完成,但是事件的数据要绑定到控件上有点小绕弯子,网上这方面的资料也少,这里我贴一下自己的解决方法,可能很笨,但好在管用。

//数据绑定
        public class ModelBase : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
            public void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }
        }
        public class xue : ModelBase
        {
            private int hp;
            public int HP
            {
                get { return hp; }
                set { hp = value; OnPropertyChanged("HP"); }
            }
        }

        //数据绑定

我首先创建一个接口于INotifyPropertyChanged的基类ModelBase,便于代码的复用。用的时候new一个xue的实例,其中的变量HP已经有绑定的特性。时间响应函数里面只需要改变HP的值就行了,控件里面可以在XAML里面实现:

这样就基本完成了。

说句实在话,WP和Wstore版本的代码基本上一样,直接复制粘贴,需要注意的是屏幕的自适应。上面所说的数据绑定可以完全移植过去,还有就是实现页面的跳转实在太简单了,只要一句话的事,这点java不能比的。在Wp里面拖拽函数有几个,我们选择了最稳定的一个,跟随手指最合适的一个:

 private void finger_PointerMoved(object sender, PointerRoutedEventArgs e)
        {
            Point p = e.GetCurrentPoint(circle).Position;
            Point p2 = e.GetCurrentPoint(rect1).Position;
            mousepoint = e.GetCurrentPoint(circle).Position;
            if (pushDown) {
            if (tag == 0)
            {
                rect1.Fill = new SolidColorBrush(Colors.Red); //矩形的填充颜色为红色!
                changecolor(p2);
            }
            else
            {
                changecolor2(p2);
                rect1.Fill = new SolidColorBrush(Colors.Green); //矩形的填充颜色为绿色!
            }
            }
        }

还有WP中应用的4个基本状态,处理程序的逻辑时大家要注意了,这里不再赘述。下面是程序的一些效果图:

程序的源代码我们整理好后,会放到论坛,作为open source的项目,我们希望更多的开发者拓展这款游戏。

原文地址:https://www.cnblogs.com/shenyuelong/p/4525587.html