知識のアップデートは時々必要。わたしの好きなプログラミング言語JavaScriptも常に進化しているので、新しい部分を勉強していたら千と千尋の神隠しに出てくる湯婆婆が色々なプログラミング言語で実装(プログラムで実現)されていることを知った。
【毎日自動更新】湯婆婆 LGTMランキング! - Qiita
この記事は @Nemesis さんのJavaで湯婆婆を実装してみるよりはじまった「湯婆婆」関連記事のリンク集です"title:湯婆婆 OR tag:湯婆婆"で検索していますLGTM数順に並べてい…
すでにJavaScriptでも実装されているが、わたしも自分なりに作ってみた。
処理はいたって簡単。
1.名前を入力する
2.新しい名前を湯婆婆が決定する(ランダムで1文字抽出)
3.湯婆婆が新しい名前を告げる
一応、わたしなりのエラー対策として名前を入力しないで記すボタンを押したときは、勝手に1文字の名前(虚・空・無 の中から適当に選択)をつけるようにした。
ソースコード
yubaba.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>湯婆婆</title>
<style>
body{
margin: 50px;
font-family: serif;
font-size: 32px;
}
</style>
<script>
let btnChihiro, yubabaResult;
document.addEventListener("DOMContentLoaded", function(){
// 記すボタンと湯婆婆のセリフ表示場所
btnChihiro = document.getElementById("btnChihiro");
yubabaResult = document.getElementById("yubabaResult");
// 記すボタンを押したときの処理
btnChihiro.addEventListener("click", function(){
// 契約書の名前を取得
let myname = document.getElementById("myname").value;
// 入力チェック
let yubaba = "";
if(myname === ""){ // 入力なし
let choice = (v) => v[Math.floor(Math.random() * v.length)];
myname = choice(["虚", "空", "無"]);
console.log(myname);
yubaba += `フン。名無しってかい。じゃあいいよ。<br>`;
}
else{ // 名前を記した
yubaba += `フン。<strong>${myname}</strong>というのかい。贅沢な名だねぇ。<br>`;
}
// 湯婆婆が新しい名前を決定する
let new_name = myname.charAt(Math.floor(Math.random() * myname.length));
new_name = "<strong>" + new_name + "</strong>";
// 湯婆婆が新しい名前を告げる
yubaba += `今からお前の名前は${new_name}だ。いいかい、${new_name}だよ。<br>`;
yubaba += `分かったら返事をするんだ、${new_name}!`;
yubabaResult.innerHTML = yubaba;
});
});
</script>
</head>
<body>
<h1>湯婆婆</h1>
<p>契約書だよ。そこに名前を書きな。</p>
<input type="text" size="10" id="myname"><button id="btnChihiro">記す</button>
<p id="yubabaResult"></p>
</body>
</html>
コメント