case 6 % 炮 if ~(x==oldx && y~=oldy) && ~(x~=oldx && y==oldy) flag = 0; return end % no chess in the way if x==oldx inc = 1; if oldy>y inc = -1; end if pos_chess(y+1,x+1)~=0 if ~(length(find(pos_chess(oldy+1+inc:inc:y+1-inc,x+1)~=0))==1) flag = 0; return end else if ~(isempty(find(pos_chess(oldy+1+inc:inc:y+1-inc,x+1)~=0, 1))) flag = 0; return end end else inc = 1; if oldx>x inc = -1; end if pos_chess(y+1,x+1)~=0 if ~(length(find(pos_chess(y+1,oldx+1+inc:inc:x+1-inc)~=0))==1) flag = 0; return end else if ~(isempty(find(pos_chess(y+1,oldx+1+inc:inc:x+1-inc)~=0, 1))) flag = 0; return end end end

时间: 2024-02-10 22:34:06 浏览: 26
这段代码是实现象棋中“炮”的移动规则的判断,判断是否符合规则。如果当前位置和目标位置不在同一行或同一列,则不符合规则,返回 0。如果中间有其他棋子挡住,则不符合规则,返回 0。如果炮在起点,则目标位置必须没有棋子,否则不符合规则,返回 0。如果炮不在起点,则目标位置必须有且仅有一个棋子,否则不符合规则,返回 0。如果符合规则,则返回 1。
相关问题

if ~(x==oldx && abs(y-oldy)==1) && ~(y==oldy && abs(x-oldx)==1) flag = 0;

这段代码是什么意思? 这段代码是一个条件语句,它的作用是判断两个坐标点之间是否满足一定的条件。具体来说,它的条件是:如果当前坐标点与之前的坐标点在同一行且列数相差为1,或者在同一列且行数相差为1,则将flag设置为0。其中,符号“~”表示取反,即如果条件不成立,则返回真。因此,这段代码的意思是如果当前坐标点与之前的坐标点在同一行或同一列,但是相差不为1,则将flag设置为1。

function flag = CanMove(x,y) flag = 1; oldx = chess_x(cur_turn,cur_cid); oldy = chess_y(cur_turn,cur_cid); switch chess_type(cur_cid) case 1 % 将 % move 1 step if ~(x==oldx && abs(y-oldy)==1) && ~(y==oldy && abs(x-oldx)==1) flag = 0; return end % out area if cur_turn==1 if ~(x>=0 && x<=2 && y>=3 && y<=5) flag = 0; return end else if ~(x>=7 && x<=9 && y>=3 && y<=5) flag = 0; return end end

这个函数是用来判断当前选中的棋子能否移动到(x,y)位置。首先将当前选中棋子的原来位置存放在oldx和oldy中,然后根据当前选中棋子的类型判断能否移动到(x,y)位置。例如,如果当前选中的棋子是将,那么将只能向前、向后、向左或向右移动一步,并且必须在九宫格内移动。如果不能移动到(x,y)位置,则将标志位flag设为0,表示不能移动到该位置。

相关推荐

将下面的代码改成createjs的方法 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> </head> <body> <canvas id="canvas" width="600" height="300""></canvas>
<button style="width:80px;background-color:yellow;" onclick='linecolor = "yellow";'>YELLOW</button> <button style="width:80px;background-color:red;" onclick='linecolor = "red";'>RED</button> <button style="width:80px;background-color:blue;" onclick='linecolor = "blue";'>BLUE</button> <button style="width:80px;background-color:green;" onclick='linecolor = "green";'>GREEN</button> <button style="width:80px;background-color:white;" onclick='linecolor = "white";'>WHITE</button> <button style="width:80px;background-color:black;color:white;" onclick='linecolor = "black";'>BLACK</button>
<button style="width:80px;background-color:white;" onclick="linw = 4;">4px</button> <button style="width:80px;background-color:white;" onclick="linw = 8;">8px</button> <button style="width:80px;background-color:white;" onclick="linw = 16;">16px</button>
<button style="width:80px;background-color:pink;" onclick="copyimage();">EXPORT</button>
<script type="text/javascript"> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); //画一个黑色矩形 ctx.fillStyle="black"; ctx.fillRect(0,0,600,300); //按下标记 var onoff = false; var oldx = -10; var oldy = -10; //设置颜色 var linecolor = "white"; //设置线宽 var linw = 4; //添加鼠标移动事件 canvas.addEventListener("mousemove",draw,true); //添加鼠标按下事件 canvas.addEventListener("mousedown",down,false); //添加鼠标弹起事件 canvas.addEventListener("mouseup",up,false); function down(event){ onoff = true; oldx = event.pageX-10; oldy = event.pageY-10; } function up(){ onoff = false; } function draw(event){ if(onoff == true){ var newx = event.pageX-10; var newy = event.pageY-10; ctx.beginPath(); ctx.moveTo(oldx,oldy); ctx.lineTo(newx,newy); ctx.strokeStyle=linecolor; ctx.lineWidth=linw; ctx.lineCap="round"; ctx.stroke(); oldx = newx; oldy = newy; }; }; function copyimage(event){ var img_png_src = canvas.toDataURL("image/png"); document.getElementById("image_png").src = img_png_src; } </script> </body> </html>

