第一集如是说怎样用Excel制做两个中国象棋方格并能同时实现打牌机能

有关那个机能,只不过规矩也极为单纯,不外乎是许多绘图加两个仪仗良将。

透过对方格的介绍,用直角Longpr方格,接着加进棋盘,最终就已经开始火拼了。

自动草稿

话不多说,先看为敬

红方残局,第二局没走,是这种,仪仗老之将工兵,就位。

大背景有点儿黑,马开战。

红方残局,反之亦然也交卷阵形,无法乱,乱了三则就败近矣。

车(那个紫岩ju)马象士帅

自动草稿

动态图更直观体现了那个机能同时实现到什么程度,下面看一下。

自动草稿

机能如是说

设置了三个按钮,两个绘制方格,两个绘制棋盘,两个清除残局。

感觉已经能完成一盘棋的机能了,当然了,为了公平合理,不设置悔棋。

自动草稿

方格的样子四平八稳,没有一点特色,几百年来是这种。

看上去极为冷漠,战争嘛,没有温柔的,流血和失去生命的过程,没有人喜欢。

自动草稿

代码放送

主要代码:

ws.Shapes.AddShape(msoShapeOval, x, y, w, h)画圆形ws.Shapes.addLine(x,y, xEnd, yEnd)画线条

绘制方格

Sub addLine()Dim ws As WorksheetSet ws = ActiveSheetDim r As Integer, g As Integer, b As Integerr = 255g = 250b = 250Dim t As Long, l As Long, w As Long, h As Longt = 150l = 100w = 640h = 720Dim lineW As IntegerlineW = 6Dim ls As ShapeDim Ri As IntegerRi = 90Dim lw As Integerlw = lineW / 2Dim i As IntegerFor i = 0 To 9方格横线Set ls = ws.Shapes.addLine(l, t Ri * i, w l Ri – 10, t Ri * i)With lsWith .Line.Style = msoLineSingle.ForeColor.RGB = RGB(r, g, b)If i = 5 Or i = 4 Then.Weight = 30.ForeColor.RGB = RGB(200, 211, 0).Style = msoLineSingleElse.Weight = 2End IfEnd WithEnd WithNext iFor i = 0 To 8方格竖线Set ls = ws.Shapes.addLine(l Ri * i, t, l Ri * i, h t Ri)With lsWith .Line.Style = msoLineSingle.ForeColor.RGB = RGB(r, g, b).Weight = 2End WithEnd WithNext iEnd Sub

绘制棋盘

Sub addOvalFont(sArr, n, iRow, f)Dim ws As WorksheetSet ws = ActiveSheetDim o As ShapeDim x As Long, y As Long, w As Long, h As LongDim r As Integer, g As Integer, b As IntegerIf f Thenr = 255g = 25b = 50Elser = 25g = 50b = 255End Ifx = 90 * n 60y = 100 * iRoww = 90h = wSet o = ws.Shapes.AddShape(msoShapeOval, x, y, w, h)With o.Fill.ForeColor.RGB = RGB(r, g, b)With .TextFrame.VerticalAlignment = xlVAlignCenter.HorizontalAlignment = xlHAlignCenter.MarginBottom = 10.MarginLeft = 10.MarginTop = 10.MarginRight = 10With .Characters.Text = sArr 棋盘文字With .Font.Size = 60.Bold = True.Name = “隶书”.Color = RGB(225, 255, 255)End WithEnd WithEnd WithDoEventsEnd WithEnd Sub

方格布局

Private Sub CommandButton1_Click()ClearOvalShapeDim sArrsArr = Array(“车”, “马”, “相”, “仕”, “帅”, “相”, “仕”, “马”, “车”)sarr3 = Array(“炮”)sarr4 = Array(“兵”)sArr2 = Array(“车”, “马”, “象”, “士”, “将”, “象”, “士”, “马”, “车”)sarr5 = Array(“卒”)Dim n As IntegerFor n = 0 To UBound(sArr)Call addOvalFont(sArr(n), n, 1, True)Call addOvalFont(sArr2(n), n, 9, False)Next nCall addOvalFont(sarr3(0), 1, 3, True)Call addOvalFont(sarr3(0), 6, 3, True)For n = 0 To 8 Step 2Call addOvalFont(sarr4(0), n, 4, True)Next nCall addOvalFont(sarr3(0), 1, 7, False)Call addOvalFont(sarr3(0), 6, 7, False)For n = 0 To 8 Step 2Call addOvalFont(sarr5(0), n, 6, False)Next nEnd Sub

结尾

互动机能是第一次用excel来制做,整体效果很好,唯一比较难的是对绘图位置定位,那个要有一定是数学计算能力,和绘图大小变化,位移等等理解,做起来需要多次调试。

最终结果也不是极为精确,为了让整个方格显得像那么回事儿,做了不少重复无聊的调试。

有兴趣的朋友能自己试着做一下。

欢迎关注、收藏,免费的

举报/反馈

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!