macOS swift下使用贝塞尔曲线制作五子棋盘(1)
Mac OS下的五子棋盘
- 制作棋盘
- 画棋盘线
- 画横线
- 画竖线
- 画棋子
- 棋盘最终效果
- END
制作棋盘
首先需要制作一个简单的500x500的棋盘窗口,这里使用xib来布局
下一步创建棋盘类,关联xib
class GobangChessBoard: NSView
{override func draw(_ dirtyRect: NSRect) {super.draw(dirtyRect)}
}
draw 方法就是实现棋盘的关键,在里边进行棋盘绘制
画棋盘线
五子棋盘又横竖线交织排列形成,棋子落于交叉点
画横线
var horizontalLineNum: Int? //定义横线条数
//计算当前棋盘能占有多少条横线,横线距离为30,+ 1是为了封住最后一条横线,-30是为了距离左边30,不至于第一行落子无法显示。
horizontalLineNum = Int((view.frame.size.height-30)/30 + 1)
//现在开始利用贝塞尔曲线来画出横线(如图1.1)
for i in 0..<horizontalLineNum! {let bezier = NSBezierPath()bezier.move(to: NSPoint(x: 23, y: 15 + CGFloat(i * 30)))bezier.line(to: NSPoint(x: CGFloat(horizontalLineNum! * 30) - 7, y: 15 + CGFloat(i * 30)))bezier.lineWidth = 1.0NSColor.black.set()bezier.stroke()
}
图1.1
画竖线
与横线同理了,继续贝塞尔曲线画
var verticalLineNum: Int? //定义竖线条数
//计算当前棋盘能占有多少条竖线,竖线距离为30,+ 1是为了封住最后一条竖线,-30是为了距离上边30,不至于第一行落子无法显示。
verticalLineNum = Int((view.frame.size.width-30)/30 + 1)
//现在开始利用贝塞尔曲线来画出竖线(如图1.2)
for i in 0..<verticalLineNum! {let bezier = NSBezierPath()bezier.move(to: NSPoint(x: 23 + CGFloat(i * 30), y: 15))bezier.line(to: NSPoint(x: 23 + CGFloat(i * 30), y: CGFloat(verticalLineNum! * 30) - 15))bezier.lineWidth = 1.0NSColor.black.set()bezier.stroke()
}
图1.2
画棋子
棋子在此五子棋中,我直接就定义为一个圆形黑白快,依然使用贝塞尔曲线来绘制
let bezier = NSBezierPath()
bezier.lineWidth = 1.0
bezier.appendArc(withCenter: NSPoint(x: p.point.x*30+23, y: p.point.y*30+15), radius: 10, startAngle: 0, endAngle: 360, clockwise: false)
if p.isblackOrWhite {NSColor.black.set()
}else {NSColor.white.set()
}
bezier.stroke()
bezier.fill()
棋盘最终效果
我们将上述三种合并,看看棋盘的最终效果
END
下一节,我们实现黑白子交替落位,以及实现重开及悔棋两个小功能。
macOS swift下使用贝塞尔曲线制作五子棋盘(1)相关推荐
- macOS swift下使用贝塞尔曲线制作五子棋盘(2)
macOS swift下使用贝塞尔曲线制作五子棋盘(2) 落子 黑白子交替 计算落子的point 功能 判断当前落点是否有相同棋子,并保存 判断输赢 分析 左右分析 上下分析 斜向分析 悔棋 重开游戏 ...
- 使用贝塞尔曲线制作网页手鼓猫
使用贝塞尔曲线制作网页手鼓猫 效果图 CSS代码 HTML代码 JS代码部分 总结 效果图 一只简易版的网页手鼓猫 CSS代码 <style>*{margin: 0;padding: 0; ...
- Unity之使用贝塞尔曲线制作图片轮播
一.效果图 1.效果1 2.效果2 二.贝塞尔曲线 关于贝塞尔曲线的学习大家可以看这个文章进行学习https://blog.csdn.net/qq_39162826/article/details/1 ...
- Linux下使用dd命令制作启动盘
date: 2018-09-25 10:39:41+00:00 原标题: Linux下使用dd命令制作启动盘 原链接: https://www.dreamoftime0.com/2018/09/25/ ...
- Unity 贝塞尔曲线制作迁徙图
效果图: 实现该效果图所需的知识点: 1.贝塞尔曲线 贝塞尔曲线是图形学中非常重要的参数曲线,在此不做详细介绍,这里我们用到的是二次方公式: using UnityEngine; using Syst ...
- 贝塞尔曲线开发的艺术
贝塞尔曲线开发的艺术 一句话概括贝塞尔曲线:将任意一条曲线转化为精确的数学公式. 很多绘图工具中的钢笔工具,就是典型的贝塞尔曲线的应用,这里的一个网站可以在线模拟钢笔工具的使用: http://bez ...
- android波浪动画简书,Android贝塞尔曲线————波浪效果(大波浪)
Hello大家好,很高兴又一次与大家见面,今天是农历丁酉鸡年(大年初四),现在跟大家拜年有点晚,算是拜晚年,祝大家晚年幸福. 这么快大伙都到了晚年了,Android贝塞尔曲线我也准备以一个大波浪来结束 ...
- HTML5 JS Canvas利用贝塞尔曲线绘制圆角矩形
啥也不说,先上示例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- 多视角探析贝塞尔曲线匀速化技术、实现及其应用
概述 就在三年前,我于CSDN博客上发布了一篇题为<贝塞尔曲线运动n阶追踪方程的数学原理及其匀速化方法和应用>的博客文章,主要探讨的是贝塞尔曲线由一阶至n阶在数学层面的生成过程,以及匀速化 ...
最新文章
- android dialog
- Google今日更新PR值,帆船书会由1升到了3
- PAT (Advanced Level) 1014 Waiting in Line(模拟)
- 漫画家Neal Adams推出以蝙蝠侠等超级英雄为主题的NFT
- Openresty 安装、源码编译,增加WAF模块naxsi
- 计算机一级b考试理论知识,计算机等级考试一级B基础知识精选考点串讲
- iso 9000下载_ISO 9000 | 软件工程
- 电脑需不需要安装杀毒软件?
- ereg/eregi报错处理办法
- 浅谈电能质量在线监测装置的基本简介
- 两张图片切换比例虚拟进度条
- 百度竞价开户需要什么资料,竞价开户流程
- 一个C#版的多选题选项及判分设计方案
- NDK/C++ 耗时统计类TimeUtils
- js 对象的键名 可以是数字么
- 影流之主——stm32OLED显示一张图片方法基于战舰
- 多张JPG图片怎么转成一个PDF
- 愿你一生欢喜,不为世俗裹挟 | 笔记摘要
- FPGA的三个时代,最初三十年的回顾(附原英文资料)
- P4281 [AHOI2008]紧急集合 / 聚会(LCA做法)