象棋编程游戏——布局篇

BingWay原创作品,转载请注明作者和出处。

 这段时间,发现自己的象棋水平有点小进步,大师级别的现在还不敢想,高手级别的也肯定是比不上的了。在我两三个月象棋生涯中,先是屡战屡败,屡败屡战,而后还能侥幸胜几局,也感觉到了自己的进步。回想一下我的战绩:胜6局,平3局,输的不记得多少局了。

最近我完成了象棋里最基本的开盘布局,不知道别人是怎么做这个功能的。我是通过.ini文件读取象棋游戏布局的。

 ExpandedBlockStart.gifCode

public   const   string  FileName = " ..\\..\\象棋布局文件.ini " ;
        
public  Hashtable chessHT = new  Hashtable();  // 建立初始表,用于存放对应的棋子字符串和棋子图象
         public  System.Windows.Forms.PictureBox[] pictureBoxs = new  PictureBox[ 32 ];  // 存放棋子的一组图片框
        
        
public  Image[] imgs = new  Image[ 14 ];    
        
        
public   string  battle = null ;        
        
        
public   string [] soldiers = new   string [ 32 ];

        
public  Point[] tempPoint = new  Point[ 32 ];  // 存放盛棋子的32个点            
    
        
public   bool  whetherSelected = false ;   // 保证只有一个图像移动,并且确保移动正确
         public  Point p = new  Point();                      // 移动图象时,记录鼠标的旧坐标
        
        
public  Point beforeMovePoint = new  Point();

兵种: "黑卒","黑炮","黑車","黑马","黑象","黑士","黑将"

       "红","红炮","红車","红马","红相","红士","红帅

 ExpandedBlockStart.gif象棋布局代码

 1  // 建立pictureBoxs的实例
 2               for ( int  i = 0 ;i < 32 ;i ++ )                        
 3                   this .pictureBoxs[i] = new  PictureBox();                            
 4              
 5              InitializeComponent();    
 6              
 7               // 以下代码初始化chessHT对照表
 8               string [] str = { " 黑卒 " , " 黑炮 " , " 黑車 " , " 黑马 " , " 黑象 " , " 黑士 " , " 黑将 " , " 红兵 " , " 红炮 " , " 红車 " , " 红马 " , " 红相 " , " 红士 " , " 红帅 " };        
 9              //读取棋子文件所在位置
10              imgs[ 0 ] = Image.FromFile( @" ..\..\img\black-bing.gif " );
11              imgs[ 1 ] = Image.FromFile( @" ..\..\img\black-pao.gif " );
12              imgs[ 2 ] = Image.FromFile( @" ..\..\img\black-ju.gif " );
13              imgs[ 3 ] = Image.FromFile( @" ..\..\img\black-ma.gif " );
14              imgs[ 4 ] = Image.FromFile( @" ..\..\img\black-xiang.gif " );
15              imgs[ 5 ] = Image.FromFile( @" ..\..\img\black-shi.gif " );
16              imgs[ 6 ] = Image.FromFile( @" ..\..\img\black-jiang.gif " );
17              imgs[ 7 ] = Image.FromFile( @" ..\..\img\red-zu.gif " );
18              imgs[ 8 ] = Image.FromFile( @" ..\..\img\red-pao.gif " );
19              imgs[ 9 ] = Image.FromFile( @" ..\..\img\red-ju.gif " );
20              imgs[ 10 ] = Image.FromFile( @" ..\..\img\red-ma.gif " );
21              imgs[ 11 ] = Image.FromFile( @" ..\..\img\red-xiang.gif " );
22              imgs[ 12 ] = Image.FromFile( @" ..\..\img\red-shi.gif " );
23              imgs[ 13 ] = Image.FromFile( @" ..\..\img\red-shuai.gif " );            
24               for ( int  i = 0 ;i <= 13 ;i ++ )
25              {
26                  chessHT.Add(str[i],imgs[i]);
27              }    
28              
29               // 往panel1中添加pictureBoxs数组控件
30               this .panel1.Controls.AddRange(pictureBoxs);                    
31 
32               // 使所有PictureBoxs隐藏,不影响主界面的显示
33               for ( int  i = 0 ;i < 32 ;i ++ )                        
34                   this .pictureBoxs[i].Visible = false ;                
35              
36               for ( int  i = 0 ;i < 32 ;i ++ )
37              {
38                   this .pictureBoxs[i].MouseUp  +=   new  System.Windows.Forms.MouseEventHandler( this .pictureBoxs_MouseUp);
39                   this .pictureBoxs[i].MouseMove  +=   new  System.Windows.Forms.MouseEventHandler( this .pictureBoxs_MouseMove);
40                   this .pictureBoxs[i].MouseDown  +=   new  System.Windows.Forms.MouseEventHandler( this .pictureBoxs_MouseDown);                
41              }
42              
43              signString[ 0 ] = " black " ;    // 初始化标志哪方走棋字符串
44              signString[ 1 ] = " red " ;   
45 
46               this .pictureBox6.Width = this .width / 2 - 5 ;
47               this .pictureBox6.Height = this .height / 2 + 3 ;    

 

 运行效果:

 

 如果觉得文章不错的话,欢迎点一下右下角的推荐。

转载于:https://www.cnblogs.com/lovexyz123/archive/2009/12/24/1631481.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值