粉丝410获赞1.4万

这么漂亮的桌子,画个象棋桌怎么样?量一下 八十也是八十,先打个图纸,就算是木工也要打图纸吧。桌子是八十正方,我打算画一个七厘米一格的超大棋盘。象棋棋盘是横向八格啊,纵向九格 啊,共七十二格,也就是宽五十六,高六十三。 记得把桌子的总宽八十减去五十六,那就是二十四。二十四的话,我们两边要各留十二公分啊,然后再把八十减去六十三,就是十七十 期的话,我们两侧要各留八点五公分。先去四轮定位,把这四个点找到啊,就成功一半了。 十二八点五,精准定位 第二个点。好了,第三个点,第四个点,四轮定位已经完成,现在来测试一下我们的横向是不是五十六, 非常精准。接下来我们每七厘米给他点上一点啊,一七得七二七十四,三七二十一。七厘米的点位也已经点好,连直线总会吧。啊,不用多说了, 这边就可以了。 最后画上性感的小背心。好了,大功告成,邀请我的老邻居王文琪过来对义几局。

wow 不许后退的小兵哦嘿嘿下棋去了哇哈哈哈。 哇啊哈哈。 哇好帅的小兵我们也要当小兵嘿嘿嘿嘿嘿嘿 嘿嘿嘿。哦你干什么快松手让我玩会。要玩完了还给你哈哈哈。哎呀哎,天上有鱼在飞。什么鱼在天上飞。嗯 啊还给我哈哈哈哈借给你也行,我把铠甲都给你你替我去打仗吧 哈我第一个走,我帽子快跟上啊我来了我来了。 哇好帅啊,我帽子能走两格。那我也能。我是跳跳蛙,不用撑盖也能跳的远。哎呀 啊啊啊, 此路不通,规则规定第一步可以走一步,也可以走两步,以后只能走一步,不走就不走。哎呀那是什么啊。 哦啊好棒啊,我最喜欢吃糖果了哈哈哈我喜欢我要糖果我要糖果。不行不行,让小兵只能前进不能后退啊 哎这次在前面快追快追。哈哈哈哈哈哈哈哈哈哈哈哈 快跑快跑啊啊啊小兵只能前进不能后退知道吗?啊啊,知道就不轻易前进了。哎呀疼死我了疼死我了。 千万别小瞧了看似不起眼的兵,构建机石的兵,练给王建造安全堡垒的任务,谁也没有兵完成的好。

这是一场跨越三代人的下棋,爷爷用硬纸板画的棋盘,脱色开裂的象棋也像久经沙场一样。我的爷爷戏迷加棋迷, 以前我经常看到他坐在炕边和同村人晚上下棋。今天我们和姐姐一起打算看看能不能赢了。爷爷没成想开场就急刹车,也许太久没有人陪着下了,藏在床底棋盒里的一个兵都不知道滚落到哪里去了。你走 好了,我又切了一个,说四遍,哈哈哈哈哈哈,将军了, 我这一讲呢,你这不上来就哦我赢了,哈哈哈,姜还是老的辣啊,把那老姜吃了,不能你让了。一个兵几番碾压,我寄予厚望的姐姐迅速败下阵来,我只能把目光投向我的媳妇, 不出意外,那就是意外了,最终还是爷爷赢了。当然,我们几个也成了爷爷的棋友,喝一壶茶,挑灯夜战杀两盘,这份也算情,尽在期盼中。

小朋友们,今天我们要在棋盘上玩一场美学游戏。你们看,象棋的棋子多像精致的小雕塑呀,帅的方正威严,马的灵动昂扬,每一枚都藏着古代工匠的审美巧思。 围棋更有意思了,黑白两子像极了水墨画里的浓淡对比,落在棋盘上就是一个个会呼吸的末点。下棋时,棋子的摆放也藏着美学小秘密。书密得当的棋阵就像一幅布局匀称的画, 进退有度的手法恰似舞蹈里的节奏韵律。我们乐子贤先观察,让棋子在棋盘上站的好看,赢起的同时,也画出一幅属于自己的棋盘美学图。其实美无处不在,哪怕是小小的棋盘,也能让我们发现不一样的艺术乐趣。


