11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

BrainPadAdvent Calendar 2019

Day 6

three.jsでぺグソリティアをつくる

Last updated at Posted at 2019-12-05

概要

旅先のカフェに手作りのペグソリティアが置いてあったのですが、攻略できなかったのでthree.jsで作ることにしました。
three.jsを使ったのは作品例が綺麗だったからで、特に意味はありません。
むしろ普通に作るときは使わないほうが楽です。

ペグソリティア

盤上の杭(ペグ)を一つを残して取り除くゲーム。
ペグは以下のルールで動かすことができます(wikiより)。

  • 駒が縦横に並んでいてかつその隣に駒がないとき、駒は他の駒を飛び越えることが出来る。
  • 飛び越えられた駒は盤から取り除く。

今回はドイツスタイルのペグソリティアを作ります。

three.js

3Dアニメーションを手軽に作れるライブラリです。
カメラと光源クラスを用いて物体からの光の反射を表現したりします。

マウスでのオブジェクト操作には raycasterクラス を使います。
このクラスを使うと、カメラとクリックした点を結ぶ線分上にある物体を取得することができます。
今回は色を変えるのに使っています。

作ったもの(gifです)

movie-min.gif

緑の玉がペグ、赤い玉がペグが取り除かれた位置を表します。
コードはこちら。手っ取り早くVue.jsでつくりました。
https://github.com/dshintani404/peg_solitaire

感想

「飛び越えられたペグ」はマウスクリックしないので、どうやってオブジェクトを取得するか考えました。
クリックされた2点の中点にマウスを配置して、クリックしたことにする、という雑な手段をとりました。

11
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?