「プログラミング」カテゴリーアーカイブ

Programing

トリミングと拡大表示

トリミングとは

トリミングとはコンピューターで画像を加工するとき、画像の周囲や映像の前後を切り取って、必要な部分だけを抜き出し画面を整えることを言います。ここでは10種の動物を集めた1枚の画像から指定された動物をクローズアップします。合わせてタイマー管理を紐解きます。

画像トリミングとボタン操作 ©TacM,2019 Ver0.01

❼whale  クジラ
©TacM,2019 Ver0.01

トリミング実現方法

トリミングするには多くはclip:rectを用いますが、今回、position:relativeにoverflow:hiddenを指定し、合わせてposition absoluteを併用して必要な画像を切り抜いています。

一つのことを実現するに当たり様々な方法が存在します。いろいろな手法を身に着けることによって深みのある文書や作品を作成することができます。

HTMLとJavaScriptサンプルコード

<html>
<body>
<img id="uenozoo" src="https://aidesign.lolipop.jp/wp-content/uploads/2018/06/animals10.png" width="385px" height="160px">
<DIV style="font-size:24px;">
<button onclick="if(v==0)setClip();">開始</button><span id="num1" style="color:red">&#x277c;whale</span>&nbsp;
<span id="num2" style="color:blue">クジラ</span>
</DIV>
<DIV style="position:relative; width:300px; height:300px; overflow:hidden; border:0px solid green;">
<div id="sample" style="position:absolute; left:-300px; top:-150px; width:750px; height:300px; zoom:2.0;">
<img id="animal" src="https://aidesign.lolipop.jp/wp-content/uploads/2015/08/animal10.png">
</div>
</DIV>
<div style="font-size:12px;">&copy;TacM,2019 Ver0.01</div>
<script type="text/javascript" charset="utf-8">
const animal_10=['squirrel', 'bear', 'racoon-dog', 'lion', 'fox', 'giraffe', 'elephant', 'whale', 'koala', 'hippopotamus'];
const animalName =    ["リス", "クマ", "タヌキ", "ライオン", "キツネ", "キリン", "ゾウ", "クジラ", "コアラ", "カバ"];
var v=0;
function setClip(){                                                             //animal10.png  original-size : 750*300
 document.getElementById( "sample" ).style.left = (- v % 5 * 150) + 'px';
 document.getElementById( "sample" ).style.top = (-Math.floor(v / 5) * 150) + 'px';
 document.getElementById("num1").innerHTML ="\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e".substr(v, 1) + animal_10[v];
 document.getElementById("num2").innerHTML = animalName[v];
 if(++v < 10) setTimeout(setClip, 2000);
 else v = 0;
}
</script>
</body>
</html>

音楽を鳴らす

音楽を鳴らしてみる

音楽を鳴らす ©TacM,2019 Ver0.01
おんがく:オニのパンツ


開始ボタンを押してスタートです。

HTMLコード

<div style="font-size:26px; color:violet;">音楽を鳴らす<span style="font-size:12px; color:blue;">&nbsp;&copy;TacM,2019 Ver0.01</span></div>
<audio id='bgm' src="https://aidesign.lolipop.jp/wp-content/uploads/2019/04/oninopantsu.mp3" controls controlslist="nodownload"></audio>
<div id="kyoku" style="height:24px; font-size:14px; line-height:2.0em; border:0px solid navy;">おんがく:オニのパンツ</div>

説明

音楽を鳴らすにはaudioタグを用います。タグという言葉が出ましたが初めて出会う方は画像を表示したり音楽を鳴らすための仕組みと理解してください。タグは100を超える種類があり少しずつ理解していきます。タグや要素の意味を図にしてみました。



上記のように開始タグと終了タグがあります。divはdivision、hはheader、pはparagraphのように英単語の1字以上の短縮形から成り立っています。

タグの説明は図にする場合が多いです。説明のために小なり(Less Than)や大なり(Greater Than)の記号を本文記事の中に置くとタグとして機能し、説明文が乱れることがあるためです。

今回はタグの説明でした。

梅雨さむストップ

太陽を求む

記録的な日照不足です。何事も極端はいけません。そろそろ梅雨も明けてもらわないと困ります。

 

湯けむり美人

コーヒーブレーク

【栃木の秘湯】を巡る女子旅~”日本秘湯を守る会”おすすめの旅館

2019年も半分が過ぎ2日目です。今日は夏至(げし)から十一日目に当たり半夏生(はんげしょう)です。スーパーにはタコや鯖がところ狭しと並んでいることでしょう。

