[教你做小游戏] 用177行代码写个体验超好的五子棋

本文介绍了如何使用JavaScript和SVG技术开发一个本地双人对战的五子棋游戏,包括绘制棋盘、实现提示功能、绘制棋子、判断胜利条件和重新开局等功能。游戏适配多种分辨率,且代码简洁高效。
摘要由CSDN通过智能技术生成

我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋等游戏,不收费没广告。还开发了《Dice Crush》参加Game Jam 2022。喜欢可以关注我 HullQin 噢~我有空了会分享做游戏的相关技术。

1. 需求描述

  • 支持本地双人对战的五子棋游戏。
  • 对于刚下的一步棋,要有标记。
  • 要有提示:五联珠后提示谁赢了。
  • 支持重新开局。
  • 适配多种分辨率的屏幕。

面对这样一个五子棋游戏的需求,你会怎么做呢?

2. 技术选型

参考掘金文章《H5小游戏技术选型分析,低代码?小游戏框架?canvas或SVG?还能用React?》,我们利用文章的决策树进行技术选型:

  1. 我们不需要借助现有的游戏模板。
  2. 我们不需要素材管理、不涉及物理引擎。
  3. 我们不需要动画、不需要每帧渲染。

结论:手撸五子棋。

此外,因为要适配不同的分辨率,所以我们采用SVG绘制棋盘和棋子,不用canvas。

3. 绘制棋盘

背景

棋盘背景选个木头的棕色。

body {
   
  height: 100vh;
  margin: 0;
  background: bisque;
}

15*15的线条

我们先通过path绘制15条横线、15条竖线,每个格子设置为10的宽度,那么就是从-70绘制到70。

<svg id="svg" viewBox="-76,-76,152,152" xmlns="http://www.w3.org/2000/svg">
  <path stroke="brown" stroke-width="0.5" fill="none"
    d="m-70,-70h140v140h-140zm10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140" />
</svg>

此外,我们还需要适配多种分辨率,参考《2行代码,让你的UI适配移动端、PC端,快来收藏》,只需2行代码!

5个标记点

五子棋棋盘通常有5个标记点,我们再通过rect画5个黑色的矩形。因为可以复用,所以我们采用defs定义,这样以后可以通过use来复用。使用defs就好比我们封装了个可复用的标记组件。

<svg id="svg" viewBox="-76,-76,152,152" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <rect id="mark" x="-1" y="-1" width="2" height="2" />
  </defs>
  <path stroke="brown" stroke-width="0.5" fill="none"
    d="m-70,-70h140v140h-140zm10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,0v-140m10,0v140m10,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140m0,-10h140m0,-10h-140" />
  <use xlink:href="#mark" />
  <use xlink:href="#mark" x="40" y="40" />
  <use xlink:href="#mark" x="40" 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hull Qin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值