做象棋的Bug

问题描述

今天做的中国象棋,编译通过,运行出错。。棋子基类,位置,移动方法。。。usingSystem;namespacezgxq{///<summary>///Descriptionofqizi.///</summary>publicclassqizi{publicboolb=true;publicintx;publicinty;publicboolgo(intx,inty){this.x=x;this.y=y;returntrue;}}}后面是车,炮,马usingSystem;namespacezgxq{///<summary>///Descriptionofzu.///</summary>publicclasszu:qizi{publiczu(intx,inty){this.x=x;this.y=y;}publicboolgo(){if(x>=0&&x<=8&&y>=0&&y<=9&&(x==this.x||y==this.y)){this.x=x;this.y=y;returntrue;}else{returnfalse;}}}}usingSystem;namespacezgxq{///<summary>///Descriptionofma.///</summary>publicclassma:qizi{publicma(intx,inty){this.x=x;this.y=y;}publicboolgo(){if(x>=0&&x<=8&&y>=0&&y<=9){boolb=false;if(x==this.x+1&&(y==this.y+2||y==this.y-2)){this.x=x;this.y=y;b=true;}if(x==this.x-1&&(y==this.y+2||y==this.y-2)){this.x=x;this.y=y;b=true;}if(x==this.x-2&&(y==this.y-1||y==this.y+1)){this.x=x;this.y=y;b=true;}if(x==this.x+2&&(y==this.y-1||y==this.y+1)){this.x=x;this.y=y;b=true;}returnb;}else{returnfalse;}}}}usingSystem;namespacezgxq{///<summary>///Descriptionofzui.///</summary>publicclasszui:qizi{publiczui(intx,inty){this.x=x;this.y=y;}publicboolgo(){if(x>=0&&x<=8&&y>=0&&y<=9){boolb=false;if(y>5){if((this.x==x-1&&y==this.y)||(this.x==x+1&&y==this.y)||(this.y+1==y&&x==this.x)){this.x=x;this.y=y;b=true;}}if(y<=5){if(this.y+1==y&&x==this.x){this.x=x;this.y=y;b=true;}}returnb;}else{returnfalse;}}}}usingSystem;namespacezgxq{///<summary>///Descriptionofjs.///</summary>publicclassjs:qizi{publicjs(intx,inty){this.x=x;this.y=y;}}}usingSystem;namespacezgxq{///<summary>///Descriptionofsi.///</summary>publicclasssi:qizi{publicsi(intx,inty){this.x=x;this.y=y;}}}usingSystem;namespacezgxq{///<summary>///Descriptionofxiang.///</summary>publicclassxiang:qizi{publicxiang(intx,inty){this.x=x;this.y=y;}}}主窗体。。。。usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Windows.Forms;namespacezgxq{///<summary>///DescriptionofMainForm.///</summary>publicpartialclassMainForm:Form{[STAThread]publicstaticvoidMain(string[]args){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newMainForm());}publicMainForm(){////TheInitializeComponent()callisrequiredforWindowsFormsdesignersupport.//InitializeComponent();////TODO:AddconstructorcodeaftertheInitializeComponent()call.//}staticqizi[,]l=newqizi[9,10];zuz1=newzu(0,0);zuz2=newzu(8,0);paop1=newpao(1,2);paop2=newpao(7,2);mam1=newma(1,0);mam2=newma(7,0);xiangx1=newxiang(2,0);xiangx2=newxiang(6,0);jsj=newjs(4,0);sis1=newsi(3,0);sis2=newsi(5,0);zuizui1=newzui(0,3);zuizui2=newzui(2,3);zuizui3=newzui(4,3);zuizui4=newzui(6,3);zuizui5=newzui(8,3);voidPictureBox1Paint(objectsender,PaintEventArgse){Imageimg=newBitmap(800,700);Graphicsg=Graphics.FromImage(img);Penpen=newPen(Color.Red);pictureBox1.Image=img;g.Clear(Color.White);for(inti=0;i<=9;i++){g.DrawLine(pen,200,100+50*i,600,100+50*i);}for(inti=0;i<=8;i++){g.DrawLine(pen,200+50*i,100,200+50*i,300);}for(inti=0;i<=8;i++){g.DrawLine(pen,200+50*i,350,200+50*i,550);}g.DrawLine(pen,200,300,200,350);g.DrawLine(pen,600,300,600,350);Fontf=newFont("Bold",20);g.DrawString("楚河",f,Brushes.Black,250,310);g.DrawString("汉界",f,Brushes.Black,500,310);g.DrawLine(pen,350,100,450,200);g.DrawLine(pen,450,100,350,200);g.DrawEllipse(pen,180+z1.x*50,80+z1.y*50,40,40);g.DrawString("车",f,Brushes.Black,180+z1.x*50,80+z1.y*50);l[z1.x,z1.y]=z1;g.DrawEllipse(pen,180+z2.x*50,80+z2.y*50,40,40);g.DrawString("车",f,Brushes.Black,180+z2.x*50,80+z2.y*50);l[z2.x,z2.y]=z2;g.DrawEllipse(pen,180+p1.x*50,80+p1.y*50,40,40);g.DrawString("炮",f,Brushes.Black,180+p1.x*50,80+p1.y*50);l[p1.x,p1.y]=p1;g.DrawEllipse(pen,180+p2.x*50,80+p2.y*50,40,40);g.DrawString("炮",f,Brushes.Black,180+p2.x*50,80+p2.y*50);l[p2.x,p2.y]=p2;g.DrawEllipse(pen,180+s1.x*50,80+s1.y*50,40,40);g.DrawString("士",f,Brushes.Black,180+s1.x*50,80+s1.y*50);l[s1.x,s1.y]=s1;g.DrawEllipse(pen,180+s2.x*50,80+s1.y*50,40,40);g.DrawString("士",f,Brushes.Black,180+s2.x*50,80+s2.y*50);l[s2.x,s2.y]=s2;g.DrawEllipse(pen,180+m1.x*50,80+m1.y*50,40,40);g.DrawString("马",f,Brushes.Black,180+m1.x*50,80+m1.y*50);l[m1.x,m1.y]=m1;g.DrawEllipse(pen,180+m2.x*50,80+m2.y*50,40,40);g.DrawString("马",f,Brushes.Black,180+m2.x*50,80+m2.y*50);l[m2.x,m2.y]=m2;g.DrawEllipse(pen,180+j.x*50,80+j.y*50,40,40);g.DrawString("将",f,Brushes.Black,180+j.x*50,80+j.y*50);l[j.x,j.y]=j;g.DrawEllipse(pen,180+zui2.x*50,80+zui2.y*50,40,40);g.DrawString("卒",f,Brushes.Black,180+zui2.x*50,80+zui2.y*50);l[zui1.x,zui1.y]=zui2;g.DrawEllipse(pen,180+x1.x*50,80+x1.y*50,40,40);g.DrawString("象",f,Brushes.Black,180+x1.x*50,80+x1.y*50);l[x1.x,x1.y]=x1;g.DrawEllipse(pen,180+x2.x*50,80+x2.y*50,40,40);g.DrawString("象",f,Brushes.Black,180+x2.x*50,80+x2.y*50);l[x2.x,x2.y]=x2;g.DrawEllipse(pen,180+zui1.x*50,80+zui1.y*50,40,40);g.DrawString("卒",f,Brushes.Black,180+zui1.x*50,80+zui1.y*50);l[zui1.x,zui1.y]=zui1;g.DrawEllipse(pen,180+zui3.x*50,80+zui3.y*50,40,40);g.DrawString("卒",f,Brushes.Black,180+zui3.x*50,80+zui3.y*50);l[zui3.x,zui3.y]=zui3;g.DrawEllipse(pen,180+zui4.x*50,80+zui4.y*50,40,40);g.DrawString("卒",f,Brushes.Black,180+zui4.x*50,80+zui4.y*50);l[zui4.x,zui4.y]=zui4;g.DrawEllipse(pen,180+zui5.x*50,80+zui5.y*50,40,40);g.DrawString("卒",f,Brushes.Black,180+zui5.x*50,80+zui5.y*50);l[zui5.x,zui5.y]=zui5;}voidMainFormPaint(objectsender,PaintEventArgse){}staticintx;staticinty;voidPictureBox1MouseClick(objectsender,MouseEventArgse){x=e.X;y=e.Y;x=(x-200)/50;y=(y-100)/50;label1.Text=x.ToString();//+y.ToString();label1.Text+=y.ToString();if(l[x,y].b){l[x,y].b=false;}else{boolt=l[x,y].go(x,y);if(!t){label1.Text="错误";}l[x,y].b=true;}}}}

解决方案

本帖最后由 yf1323570554 于 2011-12-04 20:14:25 编辑
解决方案二:
看的头晕啊!说说思路吧
解决方案三:
if(l[x,y].b){l[x,y].b=false;}else{boolt=l[x,y].go(x,y);if(!t){label1.Text="错误";}l[x,y].b=true;}就这一段出错,说未将引用应用到实例。思路,棋子基类派生车,马。。。定义对象数组,【9,10】棋盘大小staticqizi[,]l=newqizi[9,10];然后画图,摆棋,把棋子的值赋给对象数组在picturebox里的点击事件里得想,x,y即棋子对象未选中,就选择,选中的就走if(l[x,y].b){l[x,y].b=false;}else{boolt=l[x,y].go(x,y);}

时间: 2025-01-29 12:15:41

做象棋的Bug的相关文章

cocos2d-x-alphaBeta算法做象棋还是很笨而且很卡,有没有好的AI算法效率还不错的

问题描述 alphaBeta算法做象棋还是很笨而且很卡,有没有好的AI算法效率还不错的 有没有对算法非常了解的大神,小弟在学做一个cocos2dx象棋游戏中使AI困难模式的算法使用alphaBetaSearch搜索算法,不过本人对这个算法的了解不是很深,整个游戏框架基本搭建完成,但是就算使用了减枝优化后,实际运行的时候还是卡的有点久AI才做出反应,有没有在此基础上还可以优化的方法.有懂算法的大神可以点播一下么. 我总觉得按他们那个alphaBeta算法做象棋AI还是很笨,我随随便便就下赢了,我是

GWT 拖拽做象棋 (1). dnd 学习.

想研究下拖拽的效果.   http://code.google.com/p/gwt-dnd/downloads/list   这个是GWT拖拽的库.就一个jar文件   对应的GWT1.7进行拖拽学习.当然下载的也是1.7的jar. GWT 1.7.0 对应 gwt-dnd-2.6.5.jar   然后放到工程里面.   下载了jar文件之后   在新建一个eclipse工程.   在module文件里面加入模块的插入.   <inherits name = 'com.allen_sauer.g

【C#】我正在做个象棋小程序,但是不知道怎么传输数据

问题描述 C#我打算运用TCP/IP协议来传输数据,可是不知道怎么从客户端接收服务器的数据,也不知道服务器怎么知道,我指定要发给那个客户端,请问这个需要运用到多线程,然后和C/S结构么? 解决方案 解决方案二:你是想做网页版的还是软件版的?解决方案三:用WCF或者WebService吧解决方案四:你连传数据都不会弄就敢做象棋程序...象棋的ai可不简单

WPF Bug清单之(6)——Button的IsCancel属性失效

在上一篇中,描述了模态对话框隐藏之后变成了非模态的Bug,很多人回复表示这不算是一个Bug,我也表示理解.Bug只有在需求之下才有意义,不同的需求,对Bug的界定也不一样.作为一个Framework,.NET只能做到在多数时候是符合最广泛群体的需求的,就可以说它合格.但是对于前一篇描述的问题,想补充一下自己的考虑. Window的Show和ShowDialog,用于将窗体展现(我没有用显示)出来,而Close用于关闭.Close之后就不能再用Show或是ShowDialog再次将窗体展现出来,否

Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示(八)

前言: 最近有网友经常会问,在跟着做象棋对战的通讯中,在重复退出进入的时候,消息会重复出现,本节就这问题进行解说与优化.   一:分析问题产生的原因?   1:首先看App.xaml,里面定义了一个全局客户端回调: public static GameService.ServiceClient client;//回调的客户端   并且这个回调我们全局只实例化一次,并且默认加载时定位到登陆页面: private void Application_Startup(object sender, Sta

Bug剖析篇-&quot;Facebook 60TB+级的Apache Spark应用案例&quot;

前言 Facebook 60TB+级的Apache Spark应用案例,本来上周就准备看的,而且要求自己不能手机看,要在电脑上细细的看.然而终究是各种忙拖到了昨天晚上.  文章体现的工作,我觉得更像是一次挑战赛,Facebook团队通过层层加码,最终将单个Spark Batch实例跑到了60T+ 的数据,这是一个了不起的成就,最最重要的是,他们完成这项挑战赛后给社区带来了三个好处: 在如此规模下,发现了一些Spark团队以前很难发现的Bug 提交了大量的bug fix 和 new feature

中国软件测试专家访谈录

勤奋是一条通往成功的路 我的职业发展路径 蔡:谢谢文强接受我的采访.请相对详细地介绍一下你的个人经历.就我个人而言,我比较喜欢看人物传记.虽然我们不是什么大人物,但是每个人都是独特的,人生的经历都是宝贵的,其中或许有可以供其他朋友借鉴的地方. 按工号随机分配而进入软件测试行业 郑:我不是计算机相关专业毕业的,却阴差阳错地从事了与之相关的软件测试工作.1994年到1998年我在华东师范大学物理系上学,1998年到2001年接着在本校上了精密激光物理专业的研究生.因为大学与研究生专业都是理科,在整个

hadoop教程(六) 2.x的mapreduce过程图解

从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce 的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷.在过去的几年中,hadoop 开发团队做了一些 bug 的修复,但是最近这些修复的成本越来越高,这表明对原框架做出改变的难度越来越大. 为从根本上解决旧 MapReduce 框架的性能瓶颈,促进 Hadoop 框架的更长远发展,从 0.23.0 版本开始,Hadoop 的 Map

敏捷软件开发实践-Sprint Story Point Estimation

介绍: 对于story来说,一个很重要的衡量它的大小的因素就是story point,它不等同于软件工作量评估中的Function Point,因为story point只是用来粗略的相对的估计story的大小,而Function Point则是用来衡量功能模块的精确大小并且要参与到公式计算的,这里澄清下. story point的估算是一门很深的学问,而且我们不能马虎,因为如果我们估算少了,那么就会导致实际我们的花费时间远高于估算时间从而导致team加班加点,如果估多了,会导致我们team很闲