大家好,我们本节学习会制象棋默认出式局面, 我们的课程编程实践要做,首先我们将会制棋子这样一个功能封装成函数, 接着我们会制默认出事局面,然后我们动态的会制默认出事局面, 就是做一下,在第二步的基础之上做一下改进, 这是我们最终绘制出来的效果,我们前面绘制出来的棋盘,现在我们绘制出来的这样一个,呃,这样一个出使局面, 对于棋子的绘制函数,我们需要注意,我们需要设置棋子的这个背景色,注意这个棋子的大小要比这个棋盘里面一个方格的大小,他的要小一点 啊,注意这个红方黑方需要做一下区分,我们有红棋黑棋,它的整体的绘图过程是先画一个圆,然后在里面加一个文字, 当然你如果先加一个文字,再画一个圆,它效果应该也是一样的。 呃,这是我们这样一个棋子绘制的这个函数,然后里面的这样的代码,其实我们在 在那个 cursor 画直线圆那一节里面,我们已经讲到了这里面,就是说需要加一个这个是是红棋还是黑棋 is red 进行做一下判断,如果说红棋的话就是用红色,否则的话用黑色, 然后这边是会指他的这个啊,写这个棋子的文字,这边上面是画圆,这边这是半径的控制的大小,注意这里是棋子桌影,这是前面是拼音, 后面是英文啊,就是就就是说我我写代码的时候,有时候想不想不到他的这个英文名字的话,我直接用拼音,但有时候我又不不想那个完全的用拼音啊, 然后棋子捉蝇就是希望大家就是可以起一个更好的名字,比如说屁死, 我们知道那个妻子在国际象棋里面可以用 piece, 可以 piece 着一样,然后就就就就是说可以画他的这个,画他的这个妻子,但是这个函数的这个名字的这个命名的话,大家可以改成自己的,如果你觉得怎么好,嗯,就是怎么来。 我这里的这个代码是供大家作为学习参考的。 直接绘制棋子就是我们封装了这个棋子以后,我们在相应的这个棋盘的交叉点的位置,然后调用这个棋子,呃绘制的这个函数,呃,总共一个棋盘,上面,嗯出示局面是三十二,呃,出示局面有, 嗯里面包含了三十二个棋子,这调用这个三十二次函数,嗯,呃即可。 动态的配置的话,就是说我们需要通过一个变量来表示这样一个局面,我们想到的是这样一个九乘十的这样一个二维数值, 然后通过对呃局面,呃局面数值进行循环。我们来看一下我们定义的这个数值, 你看我们定义了这个局面,它等于这样一个数组,这个数组的话大数组里面套小数组啊,这个大数组里面包含了十行,包含了十行每一行就是它,它象棋里面的相对相当于它每一行。 呃,上面这是黑棋,这边是红棋,下面是红棋,跟我们看到的奇葩里面基本上是一样的。然后我们使用这样一个数组,然后然后来表示我们的这个出使局面, 然后我们对这个数组进行循环,注意这个循环套了两层,第一层是 是 i, 第二层是 j, 然后我们我们我们这边是取到这个局面的这个 i j, 它的这个文文字, 首先来判断一下,呃它是红棋还是黑棋啊?我们假定它默认是黑棋,然后如果这个 i 大 于四的话,因为这个 呃处事局面的话,呃他是分呃两边分割。好的,我们可以这样,嗯,可以这样,这样,这样写没有问题,如果是中局的话,这样写肯定是有问题的,我们可以根据棋子的名称,然后我们的这个棋子名称其实是可以区分的, 但如果你去你的这个名字区分不了的话,你啊你需要另呃另想办法。然后棋子不会空的时候画出棋子,注意注意坐标, i 对 应 y 轴, j 对 应 x 轴, 注意这名 j 对 应 s 轴,这个对应 y 轴,然后就把它画出来,然后就把它画出来了。我们来看一下代码, 我们的代码就在我们的这个课程的就是每一节,如果有,嗯编程实践的话,我们会给出这样一个代码,然后这是代码运行出来的这样一个效果。我们已经在这个呃 vo 四九九呃 code 里面打开了我们代码,这个啊, atm 和 cs 文件, cs 文件的话 啊上面的上面的这一部分前面的代码我已经给删除掉了,因为已经没有用了,然后啊前面去用到的这些代码就封装好的这些函数我还都保留着, 然后就是这里面是我我我封装好的这个棋子的这个函数棋绘制棋子的函数,呃,就是把把把前面讲的一节里面的会呃棋子绘制封装成了一个函数, 然后我们同样是两个版本,一个是直接绘制版本,我们先把它画出来。呃。第二个是我们使用的这一个,呃,这一个动态数组使用了这样一个变量的,是,呃数值的形式,我们把 下面的动态的这种第二种形式我们注视掉,我们可以看到 我们在这里面汇聚出来了一个族和兵,就是在旁边。呃,这 carver 的 大一点的话,我们可以在旁边哦换两个棋子, 然后这是我们分装的,然后我们调用的棋子调,呃。棋子可以换啊啊,呃。棋子是在在这个棋盘外面,在我们棋盘的外面,但也在 carver 的, 呃。里面, 然后我们看那个第一种绘制方式,第一种绘制方式, 呃,第一种绘制方式跟第二种绘制方式绘出来效果是一样的,但是它使用代码是不一样的。 第一种方式就是我们呃知道这种,呃,这,呃我们知道就是它的这个结构,然后 位置出式局面所有的位置,然后三十二个棋子我们分别调用,这是绘制黑方棋子,黑炮,黑卒,然后这边是红方棋子,如果我们可以这样的话,你看它其实是, 哎,你看只绘制了一半,只绘的,呃。绘制了一半,就是说就是这个时候只绘制了一半, 如果你想让他一个车的话,你这个时候就是说红方让让,让黑方一个车的话,如果这个局面可以这样回正, 当然这个少了一个车,哈哈。当然这个就不是默认的出事局面了,我们把它把它取消掉,就是就说我们每个棋子把它摆到相应的这张一样,就是把每个棋子摆到棋盘的对应的位置上面,我们就可以把它绘制出来了。 呃,当然第一种这种方式的话就是说,呃,我用一个笨办法把这个编程的问题解决了,有没有更好的办法?我们这个时候就就想我如何才能动态的更好的来表示这个局面? 这个时候我们就就用到了,就是我们看就是下面的这种方式 如何来表示这个棋盘?如何来表示这个棋盘 啊?来表示棋盘的话,我们就这个棋盘里面的这个这个交叉点,还有这个横线,然后我们可以 可以把它表示成一个,就是我们前面说的是一个九乘十的这个数组 啊,外面这个外面大数字它包含了十个小元素,就是十行,然后每一行就是 每一行,然后里面有棋子,但如果没有棋子的话,我们使用这样一个空字幅串来占据这个位置,使用空字幅串来占据位这样一个位置, 这是我们呃比较直观的用编程的这种方式来表示我们的这个棋盘。 有了这样一个棋盘,其实每一个局面我们都可以转成,呃,把它变成这样一个数字。注意这里面的车马炮,黑方的这个名字跟 跟那个红方的啊名字完全不同,虽然他的功能是一样的。我们在名字上面马这边是给他加了一个单人旁,单人旁 啊,单人旁这个兵和卒,他名字是我完全可以通过名字进行区分的。然后这边是这个否循环,就是我们对数组进行循环,我们使用否的话,他其实比还算比较快的 使用。呃,这个 for 的 效率还整体来说还是比较高的。然后这个我们 对二尾数字进行循环的话,我们使用了两个,两个 for 循环,使用了两个 for 循环,然后然后就是前面看到的这个得到其子 text, 然后这边的这个函数,然后这边是那个, 这边做了一个简单的判断,如果不为空的话,如果为空的话我们就跳过去了,如果为空的话我们就跳过去了。然后就是说我们最终的话是用了一个这种动态的方式,我们会制出来的我们的这个局面, 处事局面,如果再给一个局面的话,其实我们也是可以用这种方式将它汇聚出来的。这个时候就是说,哦,这个象棋棋谱,棋谱的就是这样一个功能的话,我们 实现了一个最为关键的一些地方,最关键的一些地方就是就是说看到这个的话,哎,你很有成就感,就是说这个盘面,这个 我已经画出来了任何一个局面,我也有能力把它画出来。画出来 就是说写代码的时候,写代码的时候跟写书、写文章呃,很类似,有时候写一个功能的时候,有时候你把效果做出来了,然后你很有成就感,做一个程序员, 然后其实真正的把代码写出来的时候,其实是很有成就感的,就是那种成就感就像就像搞了一个小发明一样,虽然,虽然,嗯,这呃这个小发明很多人也都做过,但是如果在你的手里面,你就是把他就是这种, 是吧?你把它敲出来,通过敲代码的方式把它敲出来,然后转化成你的这种能力,然后其实也是也是一个小有成就的一件事情, 我们用到的这种编程知识其实包括数组循环这些,通过学习, 通过这样的学习其实还是对大家的学习是很有帮助的哦,我们本节课就介绍到这里,谢谢大家。