さて、前回作ったやつを色々いじっていきましょうかね。
とりあえず、「おうじゃのつるぎ」と同じ確率にする。
128分の1。
それがこれ。
確率とは、乱数とは
確率分母が大きくなった為に、新しくボタンを設置した。
左側のボタンは1押しで1回抽選。
右側のボタンは1押しで当たる迄、抽選。
以下コード。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>確率とは、乱数とは</title>
<script src="src/random_number.js"></script>
<script src="src/jag.js"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<img src="img/jag.jpg" id="jag">
<div class="content">
<a id="push" class="push">1回ずつ押したい人用<br>GO!</a>
<a id="push2" class="push2">面倒くさい人用<br>GO!GO!</a>
</div>
<div>
<p id="jagTimes"></p>
</div>
<div id="randomBox">
<p id="randomNumber"></p>
</div>
</body>
</html>
@charset "utf-8";
/* Reset CSS */
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, main, menu, nav, section, summary,
time, mark, audio, video{
margin:0;
padding:0;
}
article,aside,details,figcaption,figure,
footer,header,main,menu,nav,section{
display:block;
}
html{
-webkit-text-size-adjust: 100%;
}
body{
color: #59220d;
line-height: 1.5;
font-size: 14px;
font-family: sans-serif;
}
img{
border: 0;
max-width: 100%;
height: auto;
}
ul,ol{
list-style-type: none;
}
table{
border-collapse: collapse;
border-spacing: 0;
}
img, input, select, textarea{
vertical-align: middle;
}
a{
color: #59220d;
transition: 0.5s;
}
a:hover{
color: #d53e04;
}
a:hover img{
opacity: 0.7;
}
/* Reset CSS ここまで*/
/* Pull to refreshを無効化 */
html {
overflow: hidden;
/* 背景を黒にする */
background-color: #000;
}
body {
height: 100vh;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* content */
.content {
height: 30%;
width: 50%;
font-size: 1em;
margin: 0 auto;
}
@media screen and (max-width: 480px) {
/* スマートフォン用 */
.content {
height: auto;
width: 100%;
font-size: 1em;
margin: 0 auto;
}
}
/* 画像 */
img {
height: 50%;
width: 50%;
margin: auto;
display: block;
}
@media screen and (max-width: 480px) {
/* スマートフォン用 */
img {
height: 30%;
width: 50%;
margin: auto;
display: block;
}
}
/* ボタン */
.push {
/* ボタンを両端に並べるため */
float: left;
border-radius: 50%;
border-color: #d53e04;
border: 5px solid;
display: flex;
justify-content: center;
align-items: center;
width: 110px;
height: 110px;
background: #c0c0c0;
color: #d53e04;
text-decoration: none;
text-align: center;
margin: 0 auto;
cursor: pointer;
}
.push2 {
/* ボタンを両端に並べるため */
float: right;
border-radius: 50%;
border-color: #d53e04;
border: 5px solid;
display: flex;
justify-content: center;
align-items: center;
width: 110px;
height: 110px;
background: #c0c0c0;
color: #d53e04;
text-decoration: none;
text-align: center;
margin: 0 auto;
cursor: pointer;
}
/* 記録 */
div {
text-align: center;
font-size: 3em;
/* ボタンとボタンの間に入り込み防止 */
clear: both;
}
p {
color: #fff;
}
// ボタンを押したときの処理
window.onload = function(){
let pushButton = document.getElementById("push");
let pushButton2 = document.getElementById("push2");
let jagImage = document.getElementById("jag");
let jagTimes = document.getElementById("jagTimes");
let randomBox = document.getElementById("randomBox");
let numberOfTimes = 0;
jagTimes.innerHTML = numberOfTimes + "回目";
// 1回ずつ押す人用
pushButton.addEventListener("click", function(){
// 生成した乱数を取得(0~9)
// とりあえずここでは、5を当たりとする
// 2秒後に元の画像に戻す
let rn = random.number()
if(rn === 5){
jagImage.src = "img/jag2.jpg";
window.setTimeout(function(){
jagImage.src = "img/jag.jpg";
}, 2000);
}
// ボタンを押した回数を記録
numberOfTimes++;
// HTMLに記載
jagTimes.innerHTML = numberOfTimes + "回目";
// 新しいHTML要素を作成
let newElement = document.createElement('p');
newElement.textContent = rn;
// 指定した要素の中の末尾に挿入
randomBox.appendChild(newElement);
}, false);
// 面倒くさい人用
// 当たりを引くまで、クリックし続ける動作
pushButton2.addEventListener("click", function(){
// 生成した乱数を取得(0~9)
// とりあえずここでは、5を当たりとする
// 2秒後に元の画像に戻す
let flag = true;
// フラグがfalseになるまで実行
while(flag){
let rn = random.number()
switch (rn){
case 5:
// 当たりの場合
jagImage.src = "img/jag2.jpg";
window.setTimeout(function(){
jagImage.src = "img/jag.jpg";
}, 2000);
// ボタンを押した回数を記録
numberOfTimes++;
// HTMLに記載
jagTimes.innerHTML = numberOfTimes + "回目";
// 新しいHTML要素を作成
let newElement2 = document.createElement('p');
newElement2.textContent = rn;
// 指定した要素の中の末尾に挿入
randomBox.appendChild(newElement2);
flag = false;
//console.log(rn);
break;
default:
// はずれの場合
// ボタンを押した回数を記録
numberOfTimes++;
// HTMLに記載
jagTimes.innerHTML = numberOfTimes + "回目";
// 新しいHTML要素を作成
let newElement3 = document.createElement('p');
newElement3.textContent = rn;
// 指定した要素の中の末尾に挿入
randomBox.appendChild(newElement3);
//console.log(rn);
}
}
}, false);
}
// 乱数で数字を取得
class random {
// 今度は128分の1に
static number(){
let randomNumber = Math.floor(Math.random()*128);
//console.log(randomNumber);
return randomNumber;
}
}
特には難しい事はしてないかな。
while文でフラグが成立するまで(正確には条件から外れるまで)、ループ。
次の記事で、分析したいな。