Silverlight五子棋

本文分享了一款使用Silverlight开发的五子棋游戏实践教程。作者从搭建开发环境开始,逐步介绍了如何创建棋盘、绘制棋子及实现下棋功能。通过跟随本教程,读者可以了解Silverlight的基本用法并掌握简单的游戏开发技巧。


前几天看到 网上1篇一步一步silverlight--五子棋很有感触,好久没有动笔写自己的学习心得了...
照猫画虎 这几天讲课用到silverlight顺便也写了个五子棋的demo,这里记下步骤供同好者交流提意。

五子棋游戏不大,但要实现全部功能也是不少,我这里本着入门练习原则,仅将基本功能做一开发。
基本该有的 不外乎 棋盘、棋子和下棋落子三块,有了这个思路就是动手了。
这里我的开发环境是:vs2010+silverlight4

演示地址:
http://www.deepstudy.cn/demo/silverlight/wuziqi/

http://www.deepteach.com/

1、vs中单击菜单,文件-〉新建项目,左侧树选择“silverlight”,右侧选择Silverlight应用程序,确定创建解决方案。
2、双击打开“MainPage.xaml”,在设计器中 拖拽 左侧 Canvas控件 到 视图中设置宽高650,背景色#FFcccccc,Margin="10,10,0,0",Name="cQiPan"

MainPage.xaml代码如下:

Code:
  1. <UserControlx:Class="五子棋.MainPage"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. mc:Ignorable="d"xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"d:DesignHeight="710"d:DesignWidth="870">
  7. <Gridx:Name="LayoutRoot"Background="White">
  8. <CanvasHeight="650"HorizontalAlignment="Left"Name="cQiPan"VerticalAlignment="Top"Width="650"Background="#FFcccccc"Margin="10,10,0,0"></Canvas>
  9. </Grid>
  10. </UserControl>

Ctrl+F5开始执行就可以在浏览器中看到要画的棋盘区域了,有了棋盘区域,再横竖画12条线不就有了棋盘了么,


3、双击打开关联文件“MainPage.xaml.cs”在MainPage()构造方法下边 添加画棋盘的线、画棋盘两个方法

Code:
  1. ///<summary>
  2. ///画棋盘
  3. ///</summary>
  4. publicvoidDrawBoard(){
  5. for(inti=1;i<=12;i++)
  6. {
  7. huaQipanLine(50,50*i,50*12,50*i);//画横线
  8. huaQipanLine(50*i,50,50*i,50*12);//画竖线
  9. }
  10. }
  11. ///<summary>
  12. ///画棋盘的线
  13. ///</summary>
  14. ///<paramname="x1"></param>
  15. ///<paramname="y1"></param>
  16. ///<paramname="x2"></param>
  17. ///<paramname="y2"></param>
  18. publicvoidhuaQipanLine(intx1,inty1,intx2,inty2){
  19. Linel=newLine();
  20. l.X1=x1;//50
  21. l.Y1=y1;//50
  22. l.X2=x2;//50*12;
  23. l.Y2=y2;//50
  24. l.Stroke=newSolidColorBrush(Colors.Black);
  25. cQiPan.Children.Add(l);
  26. }

然后在 MainPage()构造方法中加入代码

Code:
  1. DrawBoard();

Ctrl+F5开始执行就可以在浏览器中看到画的棋盘了


4、有了棋盘,当然得有棋子,这里我先定义一个方法 用来画棋子

Code:
  1. ///<summary>
  2. ///画棋子
  3. ///</summary>
  4. publicvoidDrawChessman(boolchess_color,Pointpt)
  5. {
  6. Ellipseel=newEllipse();
  7. el.Fill=newSolidColorBrush(chess_color?Colors.Black:Colors.White);
  8. el.Width=50;
  9. el.Height=50;
  10. cQiPan.Children.Add(el);
  11. //Canvas.SetLeft(el,50/2);
  12. //Canvas.SetTop(el,50/2);
  13. //Canvas.SetLeft(el,(int)pt.X-35);
  14. Canvas.SetLeft(el,(Math.Round((pt.X-cQiPan.Margin.Left)/50))*50-25);
  15. Canvas.SetTop(el,(Math.Round((pt.Y-cQiPan.Margin.Top)/50))*50-25);
  16. }

显然只要调用执行这个方法就可以在指定的位置画个棋子出来。
5、棋子出来了 什么时候画啊,事件驱动--当然是点击棋盘cQiPan(Canvas控件)时响应事件中画了,
在“MainPage.xaml”编辑器下修改Canvas控件增加了一个MouseLeftButtonDown的事件回车 ,在隐藏代码中会相应的出现鼠标左键按下的事件响应函数private void cQiPan_MouseLeftButtonDown(object sender, MouseButtonEventArgs e),找到他修改为

Code:
  1. ///<summary>
  2. ///棋盘鼠标单击事件画棋子
  3. ///</summary>
  4. boolchess_color=true;
  5. privatevoidcQiPan_MouseLeftButtonDown(objectsender,MouseButtonEventArgse)
  6. {
  7. Pointpt=e.GetPosition(this);
  8. DrawChessman(chess_color,pt);
  9. if(chess_color)
  10. {
  11. chess_color=false;
  12. }else{
  13. chess_color=true;
  14. }
  15. }

保存两个文件
Ctrl+F5开始执行 在棋盘上单击就可以下五子棋了


虽说可以下棋玩了,但要想实际应用 则有很多要考虑和开发的...代码没做解释,不难,实在也没什么解释的
好在这就是个demo,
无钱无动力 哎 怎么大家都这么功利了,就到这里吧,下次再说了

文章同步:http://www.itstudy.cn/www/article/article.asp?id=101

致谢 :

沈凯 一步一步silverlight--五子棋 给了我不能偷懒的决心,望大家不要做比较,我不是要写代码说明比他好(写出来的都是好的),只是以我的思路 写了一个五子棋的课堂练习而已。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值