象棋编程游戏——布局篇

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

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

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

 Code

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();

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

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

 象棋布局代码

 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;    

 

 运行效果:

 

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

posted @ 2009-12-24 15:36  夏小冰  阅读(2403)  评论(19编辑  收藏  举报
云水禅心 We Belong Together-Mariah Carey HERO-Mariah Carey Yesterday once more 献给爱丽丝 海边的祈祷 秋日私语 Time To Say Goodbye 我用所有报答爱-张靓颖 女人花-梅艳芳 简简单单-林俊杰 anyclub-李孝利 10minetes-李孝利