Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

【SVG】SVGの練習?がてら、「もぐら」の絵を描いてみた!

 どうも!LSSです!!

 

この間、

 

即興で「もぐらたたき」を作りました。

即興ゆえ、画像などは用意せずに「もぐら」という字を叩く、という、ネタとしては滑りやすい物になりましたw

 

で、もし、いずれ「画像版」を作るとしたら?
「もぐらの絵」ぐらいは自分で用意したいもの。

 

で、とりあえず絵だけを「SVGの復習」も兼ねてSVGで描いてみる事にしました!

 

 

SVGで描いてみた「もぐら」

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
<circle cx="35" cy="60" r="7" fill="black"></circle>
<circle cx="65" cy="60" r="7" fill="black"></circle>
<circle cx="50" cy="80" r="13" fill="white"></circle>
<circle cx="50" cy="75" r="5" fill="black"></circle>
<ellipse cx="25" cy="80" rx="10" ry="5" fill="pink"></ellipse>
<ellipse cx="75" cy="80" rx="10" ry="5" fill="pink"></ellipse>
<path d="M 20,70 40,75 20,80" fill="none" stroke="black" stroke-width="2"></path>
<path d="M 80,70 60,75 80,80" fill="none" stroke="black" stroke-width="2"></path>
</svg>

 

 

SVGのSはScalableのS

SVGの特徴としてScalable(拡大縮小可能)である、というのがあります。

コード1行目の、width="100" height="100" をそれぞれ 300 に変更してみると

それだけで、こんな風に大きく表示されるようになります。
また、どんなに大きく拡大しても、ドット粗くなったりしないのも特徴ですね^^

 

記事を書きながら、数値を5000とかにして遊んでましたw
スマホで見た時に辛いので記事には出しませんが。

 

 

コード手打ちで描いてみましたが

この程度ならなんとか描けるものですねw

 

まず、輪郭を描きます

「描きます」ってサラッと言ってますが、もちろん数値を何度も調整してはプレビュー、を繰り返してますw

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
</svg>

 

眉毛を片方描きます

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
</svg>

 

もう一方の眉毛も、左右対称になるように描きます

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
</svg>

 

 全体の幅(viewbox="0 0 100 100")が「100」なので、コピペしてから
20に対して80、30に対して70、45に対して55
…と、「100から引いた数値」を指定する事で左右対称になります。

 

計算でバッチリ位置を決められるのが、コード手打ちで描く利点ですね^^

【JavaScript】ちょっと歪んだ四角形【実験】 - Little Strange Software

に書いた「歪みの愛着」とは逆の話になりますがwww

 

おめめ!

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
<circle cx="35" cy="60" r="7" fill="black"></circle>
</svg>

 

 「普通に円でいいや」と、黒く塗りつぶした(fill="black")円を配置しています。

そしてまた「35」を「100」から引いた「65」で

 

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
<circle cx="35" cy="60" r="7" fill="black"></circle>
<circle cx="65" cy="60" r="7" fill="black"></circle>
</svg>

 

 もう片方のおめめも描けました^^

 

…このへんで「もぐらの絵ってどんなだっけ?」とGoogleで検索し始めますw

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
<circle cx="35" cy="60" r="7" fill="black"></circle>
<circle cx="65" cy="60" r="7" fill="black"></circle>
<circle cx="50" cy="80" r="13" fill="white"></circle>
<circle cx="50" cy="75" r="5" fill="black"></circle>
</svg>

 半径13の白い円、その上に乗るように、半径5の黒い円を配置しました。

「もうこれで完成でいいんじゃないか?」ってぐらいに「もぐら」らしくなりましたねw

 

ピンクのほっぺで、かわいく、あざとくw

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
<circle cx="35" cy="60" r="7" fill="black"></circle>
<circle cx="65" cy="60" r="7" fill="black"></circle>
<circle cx="50" cy="80" r="13" fill="white"></circle>
<circle cx="50" cy="75" r="5" fill="black"></circle>
<ellipse cx="25" cy="80" rx="10" ry="5" fill="pink"></ellipse>
<ellipse cx="75" cy="80" rx="10" ry="5" fill="pink"></ellipse>
</svg>

 

 あざとかわいさを狙って、ピンクのほっぺを入れてみました。
<ellipse>で楕円を描き、また左右対称になるように配置しています。

 

あと、もぐらと言えば…ヒゲ!

 

コード

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
<path d="M 5,100 Q 5,20 50,20 Q 95,20 95,100" stroke="black" stroke-width="2" fill="brown"></path>
<path d="M 20,55 Q 30,40 45,50" stroke="black" stroke-width="4" fill="none"></path>
<path d="M 55,50 Q 70,40 80,55" stroke="black" stroke-width="4" fill="none"></path>
<circle cx="35" cy="60" r="7" fill="black"></circle>
<circle cx="65" cy="60" r="7" fill="black"></circle>
<circle cx="50" cy="80" r="13" fill="white"></circle>
<circle cx="50" cy="75" r="5" fill="black"></circle>
<ellipse cx="25" cy="80" rx="10" ry="5" fill="pink"></ellipse>
<ellipse cx="75" cy="80" rx="10" ry="5" fill="pink"></ellipse>
<path d="M 20,70 40,75 20,80" fill="none" stroke="black" stroke-width="2"></path>
<path d="M 80,70 60,75 80,80" fill="none" stroke="black" stroke-width="2"></path>
</svg>

 

 3本ヒゲにしようかとも思いましたが、なんか面倒くさくなって
「一本の<path>で描ける折れ線ヒゲ」
にしました。

これも片方決まれば、もう片方は「コピペ&100から引いて」でいけますw

 

これで完成!!

 

 

あとがき

描き終えた後、記事上に部分コピペしながら描いた手順を振り返りましたが、
「もぐらは鼻が決め手」
のような気がしました^^

 

「もぐらたたき」のほうは、叩いているうちに「もぐらの出現から引っ込むまでの速度」が速くなったり落ち着いたりするようなものを作りたい、って思ってます。

 

が、そうなると「すぐ引っ込む」事が分かるように動きを加えるべきで、動きを加えるなら、もぐら自体も画像で出すべきかな、と。

どうやって動かすかはまだ考えていませんが、とりあえず描いちゃいましたw

…あとあれですね。

「叩かれたもぐら」の絵も描かないと…^^;

 

 

尾上萬 もぐらたたき ポコポコもぐらパーティー
 

 

 

ってなとこで、今回はこのへんで!

次回もまた、よろしくお願いします^^