はじめに
id:s-yokoyamaです。
今回は、Oracle Cloudのストレージサービス「Object Storage」での静的ファイル配信機能を使って、
最近流行っている?ショートコーディング(code golf?)的なゲームを作成してみました。
※可能な限り短い文字数でゲームっぽいものの作成を目指しました!!
言語はjavascriptです。
ゲーム内容
- 概要 :自機($)を壁(#)に当たらないように避けていくゲーム
- 終了条件:壁(#)に当たった場合はゲームを終了
- 操作 :キーは何でもOK。自機($)を移動させる
- スコア :終了するまでのターン回数
- その他 :壁の出現はランダム(上、下10%の確率で生成)
ソース紹介
ソースの全量(268byte)です。
※この記事がMarkdownで1400文字なので約1/5です(笑) 。
なんと、twittreにも投稿できちゃいます!!
<body onKeyDown=K=event.keyCode onload="K=b='<br>';w=d='_'.repeat(99)+b;p=s=0;setInterval(t=>{d[p*50+1]>'#'||e;p=K>0?1-p:p;r=Math.random()*9|0;d=[1,51].reduce((x,y,c)=>x+(p-c?d[y]:'$')+d.substr(y+1,44)+(r-c?'_':'#')+b,'');document.body.innerHTML=++s+b+w+d+w;K=0},99)">
※多分これが一番短いと思います。
(さらに省略出来るよとかあれば、コメント下さい)
ソースの解説
// キー入力をKに保存 <body onKeyDown=K=event.keyCode // 初期化処理(<script></script>よりonloadに記載する方が短い) onload="K=b='<br>';w=d='_'.repeat(99)+b;p=s=0; // ループ処理 setInterval(t=>{(省略)},99)"> // 死亡判定 (*1 =='#'より>'#'のが短い) (*2 エラーを発生させてゲームを止める) d[p*50+1]>'#'||e; // 自機移動処理( p=K>0?1-p:p; // 壁生成処理 (|0は切り捨て処理) r=Math.random()*9|0; // 壁と自機の描画&移動処理 d=[1,51].reduce((x,y,c)=>x+(p-c?d[y]:'$')+d.substr(y+1,44)+(r-c?'_':'#')+b,''); // 描画処理、スコアの加算処理、キーの初期化処理 document.body.innerHTML=++s+b+w+d+w;K=0
最後に
仕事でほぼ使うことの無い技術だけど、考えてて非常に楽しかったので、
是非、もっと流行って欲しいですね!!
需要があれば、他にも投稿しようかな。