Game of Go on arbitrary planar graph (https://en.wikipedia.org/wiki/Planar_graph)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea
doc
script
.gitignore
README.md
favicon.ico
index.html

README.md

Goraph

Goraph := Game of Go on any graph.

任意上的围棋游戏。

[TOC]

Play

  • Choose 1 way out of the two:
    • Online: https://app.sonion.xyz/goraph/
    • Offline: Use any HTTP server to serve this directory as static files, e.g.
      • Python 2: python -m SimpleHTTPServer
      • Python 3: python3 -m http.server

TODO

(see also version history

Features

  • 吃子、重来、放弃一手
  • 双方连续各放弃一手则终局
    • 使可配置
  • 棋盘编辑器
    • 光学图识别!“OGR”
  • 中国规则:禁止全同再现
    • 不同棋盘下规则值得探讨……
  • 悔棋
    • 按钮:重新开始 选图select 悔棋 不下
  • 鼠标移动、touchmove 预览将下的位置 touchmove 留作缩放?…… touchmove 预览的话还得有"取消施法"
  • 多人对战
  • AI

预设棋盘 | Default Boards

  • 双层正方形嵌套
  • 三层正方形嵌套
  • 普通 n×n 棋盘
  • 囧(直线段)
  • * 囧(丿是弧线)
  • 六边形密铺(蜂巢)
  • 三角形密铺

UI,UE

  • Disqus 评论区
  • 移动端优化(喂应该先考虑吧)
    • 响应式设计,包括让 Disqus 在手机上显示正常点儿的大小
    • 禁止移动端缩放(同时提供字号调整?)
    • iPhone Safari select一点就放大网页 探秘
  • 用 touch 事件消除了移动端的触摸卡顿
  • 棋子上写序号
    • 使可配置
  • 若还没下子,则选棋盘后直接切换,不用点重新开始(嗯不要在 pass n play 模式过拟合)

Techniques

没有使用“现代前端技术”。现学了一点儿 <canvas> ;ES6 特性使用和 JS 的 practice 也不知好坏:到处用 let;function 嵌套定义;土法 global 对象。

Naming

取名 Goraph 是比较悍然的,因为至少有三个东西叫 Goraph 了:

都是 Golang 实现的图论数据结构和算法,( ゚∀。)

但是这个世界的重名太多了,不妨再多一个。而且我认为避免冲突应当用 fully qualified name,比如

  • “奥尔良的少女”
  • “美国的华莱士”
  • “…….凤梨科.凤梨属.菠萝”
  • “真核生物域.植物界.被子植物门.双子叶植物纲.I类真蔷薇分支.黄杨目.黄杨科.黄杨属.大叶黄杨种”
  • “真核生物域.植物界.被子植物门.双子叶植物纲.冬青目.冬青科.冬青属.*”

,而不是就不能取一样的名字了(further reading: 谁动了我的名字)。

干,又跑题。

Related Work