ここ2~3週間はプログラミングにまじめに取り組んできました。

月替わり、半年経過を記念し恩賞としてゆるやか路線に進んでみましょう。湯けむりの向こうにかすかに浮かぶ影を話題にします。

湯けむり天女伝説

ネットを検索したら、湯けむりをサポートするアニメーションAPIが公開されていました。『プラグインを使わずに湯気のアニメーションを作成』の記事を参考にさせていただきました。

アニメーションのイベントを捕まえる方法がはっきりしないので、setTimeoutで羽衣天女(はごろもてんにょ)の出現とお隠れを制御しました。モーレツに業務に精勤されている諸氏の頭休めにお奨めします。

残念ながら教育的配慮により画面を静止できません。お気に入りの画像はスクリーンショットで!

 

夏の歳時記

⇩下線が付いた開始ボタンをクリックしてください。

夏の風物

夏の風物といえば、七夕でしょうか。彦星と織姫の逢瀬にまつわる一年に一度のイベントです。それに童謡から「雨降りお月さん」を取り上げました。最後に透き通るような音色の「南十字星」です。

ここで取り上げた童謡は著作権保護期間が終了したものであり、歌詞が難解のものが多いです。その節はネットを検索して理解されますようにお願いします。

俳句教室への誘い

sodo-haikuimage/svg+xml俳句教室への誘い©2019 TacM, Ver0.01

キャッチコピーの一例

カルチャーセンターの案内コピーを作ってみました。縁取り文字を用いてネオンサイン風に表現しました。

「目には青葉 山ほととぎす 初鰹」とは、江戸中期の俳人・山口素堂(1642~1716)の作です。最初の句が字余りですが形にこだわると何の変哲もない句になるとのこと。

カツオの字は松魚が当てられることがあります。これは鰹節(かつおぶし)が松の節に似ていることからというところからきているようです。

美感「青葉」、聴感「ほととぎす」、食感「初鰹」と、春から夏にかけ、江戸の庶民が粋を感じて俳句に詠みました。

 

令和こんにちは

平成ありがとう ➡ 令和こんにちは

 

Temple bells of New Year’s Eve


経過時間

 

プログレス一例

主要ブラウザで動作

HTMLの表現で進捗度を表すとき、progress要素を使います。ダウンロードの完了度や音楽、ビデオの進行状況を表示するときに多用されています。progress要素は進捗度の他、音量の目盛りなどにも使われます。

ほとんどのブラウザでプログレスバーの長さを設定することができません。上図の中央に示したようにMicrosoft Edgeでは他のブラウザよりも長くなるので、右のように統一した表現をしたいと考え、自前のプログレス表示を作ってみました。

実行例

すでに実行済みであり、再実行にはブラウザのリロードボタンをクリックします。

サンプルコード

親要素に幅、長さ、背景色を指定し子要素のwidthに%を指定するだけです。

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.prog100 {
    margin-top: 2px;
    background: palegoldenrod;
    width: 160px;
    height: 14px;
}
</style>
</head>
<body onload="progressSample();">
<Div class="prog100" style="width:120px;">
<div id="prg0" style="width:0%; height:14px; background:seagreen;"></div>
</Div>
<Div class="prog100" style="width:200px;">
<div id="prg1" style="width:0%; height:14px; background:deepskyblue;"></div>
</Div>
<Div class="prog100" style="width:240px;">
<div id="prg2" style="width:0%; height:14px; background:crimson;"></div>
</Div>
<script type="text/javascript" charset="Shift_JIS">
var percent=0;
function progressSample(){
	var p = percent+"%";
	console.log("progressSample", p, 20+percent*0.5+"%");
	document.getElementById("prg0").style.width = p;
	document.getElementById("prg1").style.width = p;
	document.getElementById("prg2").style.width = 20+percent*0.5+"%";
	if(++percent <= 100)	setTimeout(progressSample, 50);
}
</script>
</body>
</html>

苦労話

参考にした例は子要素にimageを使った方法でした。その方法でも期待した結果が得られましたが、プログレスバーの色を変更する場合はその都度、画像を用意しなければならず、上の方法を編み出しました。

参考例ではclass名にmainを使っており、ローカル環境で満足いく動作になり、公開サーバーにアップロードするととんでもない動作になりました。原因は容易にわからずclass名をprog100に変更したら期待した動作になりました。

ブログ画面にはヘッダー画面、ウィジェット画面などがかみ合っています。本画面でないところでmainという要素名を使っているようで、予約語のようなclass名を使う事は避けた方が賢明という体験をしました。

