近期用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的项目,我们希望更多的开发者拓展这款游戏。