使用canvas 绘制象棋棋盘

先看效果图吧
O(∩_∩)O哈哈~
在这里插入图片描述

代码在这里

<!dOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<title>绘制象棋</title>
		<style>
			body {
				background-color: #C5C5C5;
			}
			canvas {
				position: fixed;
				background-color: #FFFFFF;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
			}
		</style>
	</head>
	<body>
		<canvas id="canvas" width="580" height="630"></canvas>
		<script>
			let canvas = document.getElementById('canvas')
			let cxt = canvas.getContext('2d')
			drawBorder()
			drawBorder2()
			drawBorder3()
			drawBorder4()
			drawBorder5()
			drawFont()

			function drawFont() {
				cxt.font = '40px Verdana'
				cxt.fillText('楚河', 70, 330)
				cxt.translate(510, 300) //重新映射画布上的(x,y)位置
				cxt.rotate(180 * Math.PI / 180) // 旋转当前绘图:旋转 180 度,可规定下面的公式:180*Math.PI/180
				cxt.fillText('漢界', 0, 0)
			}
			// 外边框大
			function drawBorder() {
				cxt.beginPath()
				// 方法1
				// 上边线
				// cxt.moveTo(10,10)
				// cxt.lineTo(570,10)				
				// // 下边线
				// cxt.moveTo(10,620)
				// cxt.lineTo(570,620) 
				// // 左边线
				// cxt.moveTo(10,8)
				// cxt.lineTo(10,622) 
				// // 右边线
				// cxt.moveTo(570,8)
				// cxt.lineTo(570,622)
				//  方法2
				cxt.moveTo(10, 10)
				cxt.lineTo(570, 10)
				cxt.lineTo(570, 620)
				cxt.lineTo(10, 622)
				cxt.lineTo(10, 8)

				cxt.lineWidth = 4;
				cxt.stroke()
				cxt.closePath()
			}
			// 边框2
			function drawBorder2() {
				cxt.beginPath()
				for (let i = 0; i <= 10; i++) {
					// 棋盘横向边线
					cxt.moveTo(15, 66.5 * i + 15)
					cxt.lineTo(564, 66.5 * i + 15)
				}
				// 左边线
				cxt.moveTo(16, 16)
				cxt.lineTo(16, 614)
				// 右边线
				cxt.moveTo(564, 14)
				cxt.lineTo(564, 614)

				cxt.lineWidth = 2

				cxt.stroke()
				cxt.closePath()
			}
			// 绘制上下的X
			function drawBorder3() {
				cxt.beginPath()
				for (let s = 1; s <= 7; s++) {
					// 棋盘上半边纵向线
					cxt.moveTo(70 * s + 16, 16)
					cxt.lineTo(70 * s + 16, 280)
					// 棋盘下半边纵向线
					cxt.moveTo(70 * s + 16, 348)
					cxt.lineTo(70 * s + 16, 614)
				}

				// 上半部分棋盘斜线
				cxt.moveTo(225, 150)
				cxt.lineTo(365, 16)
				cxt.moveTo(368, 150)
				cxt.lineTo(226, 16)

				// 下半部分棋盘斜线
				cxt.moveTo(366, 612)
				cxt.lineTo(226, 481)
				cxt.moveTo(228, 612)
				cxt.lineTo(366, 481)

				cxt.lineWidth = 2
				cxt.stroke()
				cxt.closePath()
			}
			// 上半部分
			function drawBorder4() {
				cxt.beginPath()
				// line 1-1
				cxt.moveTo(72, 144)
				cxt.lineTo(82, 144)
				cxt.lineTo(82, 134)
				// line 1-2
				cxt.moveTo(100, 144)
				cxt.lineTo(90, 144)
				cxt.lineTo(90, 134)
				// line 1-3
				cxt.moveTo(492, 144)
				cxt.lineTo(502, 144)
				cxt.lineTo(502, 134)
				// line 1-4
				cxt.moveTo(519, 144)
				cxt.lineTo(510, 144)
				cxt.lineTo(510, 134)
				// line 2-1
				cxt.moveTo(72, 152)
				cxt.lineTo(82, 152)
				cxt.lineTo(82, 160)
				// line 2-2
				cxt.moveTo(99, 152)
				cxt.lineTo(90, 152)
				cxt.lineTo(90, 160)
				// line 2-3
				cxt.moveTo(492, 152)
				cxt.lineTo(502, 152)
				cxt.lineTo(502, 160)
				// line 2-4
				cxt.moveTo(519, 152)
				cxt.lineTo(510, 152)
				cxt.lineTo(510, 160)
				// line 3-1
				cxt.moveTo(30, 210)
				cxt.lineTo(20, 210)
				cxt.lineTo(20, 200)
				// line 3-2
				cxt.moveTo(142, 210)
				cxt.lineTo(152, 210)
				cxt.lineTo(152, 200)
				// line 3-3
				cxt.moveTo(170, 210)
				cxt.lineTo(160, 210)
				cxt.lineTo(160, 200)
				// line 3-4
				cxt.moveTo(282, 210)
				cxt.lineTo(292, 210)
				cxt.lineTo(292, 200)
				// line 3-5
				cxt.moveTo(310, 210)
				cxt.lineTo(300, 210)
				cxt.lineTo(300, 200)
				// line 3-6
				cxt.moveTo(422, 210)
				cxt.lineTo(432, 210)
				cxt.lineTo(432, 200)
				// line 3-7
				cxt.moveTo(450, 210)
				cxt.lineTo(440, 210)
				cxt.lineTo(440, 200)
				// line 3-8
				cxt.moveTo(550, 210)
				cxt.lineTo(560, 210)
				cxt.lineTo(560, 200)
				// line 4-1 
				cxt.moveTo(30, 220)
				cxt.lineTo(20, 220)
				cxt.lineTo(20, 230)
				// line 4-2
				cxt.moveTo(142, 220)
				cxt.lineTo(152, 220)
				cxt.lineTo(152, 230)
				// line 4-3
				cxt.moveTo(170, 220)
				cxt.lineTo(160, 220)
				cxt.lineTo(160, 230)
				// line 4-4
				cxt.moveTo(282, 220)
				cxt.lineTo(292, 220)
				cxt.lineTo(292, 230)
				// line 4-5
				cxt.moveTo(310, 220)
				cxt.lineTo(300, 220)
				cxt.lineTo(300, 230)
				// line 4-6
				cxt.moveTo(422, 220)
				cxt.lineTo(432, 220)
				cxt.lineTo(432, 230)
				// line 4-7
				cxt.moveTo(450, 220)
				cxt.lineTo(440, 220)
				cxt.lineTo(440, 230)
				// line 4-8
				cxt.moveTo(550, 220)
				cxt.lineTo(560, 220)
				cxt.lineTo(560, 230)

				cxt.lineWidth = 2
				cxt.stroke()
				cxt.closePath()
			}

			function drawBorder5() {
				cxt.beginPath()
				// line 5-1
				cxt.moveTo(30, 410)
				cxt.lineTo(20, 410)
				cxt.lineTo(20, 400)
				// line 5-2
				cxt.moveTo(142, 410)
				cxt.lineTo(152, 410)
				cxt.lineTo(152, 400)
				// line 5-3
				cxt.moveTo(170, 410)
				cxt.lineTo(160, 410)
				cxt.lineTo(160, 400)
				// line 5-4 
				cxt.moveTo(282, 410)
				cxt.lineTo(292, 410)
				cxt.lineTo(292, 400)
				// line 5-5
				cxt.moveTo(310, 410)
				cxt.lineTo(300, 410)
				cxt.lineTo(300, 400)
				// line 5-6
				cxt.moveTo(422, 410)
				cxt.lineTo(432, 410)
				cxt.lineTo(432, 400)
				// line 5-7
				cxt.moveTo(450, 410)
				cxt.lineTo(440, 410)
				cxt.lineTo(440, 400)
				// line 5-8
				cxt.moveTo(550, 410)
				cxt.lineTo(560, 410)
				cxt.lineTo(560, 400)

				// line 6-1
				cxt.moveTo(30, 418)
				cxt.lineTo(20, 418)
				cxt.lineTo(20, 428)
				// line 6-2
				cxt.moveTo(142, 418)
				cxt.lineTo(152, 418)
				cxt.lineTo(152, 428)
				// line 6-3
				cxt.moveTo(170, 418)
				cxt.lineTo(160, 418)
				cxt.lineTo(160, 428)
				// line 6-4
				cxt.moveTo(282, 418)
				cxt.lineTo(292, 418)
				cxt.lineTo(292, 428)
				// line 6-5
				cxt.moveTo(310, 418)
				cxt.lineTo(300, 418)
				cxt.lineTo(300, 428)
				// line 6-6
				cxt.moveTo(422, 418)
				cxt.lineTo(432, 418)
				cxt.lineTo(432, 428)
				// line 6-7
				cxt.moveTo(450, 418)
				cxt.lineTo(440, 418)
				cxt.lineTo(440, 428)
				// line 6-8
				cxt.moveTo(550, 418)
				cxt.lineTo(560, 418)
				cxt.lineTo(560, 428)

				// line 7-1
				cxt.moveTo(72, 476)
				cxt.lineTo(82, 476)
				cxt.lineTo(82, 466)
				//line 7-2
				cxt.moveTo(100, 476)
				cxt.lineTo(90, 476)
				cxt.lineTo(90, 466)
				//line 7-4
				cxt.moveTo(520, 476)
				cxt.lineTo(510, 476)
				cxt.lineTo(510, 466)
				// line 7-4 
				cxt.moveTo(492, 476)
				cxt.lineTo(502, 476)
				cxt.lineTo(502, 466)

				//line 8-1
				cxt.moveTo(100, 484)
				cxt.lineTo(90, 484)
				cxt.lineTo(90, 494)
				// line 8-2
				cxt.moveTo(72, 484)
				cxt.lineTo(82, 484)
				cxt.lineTo(82, 494)
				// line 8-3
				cxt.moveTo(492, 484)
				cxt.lineTo(502, 484)
				cxt.lineTo(502, 494)
				// line8-4
				cxt.moveTo(520, 484)
				cxt.lineTo(510, 484)
				cxt.lineTo(510, 494)

				cxt.lineWidth = 2
				cxt.stroke()
				cxt.closePath()
			}
		</script>
	</body>
</html>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值