<body>
<div class="display">
<div id = "roulette" class="roulette"></div>
<div class="c_button">
<button id ="start">スタート</button>
<button id ="stop">ストップ</button>
<button id ="reset">リセット</button>
</div>
</div>
</body>
.display{
margin-top: 100px;
margin-left:100px;
width: 400px;
margin:auto;
}
.roulette{
display: block;
width: 300px;
height: 300px;
margin: auto;
position: relative;
}
.cil{
width: 80px;
height: 80px;
background-color: rgb(250, 255, 180);
border-radius: 50%;/* 円*/
line-height: 80px;
text-align: center;
display: block;
position: absolute;
}
.c_button{
width: 600px;
top: 100px;
margin: auto;
position: relative;
}
button {
width: 150px;
height: 50px;
margin: 20px;
border: 2px solid #000;
border-radius: 0;
background: #fff;
text-align: center;
}
button:hover {
color: #fff;
background: #000;
}
.red {
background-color:#ff0062;
width: 80px;
height: 80px;
border-radius: 50%;/* 円*/
line-height: 80px;
text-align: center;
display: block;
position: absolute;
}
.pink{
background-color:#ff73dc;
width: 80px;
height: 80px;
border-radius: 50%;/* 円*/
line-height: 80px;
text-align: center;
display: block;
position: absolute;
}
document.addEventListener("DOMContentLoaded", function(){
//要素の表示、円周上に表示させる
let num = [0,1,2,3,4,5,6,7,8,9];
//HTMLから取得
let roulette = document.getElementById("roulette");
/*円形に並べる手順*/
let item_length = num.length;
//rouletteの半径を計算
let r = roulette.clientWidth/2;
//360度÷配置要素数
let deg = 360.0/item_length;
//さっきの角度をラジアンに変更
let rad = (deg*Math.PI/180.0);
//要素追加して表示させる
for(var i = 0; i < num.length; i++ ){
//div要素の追加
let div = document.createElement('div');
div.className = "cil";
div.id = "cil"+ i;
div.innerHTML= num[i] ;
const x = Math.cos(rad * i) * r + r;
const y = Math.sin(rad * i) * r + r;
let circle = roulette.appendChild(div);
circle.style.left = x + "px";
circle.style.top = y + "px";
// console.log(x);
}
//ルーレットする
let interval;//インターバル
let first = false;//フラグ
let number = 1;
let grid =0;
function start_set(){//start状態
document.getElementById("start").disabled = true;
document.getElementById("stop").disabled = false;
document.getElementById("reset").disabled = false;
if(first === false){
interval = setInterval(start_go,100);
first = true;
}
}
function start_go(){//start押下
for(var k = 0; k < item_length; k++){
let div_number = document.getElementById('cil'+[k]);//表示上のidの取得
div_number.classList.remove('red');//.redを消す
}
grid = Math.floor(Math.random()*num.length);
number = num[grid];//.redをつけるためのランダムな数字を選択
div_number = document.getElementById('cil'+ number);
//console.log(div_number);
div_number.classList.add('red');
}
function stop_set(){//stop押下
document.getElementById("stop").disabled = true;
document.getElementById("start").disabled = false;
clearInterval(interval);
first = false;
let red_number = document.querySelector('.red');//.redクラスのついているものを取得
//console.log(grid);
num.splice(grid,1);//配列からred_numberのところを1つ削除
//console.log(num);
red_number.classList.remove('red');
red_number.classList.add("pink");
if(num.length === 0){
document.getElementById("start").disabled = true;
}
}
function reset_set(){//リセット押下
clearInterval(interval);
first = false;
document.getElementById("start").disabled = false;
for(var j = 0; j < 10 ; j++){
let all = document.getElementById("cil" + j);
all.classList.remove('pink');
all.classList.remove('red');
}
num = [0,1,2,3,4,5,6,7,8,9];
}
const starter = document.getElementById("start");
const stopper = document.getElementById("stop");
const resetter = document.getElementById("reset");
starter.addEventListener("click",start_set,false);
stopper.addEventListener("click",stop_set,false);
resetter.addEventListener("click",reset_set,false);
document.getElementById("stop").disabled = true;
document.getElementById("reset").disabled = true;
})
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.