• Silverlight五子棋(转)


    原文来自:http://student.csdn.net/space.php?uid=232537&do=blog&id=41966

    前几天看到 网上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. <UserControl x: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.   
    8.     <Grid x:Name="LayoutRoot" Background="White">   
    9.         <Canvas Height="650" HorizontalAlignment="Left" Name="cQiPan" VerticalAlignment="Top" Width="650" Background="#FFcccccc" Margin="10,10,0,0"></Canvas>   
    10.     </Grid>   
    11. </UserControl>   

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


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

    Code:
    1. /// <summary>   
    2. /// 画棋盘   
    3. /// </summary>   
    4. public void DrawBoard() {   
    5.   
    6.     for (int i = 1; i<=12;i++ )   
    7.     {   
    8.         huaQipanLine(50, 50 * i, 50 * 12 , 50 * i); //画横线   
    9.         huaQipanLine(50 * i, 50, 50 * i, 50 * 12 ); //画竖线   
    10.     }   
    11.   
    12. }   
    13.   
    14. /// <summary>   
    15. /// 画棋盘的线   
    16. /// </summary>   
    17. /// <param name="x1"></param>   
    18. /// <param name="y1"></param>   
    19. /// <param name="x2"></param>   
    20. /// <param name="y2"></param>   
    21. public void huaQipanLine(int x1,int y1,int x2,int y2){   
    22.     Line l = new Line();   
    23.     l.X1 = x1;  //50   
    24.     l.Y1 = y1;  //50   
    25.     l.X2 = x2;  //50*12;   
    26.     l.Y2 = y2;  //50   
    27.     l.Stroke = new SolidColorBrush(Colors.Black);   
    28.     cQiPan.Children.Add(l);   
    29. }   

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

    Code:
    1. DrawBoard();   

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


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

    Code:
    1. /// <summary>   
    2.  /// 画棋子   
    3.  /// </summary>   
    4.  public void DrawChessman(bool chess_color, Point pt)   
    5.  {   
    6.      Ellipse el = new Ellipse();   
    7.      el.Fill = new SolidColorBrush( chess_color?Colors.Black:Colors.White );   
    8.      el.Width = 50;   
    9.      el.Height = 50;   
    10.         
    11.      cQiPan.Children.Add(el);   
    12.      //Canvas.SetLeft(el,50/2);   
    13.      //Canvas.SetTop(el,50/2);   
    14.      //Canvas.SetLeft(el, (int)pt.X - 35);   
    15.      Canvas.SetLeft(el, (Math.Round((pt.X -cQiPan.Margin.Left) / 50)) * 50-25  );   
    16.      Canvas.SetTop(el, (Math.Round((pt.Y - cQiPan.Margin.Top) / 50)) * 50-25 );   
    17.   
    18.   
    19.  }   

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

    Code:
    1. /// <summary>   
    2. /// 棋盘鼠标单击事件 画棋子   
    3. /// </summary>   
    4. bool chess_color = true;   
    5. private void cQiPan_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)   
    6. {   
    7.     Point pt = 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.   
    16. }   

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


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

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

    致谢 :

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

    原文来自:http://student.csdn.net/space.php?uid=232537&do=blog&id=41966

  • 相关阅读:
    LeetCode 905 按奇偶排序数组
    LeetCode 46 全排列
    Django 2随便使用笔记-Day01
    Python函数化编程整理
    Oracle解锁表笔记
    springboot(1)使用SpringBoot基础HTTP接口GET|POST|DELETE|PUT请求
    什么是Restful API
    C# 生成条形码BarCode 128
    ADB shell 的一般操作
    遇到“未能从程序集XXXX...加载类型XXX”的问题
  • 原文地址:https://www.cnblogs.com/Godblessyou/p/1838077.html
Copyright © 2020-2023  润新知