小さい順に数字を選ぶゲーム
view source
JavaScript
document.title = '小さい順に数字を選ぶゲーム ';
//document.oncontextmenu = function () {return false;}
var clearCount = 0;
const shuffle = ([...array]) => {
for (let i = array.length - 1; i >= 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
function setAry(max){
return [...Array(max)].map((_, i) => i);
}
var x = 2;
var y = 2;
$(function(){
var area = $('#area');
var setStage = function(){
var now = 0;
var max = x * y;
var ary = setAry(max);
ary = shuffle(ary);
console.log(ary);
$('h1').addClass('abs');
if(clearCount>0){
$('h1').text(clearCount+1);
}
getHint(clearCount);
area.empty();
var tr = $('<tr>');
ary.forEach(function(v,i){
var td = $('<td>').css({width:(100/x)+'%'});
var m = 0;
var b = $('<b>').text((v+1));
//var y = Math.pow(n, 0.5)+0.5;
b.css({fontSize:(100/(y+1))+ 'vmin'});//,width:(100/y*3)+'%'
//if(v===1){b.addClass('result');}
if(i%x === 0){
tr = $('<tr>').css({height:(100/y)+'vmin',lineHeight:(100/y)+'vmin'});
area.append(tr);
}
tr.append(td)
b.on('click', function(){
if(v===now){
now++;
$(this).addClass('ok');
$('.result').addClass('i');
if(v === max-1){
clearCount++;
if(clearCount < 20){
if(clearCount%2===0){y++;}
if(clearCount%2===1){x++;}
}
setTimeout(function(){setStage()},999);
}
} else {
$(this).addClass('ng');
if(clearCount>3){clearCount--;}
$('.result').addClass('i');
setTimeout(function(){setStage()},999);
}
});
td.append(b);
});
}
setStage();
});
CSS
html,body{
overflow:hidden;
}
@font-face {
font-family: 'LeagueGothic';
src: url(/fonts/LeagueGothic-Regular.ttf);
}
#demo{
font-family: LeagueGothic, 'Meiryo';
}
#target{
margin:0 auto;
max-width:780px;
text-align:left;
}
#demo h1{
}
#area{
width:99vmin;
height:100%;
user-select:none;
margin:auto;
position:absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
td{
border:1px solid #999;
text-align:center;
}
.abs{
position:absolute;
bottom:0;
left:0;
}
td{
text-align:center;
}
b{
display:block;
width:100%;
height:100%;
font-weight:bold;
font-size:20vw;
cursor:pointer;
text-align:center;
vertical-align: middle;
}
b:hover{
color:#aaa;
}
b.ok{
color:#afa;
}
b.ng{
color:#a00;
}
b.result.i{
color:#0a0;
}
HTML
ページのソースを表示 : Ctrl+U , DevTools : F12
view-source:https://hi0a.com/demo/-js/js-game-number-step/
ABOUT
hi0a.com 「ひまアプリ」は無料で遊べるミニゲームや便利ツールを公開しています。
プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。
必要な機能の関数をコピペ利用したり勉強に活用できます。
プログラムの動作サンプル結果は画面上部に出力表示されています。
環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。
画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。
動く便利なものが好きなだけで技術自体に興味はないのでコードは汚いです。
途中放置や実験状態、仕様変更、API廃止等で動かないページもあります。