DmitrMakeev
commited on
Commit
•
0f09b13
1
Parent(s):
93ac4fe
Update koleso.html
Browse files- koleso.html +11 -30
koleso.html
CHANGED
@@ -78,13 +78,13 @@ body {
|
|
78 |
<script>
|
79 |
|
80 |
const sectors = [
|
81 |
-
{ color: '#f82', label: 'Stack'
|
82 |
-
{ color: '#0bf', label: '10'
|
83 |
-
{ color: '#fb0', label: '200'
|
84 |
-
{ color: '#0fb', label: '50'
|
85 |
-
{ color: '#b0f', label: '100'
|
86 |
-
{ color: '#f0b', label: '5'
|
87 |
-
{ color: '#bf0', label: '500'
|
88 |
]
|
89 |
|
90 |
const rand = (m, M) => Math.random() * (M - m) + m
|
@@ -99,6 +99,7 @@ const arc = TAU / sectors.length
|
|
99 |
const friction = 0.991 // 0.995=soft, 0.99=mid, 0.98=hard
|
100 |
let angVel = 0 // Angular velocity
|
101 |
let ang = 0 // Angle in radians
|
|
|
102 |
|
103 |
const getIndex = () => Math.floor(tot - (ang / TAU) * tot) % tot
|
104 |
|
@@ -117,7 +118,7 @@ function drawSector(sector, i) {
|
|
117 |
ctx.rotate(ang + arc / 2)
|
118 |
ctx.textAlign = 'right'
|
119 |
ctx.fillStyle = '#fff'
|
120 |
-
ctx.font = 'bold
|
121 |
ctx.fillText(sector.label, rad - 10, 10)
|
122 |
//
|
123 |
ctx.restore()
|
@@ -150,38 +151,18 @@ function engine() {
|
|
150 |
}
|
151 |
|
152 |
function init() {
|
153 |
-
if (!localStorage.getItem('hasSpun')) {
|
154 |
-
localStorage.setItem('hasSpun', 'false')
|
155 |
-
}
|
156 |
-
|
157 |
sectors.forEach(drawSector)
|
158 |
rotate() // Initial rotation
|
159 |
engine() // Start engine
|
160 |
spinEl.addEventListener('click', () => {
|
161 |
-
if (
|
162 |
-
localStorage.setItem('hasSpun', 'true')
|
163 |
angVel = rand(0.25, 0.45)
|
164 |
-
|
165 |
-
} else {
|
166 |
console.log('You have already spun the wheel.')
|
167 |
}
|
168 |
})
|
169 |
}
|
170 |
|
171 |
-
function spinWheel() {
|
172 |
-
const probabilities = sectors.map(sector => sector.probability)
|
173 |
-
const totalProbability = probabilities.reduce((a, b) => a + b, 0)
|
174 |
-
const random = Math.random() * totalProbability
|
175 |
-
let cumulativeProbability = 0
|
176 |
-
for (let i = 0; i < sectors.length; i++) {
|
177 |
-
cumulativeProbability += sectors[i].probability
|
178 |
-
if (random < cumulativeProbability) {
|
179 |
-
ang = (i + 0.5) * arc
|
180 |
-
break
|
181 |
-
}
|
182 |
-
}
|
183 |
-
}
|
184 |
-
|
185 |
init()
|
186 |
</script>
|
187 |
|
|
|
78 |
<script>
|
79 |
|
80 |
const sectors = [
|
81 |
+
{ color: '#f82', label: 'Stack' },
|
82 |
+
{ color: '#0bf', label: '10' },
|
83 |
+
{ color: '#fb0', label: '200' },
|
84 |
+
{ color: '#0fb', label: '50' },
|
85 |
+
{ color: '#b0f', label: '100' },
|
86 |
+
{ color: '#f0b', label: '5' },
|
87 |
+
{ color: '#bf0', label: '500' }
|
88 |
]
|
89 |
|
90 |
const rand = (m, M) => Math.random() * (M - m) + m
|
|
|
99 |
const friction = 0.991 // 0.995=soft, 0.99=mid, 0.98=hard
|
100 |
let angVel = 0 // Angular velocity
|
101 |
let ang = 0 // Angle in radians
|
102 |
+
let hasSpun = localStorage.getItem('hasSpun') === 'true'
|
103 |
|
104 |
const getIndex = () => Math.floor(tot - (ang / TAU) * tot) % tot
|
105 |
|
|
|
118 |
ctx.rotate(ang + arc / 2)
|
119 |
ctx.textAlign = 'right'
|
120 |
ctx.fillStyle = '#fff'
|
121 |
+
ctx.font = 'bold 30px sans-serif'
|
122 |
ctx.fillText(sector.label, rad - 10, 10)
|
123 |
//
|
124 |
ctx.restore()
|
|
|
151 |
}
|
152 |
|
153 |
function init() {
|
|
|
|
|
|
|
|
|
154 |
sectors.forEach(drawSector)
|
155 |
rotate() // Initial rotation
|
156 |
engine() // Start engine
|
157 |
spinEl.addEventListener('click', () => {
|
158 |
+
if (!angVel && !hasSpun) {
|
|
|
159 |
angVel = rand(0.25, 0.45)
|
160 |
+
} else if (hasSpun) {
|
|
|
161 |
console.log('You have already spun the wheel.')
|
162 |
}
|
163 |
})
|
164 |
}
|
165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
init()
|
167 |
</script>
|
168 |
|