グラデーションを楽しむ

アニメーションのひとつ

HTMLで動的な表現をする場合は、JavaScriptで記述すれば、かなり細かな動作を行うことができます。一方、HTMLにanimateメソッドがあり、CSSファイルの中に少ない記述で様々なアニメ表現を可能にしています。その中にグラデーション機能があります。

グラデーションとはホームページやブログの記述において、色や濃淡を連続した階調で表現することを言います。アニメーションについては探求を始めたばかりです。まずはグラデーションを使ってみます。

背景色を連続的に変更する

さんぷる

 

グラデーションのサンプルコード

<style>
#sample {
  background-color: #6CB8FF;
  animation: gradationTest 10s linear infinite;
}
@keyframes gradationTest {
  0% { background-color: #6CB8FF; }
  50% { background-color: #FFF66C; }
  100% { background-color: #FFA36C; }
}
</style>
<body>
<DIV id="sample" style="width:600px; height:300px; font-size:136px; color:navy; border:1px solid deeppink;">さんぷる</DIV>
</body>

応用例

先週、人里離れた気まぐれの宿に動くキャッチコピーを表現しました。こんどは次の図をクリックしてグラデーションをお楽しみください。

 

棋譜自動再生

棋譜リーダーとは

棋譜リーダーあるいは棋譜再生とは、棋譜を読んで画面上に将棋の対戦状況を描画するものです。従前は一手ずつ操作を入れて手を進めるものが多く、今回、自動的に手を進める棋譜自動再生を世に送ります。棋譜ファイルはKIF仕様です。



一手ずつの操作が鬱陶しい、利き手を怪我した、集中して対戦者の棋風を理解したい方への朗報になれば幸いです。

棋譜リーダーの使い方

  1. 大橋流駒並べの速度を設定する。40~1000ミリ秒の値を入力する。40ミリ秒を選択する場合はこの設定を省略できる。大橋流駒並べのボタンは押さない。
  2. ファイルを選択するボタンをクリックして棋譜ファイル名を入力する。
  3. 棋譜再生速度250~10000ミリ秒を入力する。250ミリ秒を選択する場合はこの設定を省略できる。
  4. 試合開始ボタンをクリックする。

 

棋譜自動再生JavaScriptコードをダウンロードするには

以下のここをクリックボタンをクリックします。ダウンロードされたkifuReader.zipファイルを解凍すればkifuReader.htmlになるので棋譜自動再生を実行することができます。

style要素でcssに相当する記述をしており、すべての機能を345行からなるkifuReader.html一個のファイルに凝縮してあります。ソースコードの中には随所にコメントが施されているので初心者にも取り組みやすいことでしょう。

先ずはダウンロードせずとも手元に棋譜ファイルがあれば、次の実演画面でファイルを選択に棋譜ファイル名を設定して自動再生をお楽しみください。

[wpdm_package id=’26565′]

 

棋譜自動再生の実演

棋譜リーダー
将棋研究倶楽部2019 ©TacM,2019 Ver0.02
棋譜ファイル 

プログラミング教育に貢献
  • 2020年度から小学校で必修化
  • プログラミング的思考を育む
  • 知的ゲームでIT社会に適応
『飾り駒』新築祝いなどの贈答品
この作品はJavaScriptで記述され
ています。
将棋は役立つの?
  • 友達が増えた
  • じっくり考えられるようになった
  • 勉強ができるようになった
  • 先を読む力、決断力が身についた

ソースコードの再利用について

  1. このソースコードは①ブラウザ上で将棋棋譜を再生するプログラム:http://www.geocities.jp/shogi_depot/JS/index.htmlと②KIF形式の棋譜ファイルサンプルその2:https://github.com/sandmark/KifuCommetter/tree/master/public/swfを参照して作成されています。両関係者の皆様に感謝申し上げます。
  2. 画面構成はshogi_depotを参照させていただきました。
  3. 制御や描画するコードはオリジナルなものです。
  4. ソースコードの著作権はTacMにありますが、 https://aidesign.lolipop.jp/の利用規定により利用することができます。
  5. 棋譜は「将棋DB2」https://shogidb2.com/等から入手できます。KIF形式のみサポートされています。

さいごに

棋譜自動再生はソフトウェア開発に適したJavaScriptを採用しました。kifuファイルは手入力により作成され多くの冗長が含まれます。厳格さを欠く部分の対応は限定的であることを付記します。

今後の予定はIT将棋の領域に進みたいと考えています。よって、これからは対局の作戦を見破られるソースコードの公開は部分的になることでしょう。