GLfloat initX = 0, initY = 0; GLfloat oldx = 0, oldy = 0; int times = 0; bool gDrawline = false; void drawkoch(GLfloat dir, GLfloat len, GLint iter) { ​GLdouble dirRad = dir * 3.1415926 / 180.f; ​GLfloat newX = oldx + len * cos(dirRad); ​GLfloat newY = oldy + len * sin(dirRad); ​if (iter == 0) { ​​glVertex2f(oldx, oldy); ​​glVertex2f(newX, newY); ​​oldx = newX; ​​oldy = newY; ​} ​else { ​​iter--; ​​len = len / 3; ​​drawkoch(dir, len, iter); ​​dir += 60; ​​drawkoch(dir, len, iter); ​​dir -= 120; ​​drawkoch(dir, len, iter); ​​dir += 60; ​​drawkoch(dir, len, iter); ​} } typedef GLfloat point2d[2]; int iter = 0; float snowAngle = 0; point2d p = { 960, 20 }; point2d anyline[2]; point2d pp; void CMFCGLSetupView::OnDraw(CDC* pDC) { ​CMFCGLSetupDoc* pDoc = GetDocument(); ​ASSERT_VALID(pDoc); ​if (!pDoc) ​​return; ​// TODO: add draw code for native data here ​wglMakeCurrent(pDC->m_hDC, m_hRC); ​oldx = initX; ​oldy = initY; ​glClearColor(0.0f, 0.0f, 0.0f, 0.0f); ​glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ​glMatrixMode(GL_PROJECTION); ​glLoadIdentity(); ​glOrtho(0, Cx, 0, Cy, -1000, 1000); ​switch (drawMode) { ​case 0: ​​glTranslatef(400, 450, 0); ​​glBegin(GL_LINES); ​​glColor3f(0.0, 1.0, 0.0); ​​drawkoch(0, 500, iter); ​​glEnd(); ​​break; ​case 1: ​​glTranslatef(400, 450, 0); ​​glPushMatrix(); ​​glTranslated(250, -125 * sqrt(3), 0); ​​glRotated(snowAngle, 0, 1, 0); ​​glTranslated(-250, 125 * sqrt(3), 0); ​​glBegin(GL_LINES); ​​glColor3f(0.0, 1.0, 0.0); ​​drawkoch(0, 500, iter); ​​drawkoch(-120, 500, iter); ​​drawkoch(-240, 500, iter); ​​glEnd(); ​​glPopMatrix(); ​​break; ​case 2: ​​if (gDrawline) { ​​​oldx = anyline[0][0]; ​​​oldy = anyline[0][1]; ​​​point2d v; ​​​v[0] = (anyline[1][0] - anyline[0][0]); ​​​v[1] = (anyline[1][1] - anyline[0][1]); ​​​float len = sqrt(v[0] * v[0] + v[1] * v[1]); ​​​v[0] /= len; ​​​v[1] /= len; ​​​point2d n = { 1, 0 }; ​​​float cosTheta = v[0] * n[0] + v[1] * n[1]; ​​​float angle = acos(cosTheta) * 180.f / PI; ​​​if (anyline[1][1] < anyline[0][1]) { ​​​​angle = -angle; ​​​} ​​​glBegin(GL_LINES); ​​​drawkoch(angle, len, iter); ​​​glEnd(); ​​} ​​break; ​default: break; ​} ​glBegin(GL_POINTS); ​glVertex2f(pp[0], pp[1]); ​glEnd(); ​glFlush(); ​wglMakeCurrent(pDC->m_hDC, NULL); }

最新推荐

recommend-type

概率论与数理统计试卷三套(含答案)

2020-2021年概率论与数理统计试卷
recommend-type

“人力资源+大数据+薪酬报告+涨薪调薪”

人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。
recommend-type

伊坂幸太郎21册合集.mobi

伊坂幸太郎21册合集.mobi
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB归一化实战指南:从零到一,轻松提升模型性能

![MATLAB归一化实战指南:从零到一,轻松提升模型性能](https://pic1.zhimg.com/80/v2-fd366800ef0bdf29c804ce25c0276778_1440w.webp) # 1. 归一化的理论基础** 归一化是一种数据预处理技术,旨在将数据缩放到特定范围内,通常是[0, 1]或[-1, 1]。通过归一化,可以消除数据量纲上的差异,使不同特征具有可比性,从而提高机器学习模型的性能。 归一化背后的基本原理是,在训练机器学习模型时,模型的学习过程会受到数据分布的影响。如果数据分布不均匀,某些特征可能具有较大的值域,而其他特征的值域较小。这会导致模型在训练过