Ìjìka Owó & Kẹ̀kẹ́ Ìyí Ọ̀fẹ́

Já owó fẹ́lẹ́fẹ́lẹ́, yí kẹ̀kẹ́ tí ó ṣeé ṣàtúnṣe, tàbí yan lọ́nà àdámọ́ lára àkójọpọ̀ àwọn àṣàyàn. Ó ń lo ìtòlẹ́sẹẹsẹ àdámọ́ tí ó dájú fún cryptography láti ọ̀dọ̀ ẹ̀rọ àwárí rẹ — kì í ṣe ìyàn ìtẹ̀wádàwọ̀ràn gbangba, nítorí náà yẹra fún àwọn ìdíje tí a ń darí.

Ó ń ṣiṣẹ́ láìsí ìsopọ̀ ní kété tí a bá kó wọlé

🔒 Gbogbo àwọn mẹ́tẹ̀ẹ̀ta ń lo ẹ̀rọ àrìnàkò tí ó ní ààbò cryptographic ti aṣàwárí rẹ: a máa ń yan àbájáde náà kọ́kọ́, lẹ́yìn náà ni a fi hàn ní ìṣàwòrán — owó náà jẹ́ 50/50 tòótọ́, àyíká náà ni a yí lọ sí àbájáde tí a ti yàn tẹ́lẹ̀, yíyàn náà kò sì ní ẹ̀tọ́ǹkẹ̀. Kò sí ohun tí ó kúrò ní ẹ̀rọ rẹ. Èyí bára mu fún lílò lásán, ṣùgbọ́n kì í ṣe ìyàn gbogbogbò tí a lè ṣàyẹ̀wò, nítorí náà yẹra fún àwọn ìdíje tí a fi òfin ṣàkóso tàbí àwọn ìpinnu iye-tóbi.

Bí Ó Ṣe Ń Ṣiṣẹ́

Gbogbo ipò mẹ́tẹ̀ẹ̀ta — yíyí owó, yíyí kẹ̀kẹ́, àti yíyan àṣàyàn — ń lo API Web Crypto aṣàwákiri tí a kọ́ sínú rẹ̀ (crypto.getRandomValues) láti ṣẹ̀dá àbájáde tí ó ṣẹ́gun, kí ó sì darí àwòrán náà pátápátá lórí ẹgbẹ́-oníbàárà pẹ̀lú àwọn ìyípadà CSS àti requestAnimationFrame. Kò sí sáfà tí ó kàn ní àkókò èyíkéyìí.

  1. 1
    Web Crypto ń yan olubori náà
    Kí àwòrán èyíkéyìí tó bẹ̀rẹ̀, crypto.getRandomValues ń kó Uint32Array kan pẹ̀lú nọ́mbà odidi 32-bit tí a yàn cryptographically. Iṣẹ́ modulo kan ń fi ẹ̀ka rẹ̀ sí iye àwọn àṣàyàn (2 fún orí/ìtẹ̀, N fún kẹ̀kẹ́ tàbí àyàn), nítorí náà àbájáde kọ̀ọ̀kan ní ìṣeéṣe dọ́gba gan-an.
  2. 2
    A ń ṣírò igun ìyí láti bọ́ sórí àbájáde náà
    Fún owó náà, kóòdù náà ń ṣírò ìyí àfikún tí ó kúrú jùlọ (lórí igun tí ó ti kójọpọ̀ lọ́wọ́lọ́wọ́) tí ó parí pẹ̀lú ojú tí ó tọ́ ní òkè — orí ní 0°, ìtẹ̀ ní 180° — kí ó sì fi ìyí pípé 5 kún un kí ó lè dàbí yíyí gidi. Kẹ̀kẹ́ náà ń ṣe kan náà: ó ń rí ìwọ̀n ìyí tí ó mú àyè tí ó ṣẹ́gun wá lábẹ́ ìtọ́ka náà, ó ń fi ìyí pípé 6 kún un, ó sì ń fi ìjì kékeré tí a yàn láìròtẹ́lẹ̀ sílo kí ìtọ́ka náà má bàa dúró àárín gbùngbùn àyè náà nígbà gbogbo.
  3. 3
    Àwọn ìyípadà CSS àti requestAnimationFrame ń darí àwòrán náà
    Owó náà àti kẹ̀kẹ́ náà ń ṣe àwòrán nípasẹ̀ àwọn ìyípadà CSS pẹ̀lú ìlà ìrọ̀rọ̀ cubic-bezier tí a fi sí iye ìyí kan tí a kójọpọ̀ — kò sí JavaScript férémù-kọ̀ọ̀kan tí ó nílò ní kété tí a ti ṣètò igun náà. Àyàn àṣàyàn náà ń lo requestAnimationFrame dípò bẹ́ẹ̀: ní férémù kọ̀ọ̀kan, àyè tí ó ń dàgbà ní quadratic ń pinnu bóyá kí a mú ìtẹ̀síwájú náà lọ, tí ó ń mú ìdínkù bí i ẹ̀rọ slot-machine tí ó ń dúró nígbà gbogbo lórí olubori tí a ti pinnu.
  4. 4
    A ṣí àbájáde náà hàn tí a sì kọ ọ́ sínú ìtàn ìgbà
    setTimeout kan ń dún nígbà tí àwòrán náà bá parí (ìṣẹ́jú-aaya 1.3 fún owó náà, 4.3 fún kẹ̀kẹ́ náà) tí ó sì kọ àbájáde náà sínú ipò. Ipò owó ń pa ìtàn ìgbà tí ó lọ títí dé 24 flips mọ́ pẹ̀lú iye orí/ìtẹ̀. Àwọn oníṣẹ́ tí wọ́n ti tan prefers-reduced-motion ń fo àwòrán náà kọjá pátápátá wọ́n sì rí àbájáde náà lẹ́sẹ̀kẹsẹ̀.

Àwọn Irinṣẹ Tó Jọra

Àwọn Ìbéèrè Tí A Máa Ń Béèrè