From 80183687706ab114042d7a04fcb96a8577591cda Mon Sep 17 00:00:00 2001 From: "Howard.Zuo" Date: Thu, 9 Dec 2021 14:59:29 +0800 Subject: [PATCH 1/5] example of function memory game --- Cargo.toml | 1 + examples/function_memory_game/Cargo.toml | 22 +++ examples/function_memory_game/README.md | 15 ++ examples/function_memory_game/index.html | 15 ++ .../function_memory_game/public/8-ball.png | Bin 0 -> 15941 bytes examples/function_memory_game/public/back.png | Bin 0 -> 24805 bytes .../public/baked-potato.png | Bin 0 -> 18635 bytes .../function_memory_game/public/dinosaur.png | Bin 0 -> 21948 bytes .../function_memory_game/public/favicon.ico | Bin 0 -> 38078 bytes .../function_memory_game/public/kronos.png | Bin 0 -> 15537 bytes .../function_memory_game/public/rocket.png | Bin 0 -> 19788 bytes .../public/skinny-unicorn.png | Bin 0 -> 19791 bytes .../function_memory_game/public/that-guy.png | Bin 0 -> 16754 bytes .../function_memory_game/public/zeppelin.png | Bin 0 -> 20938 bytes .../scss/chess_board.scss | 28 ++++ .../scss/chess_board_card.scss | 61 +++++++ .../scss/game_progress.scss | 48 ++++++ .../scss/game_status_board.scss | 21 +++ examples/function_memory_game/scss/index.scss | 45 ++++++ .../scss/score_board.scss | 46 ++++++ .../scss/score_board_best_score.scss | 46 ++++++ .../function_memory_game/src/components.rs | 7 + .../src/components/chessboard.rs | 38 +++++ .../src/components/chessboard_card.rs | 61 +++++++ .../src/components/game_status_board.rs | 45 ++++++ .../src/components/score_board.rs | 22 +++ .../src/components/score_board_best_score.rs | 16 ++ .../src/components/score_board_logo.rs | 10 ++ .../src/components/score_board_progress.rs | 16 ++ examples/function_memory_game/src/constant.rs | 42 +++++ examples/function_memory_game/src/helper.rs | 21 +++ examples/function_memory_game/src/main.rs | 83 ++++++++++ examples/function_memory_game/src/state.rs | 153 ++++++++++++++++++ 33 files changed, 862 insertions(+) create mode 100644 examples/function_memory_game/Cargo.toml create mode 100644 examples/function_memory_game/README.md create mode 100644 examples/function_memory_game/index.html create mode 100644 examples/function_memory_game/public/8-ball.png create mode 100644 examples/function_memory_game/public/back.png create mode 100644 examples/function_memory_game/public/baked-potato.png create mode 100644 examples/function_memory_game/public/dinosaur.png create mode 100644 examples/function_memory_game/public/favicon.ico create mode 100644 examples/function_memory_game/public/kronos.png create mode 100644 examples/function_memory_game/public/rocket.png create mode 100644 examples/function_memory_game/public/skinny-unicorn.png create mode 100644 examples/function_memory_game/public/that-guy.png create mode 100644 examples/function_memory_game/public/zeppelin.png create mode 100644 examples/function_memory_game/scss/chess_board.scss create mode 100644 examples/function_memory_game/scss/chess_board_card.scss create mode 100644 examples/function_memory_game/scss/game_progress.scss create mode 100644 examples/function_memory_game/scss/game_status_board.scss create mode 100644 examples/function_memory_game/scss/index.scss create mode 100644 examples/function_memory_game/scss/score_board.scss create mode 100644 examples/function_memory_game/scss/score_board_best_score.scss create mode 100644 examples/function_memory_game/src/components.rs create mode 100644 examples/function_memory_game/src/components/chessboard.rs create mode 100644 examples/function_memory_game/src/components/chessboard_card.rs create mode 100644 examples/function_memory_game/src/components/game_status_board.rs create mode 100644 examples/function_memory_game/src/components/score_board.rs create mode 100644 examples/function_memory_game/src/components/score_board_best_score.rs create mode 100644 examples/function_memory_game/src/components/score_board_logo.rs create mode 100644 examples/function_memory_game/src/components/score_board_progress.rs create mode 100644 examples/function_memory_game/src/constant.rs create mode 100644 examples/function_memory_game/src/helper.rs create mode 100644 examples/function_memory_game/src/main.rs create mode 100644 examples/function_memory_game/src/state.rs diff --git a/Cargo.toml b/Cargo.toml index 454e455c9a5..182112c5821 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ members = [ "examples/dyn_create_destroy_apps", "examples/file_upload", "examples/function_todomvc", + "examples/function_memory_game", "examples/futures", "examples/game_of_life", "examples/inner_html", diff --git a/examples/function_memory_game/Cargo.toml b/examples/function_memory_game/Cargo.toml new file mode 100644 index 00000000000..cbcc4c83714 --- /dev/null +++ b/examples/function_memory_game/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "function_memory_game" +version = "0.1.0" +authors = ["Howard.Zuo "] +edition = "2018" +license = "MIT OR Apache-2.0" + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +strum = "0.23" +strum_macros = "0.23" +gloo = "0.4" +nanoid = "0.4" +rand = "0.8" +getrandom = { version = "0.2", features = ["js"] } +yew = { path = "../../packages/yew" } + +[dependencies.web-sys] +version = "0.3" +features = [ + "HtmlInputElement", +] diff --git a/examples/function_memory_game/README.md b/examples/function_memory_game/README.md new file mode 100644 index 00000000000..92436cfb319 --- /dev/null +++ b/examples/function_memory_game/README.md @@ -0,0 +1,15 @@ +# rust-memory-game + + +A port version of [react-memory-game](https://github.com/leftstick/react-memory-game). You are able to try it at [here](https://img.shields.io/website?label=demo&url=https%3A%2F%2Fexamples.yew.rs%2Ffunction_memory_game)](https://examples.yew.rs/function_memory_game) + +## Concepts + +- Uses [`function_components`](https://yew.rs/docs/next/concepts/function-components) +- Uses [`gloo_storage`](https://gloo-rs.web.app/docs/storage) to persist the state + + + +## LICENSE + +[MIT License](https://raw.githubusercontent.com/yewstack/yew/examples/function_memory_game/master/LICENSE) diff --git a/examples/function_memory_game/index.html b/examples/function_memory_game/index.html new file mode 100644 index 00000000000..2c0ff1336b2 --- /dev/null +++ b/examples/function_memory_game/index.html @@ -0,0 +1,15 @@ + + + + + + + Yew • Function MemoryGame + + + + + + + + diff --git a/examples/function_memory_game/public/8-ball.png b/examples/function_memory_game/public/8-ball.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0edfd15968033dd647f5e7fe0e206e5aa4e28a GIT binary patch literal 15941 zcmV-LKDxn)P)4Tx0C)joU|=$Eba8TJ5@2A+%_}Jia(7aQh>TKTzreu3z|A1cV9a2hm|R@o z7!csY00epYd8r^86@0tKzz7n#tP3&=RgNH!E4iSk1gPo{5F4eW7AG?>Fd6{a+2th# zKyk)7K(@ z%yR>-B6UN?h(d-kMi&`VD8dz8Lm`x*T#^!Lo^khoeb;?|yXWk)_j%7b@7d?<^WMGQ z&wKXX&$yoTtYH-Ta&`Akf-9VnJ*XzKiIUi4vD1eg{D@R29l8-1Lm`Yemd%a8H?1nZb~|@4kDu=%S0l z0}nh97F=+_@Y>hDHaFjC)24<0{`bGmwC{S?yTX=RZt34IdC5zhNgsRcF^@NS^5j&q z!N@Oq(Tkkm|M>j5Fp09YtE5f3SE?S7+SRUY^o@uPG z_&1Fy@4owPXGlD+y6UPh>&98UhV8c7E^NNpX5slJC7*qkEXv;$8n3?k>Vbyy&Ud~u{Qd8L zcP9GvuYc|FrcRw2X3d(1FU5^2j6EWIFy{W|?KWN(WqTyY057{NC_}H+W#XpzpZzSXwbokRW3^KzXn|1p)vtcl zls^tMwx9p}=gx48EV4-W=}&)}hI`9f-r^0BdcO76Tf?^7ZX4EEV-0WIxY0Pkk2Drq zXd!>6(W@7w9^d!A_XQdp<%t~iCP{hEJ@46*kX(D?|=W>({2{#h z)vxxJ|HnW6(JLE?i_}A+lb<97?l1$A7>T;V3M;sDrQtsK;De6)(n~Mx={qu`KUBnB zcij~(zW8EqJTQoWw5jNaO(N5nNxL0b;ms?AXP8Jl2Hr;enFXsgpT;NPY z!$GQvnZcdBzy%QPuf6u#w2qcsa>?+T*SscB=TATLbXfcqiw9_e`;&ioGR%2sPI&8E z-x_Ye{q}ZH^e`~$Ew|hf=tYV9<~P6D=?3lSp}+}fB|TH7^pK-JNS+xpW`r}&IKy42 z1QI79B^rn49e4a;C>R6+6#+~J(Fj94S{^Npu7=8|H7Xy738Cpi2@ivjK3y?!s0_l0 z=sfAd8A7OnaDyQHlLm|`Q1|w{=RMEUmAjsdt-(j}ai@%8CWZ|7$3VU`xF?@{(i;?I zqCDV%ACev%DYwc=RV`qCqOr<@KMjR%7>u$LW~rr?@;qQ{8X4sk9!e9OhzH1x-h(m& z-xCp6B|wSg(+i3B3jx4-@EaMDR9`3yT-L2)MW zyV8h}jQx2RB3buV-`&K?rk7U+;hE=0eEIXPFtHo%6CG6UPRogehk=o@bLPwm*Ijp= zuiz-1nKNgG&1|011V-Q#jKlriCJ@PvJMM_sNKQHBltk`n!1`srr2xDje$ac~Gmk(f zITM@6Cj0EOkMkD%W#dl|sx5QU3cw5E6TRm>MIQJ@ zyu+As-F4RuCh&abP8e2rve3Yku_xmMK(n{luYRv7&@KhUu!I+bvifrDvB!E6U;p~o z0~2e)nY47bLZ)P9251{m-0qI`PfdX?C;;OLR$Fbgut48Q$K48bV~vCzH9&hY*A}70>PNel#-Ze0=3$i=@zLv-uz7g2{^WP zKk|`}1SUJ$qc3DiBC%z~RuJ1vHPjU7B?ZKks76kjG|7`j#{j@DS5o4M1`hkmC_ey7 z$Uo|zngTtdz?$#9Z{BwawR3)%OnRyRdoM=n4^1*Se@SdO9AviSsFq)m|Y$qmnrdp2~mcv zB_!0Sp)3lp$^)OBd+xce_)I>zObH`0reyXFC)ZF@pezc+LQn6xObG&PHKMjAwRJ@( z3%NSongXIgAydMHI`g5x^|PixKPXVhl>NxO&ZDLPa~Ji(noPH3N(HV-S5u%Y3czD% zqA~N#57{X~cUcc#EXu2Ywcu#Jq!wl6pO%Vkoa@a*A(qjwp;QF#c*i@!a?35}aZpsntllxl z98(nB-O+~GeDlr2+u#0nXKc>Yql^IK0x>@BFrWOulo$#dlPM=UJ+hLK!%HXy#EiJ} z&O5uQJZvj*fDYraNJ9RxK!%}L8m<~J<07Oa#KjE@Wt-$XG|o%Cjy8WDI4Qv7zru2)mB@1 z@jn0g&xcJm*~A%%y?+P=6Vio`#U!X-#lZJQ8*SuH#AP6Fc68iS2~rt`z3{>d{r@wc z`HWW#<9IAcC@gXspb^kVOCi zI{_v@YW>8cn`Tu5bJhS8rH_C7#XB$5C=lVz<1Uy_Ah$RV`Qbn zIVk=a8hq+gpYrq1;D$L9;N+7}c8k5#gVIslqWp%@oyBuZx1>VQ3Y&sC`a9;?tZ<19 z+*7|{d@<%q(Kf5PiCHH0a#6MoHrODs^Tvr0BMrk#9H+sfgb(t{=4a=hlS2+UBpDeQ zaa=$A;SVQvJ4c#3b(D>hdJfTx%3wP=iP?Qm%&vN3D?VNVT3`xdN?ZPLf*gGC!KvS{ zy{IhUec5G~B{oC$GT99liJ6~EY?hr?t_U=!GLnCcgGuznmYEVeO`0~M^Ups&F?;PP zirF}+$B?|JymncDmvR67_fM<~ckFYS(z*~2xW^uQG!SbT${SY}tgRo8dfab-}~P8CU)X4pzYAxx4WF#H-g?PSJMEO%VMRx| zVN9v<3XA3dvmv>;L&blrL@B;pNOk=2$NS`EmtA)82?gtlj4cTVP`0X-Pxx4+Ij*b< zaEHyqW?vkm_wRo9yZveyt}kICL|w&ks#vC0Y{O)b&4`B8jkq<5doeF<_tYdG``E`~ z@1b}{5?*=bm8oq6vVx@t(MsSY~>}Tx+x^PnUwR^cIKI9rV^3zs7z@gC%{WwCfn9be)-E^`tqG! ztLHSZ3Qla>w9+M28R*Ga4gzOM%3OWQ2Cl8>hf&-mq%o%N%5WW=%~bu;QY5_z18qP?s9l$C#UIoTcJs_U9~jzg$gvo z(ShXN>>B1#KvEM;q$7?v!W}QU& zR)%dGG-XKnR{_^S;sA|A3wDDzrh(QG3dTUyq$Nx_*_5YaC}c`;Z5()z@4|I$A5d za+#9ZEC-rU$QU$;>1Zg-C;?6pN@+v|88n_%%OAQxJ0zpD>DlE%u>(*;_m2VoaQ=xS zAt=r009`Iqax`?=WtaV*Ch&le7DKWP#abjM4Nb?>mw`a3Duf*ndD_l)g%wsvwb`$} z`f86?mBtLOq4C5}18pH7mnm67z&ZwM>Q$(CB%|p?`kt?8l%&fW{U$85Xy@N4TY(?w z!`PC=Y1S?Q)^_PKs{$7|$YVK1~|IN;R}5HpDZ$rCpk2!nFD)3WJuIEt&K7W|-}m_hjBuXu7R z0R2X(QN2+LTKt{Y%y0xe}KH(TL(W$4yT zd5Z=pHNcDyKKNj;vp%lrPFN;{XoKr~ILj_bC1{7i0vMKZNR1A>hzBSS|LDfNTw+oS9|PKG)K)TnuHkd!Krrs#v7eZvqi0+uQ!O_~J0r7|Sx zLjzL<^Sdb@ee}`Pm;inPbTW)3DXDVofhH7ns1CFwy^{o4{(VjAO#b@!emI0%ncd5p(T>0fch6^;kz z`sFsBbi0YGd^y4aO>C#mld*BSw|M_hAP$XfvBegC)`jyEfc*TU#2@8j!-vGWY)6*k zzJUD7$R0ufoDUb%@Z{`u4B*h}KMotebB^1LUHO4FyFxgz@to&ls~gEDKl#Z70|bKc zma|oS`GJoq0Xq&lOD;d*QT9{$*-*&wfc5}&(Xb?B72#tH>?m?6I0O7a0BUJkCZL-u z6O0Z%PGu%7O>K4-7|Swrz@LAB?y=Rs@KhW<>GGNMSPv9F`q7WN?I5#!;oUn{-Y^|w z1`>R4T3xZy>h#$vK7QZ?KDyGF#dKqkfsHM-i=%Toj=v$<0B|rTvnf9skFEl+C4pIT8k=Rh*-_ z?z-z-lLtepoUy?I8&Vs*vgya^jrSefnr2VQld-wOc$4coKIP>4?%A_vr-~UAJO#B* z4TOF`gAZ3R{#`r|wD*>AaBb^w98nR7lYYyBj3+hkUqWP)83?u|&&VbblGb2;D8%3U^%~QKEC{Hk3j~DXu zaO&0#T$zQVYsqJ|)b^Ee9f0Ln0-9U|4{eH?vZW zYs zaG;_G*wU1*70a(E?s(iMPoC`28CR;|jVHZM<5D)!ma+p4OF~L84k))WpX7(=zWL^x zJsZy9aLNrL3E^JlFUDYh-_{Akc6NKJ7U+xeQXCXjxP}DSV8adEA_acgfBca^8V0Fb z!o3|pQ=DM|4S-FIGJ%GK!K}+KzuYA}d8xc*=Bu=!%@eEP?AAsRN znLxKq6x~cxxv^5v8HAo|K&B?iu#rN9oZhSziSt7hIjpwYY7H9UtrAitGX6xW032eo z-4H+Yq=v*~4P8YVm#w+_ldy`p0Cto;U-&}bCs zcBU%;hFA*L+Wp-$Hj)p0=tGHFG)w-{hpj$Tt&-YEU^y+s-n3vWnAA9tx{1N4pZw@#G2_K#TtEq}5IskGcer(c>qXXpzIR>TClerm4@-LXI}CTWn@j9 zArIR7K*QoW#DMTD{?eUFOQ$Tnl%JMaq+3^3erj||pK=NZxsCM{WAcQUci(-tk1gXn z9x;!?u&3J{l1X+RiB$+wh;ejS_XM)|yJHW2)CkH-zZHt;QDO=Z3vn9XH%LlF2DwgV zrHa?>6X^(uINhexZafX>kwD#41aYkU@wn^;!Q8-_Ypv;LaCm2HksT_HHF0Yfkly^W zyTSNW^l3N#Fon}N7Nuj#3|$)}<)8}FFJ_cfl-4y9EQp|Pvfc8N4sp;o#qt}*qcFR7 zzySyNJ~#t*T0T2QBO@d2Cfg7W+?atgESSiKyr4h8jlKYM&6Si8ol}k7ND)uD;y+?S z*68%!F3MtTX7DIYz>u7}WNVPI8S9Hu);Rm@v;E9BbR=FUKzJlaIwS2Q@(_g;U2Kw= z8syJqN-9cgYeQ7Nj#1SbnObWn2`~=QHl>}obZMq^I6})(5$l*XllEjq{C4ty{@N?= zBwjmd=Y{D<9(noVCc#I8rp(@R#eo%o@g!Y_*016)WxOljGSY69rpnh%{v4qIP{@T= zPE2Dao}|ZqGN4IZCwVZ=lDXx6FbvE9#5l(9?pe~0%BLsUG)PK$P+2Sw(0%j+#2m`M z>^zl^Dns9$PBc z7}da(A}9e-=f_F~W6QEY`AKC-Oj1^UN>}+jY>KTk2nf$ z?N;C-()jV;BjMfr$H z=t5_ky?H>ILPc?U;m**4@hgo-Lylgg+i4mSOvEc>O0|}_ukSRYcEe*03{bb)ZoE#z z!89-jjX=vbTsQ!z<+e(bFwliAoApDwZ!QF|J^OIcMHl(CASf!IfByN-n5IAAR@d51 zpK#3TxyJ7B!w(M|Z@h6Ubb8`PnP5yNYwggWCz(cxa0H?WjL5mb*<%ar2AT+9oSYkO zJdVa79vx){^0IY5|CalB(k_ata@d&A^CVx4X#w&piko$}@laxB_0n`qdZzET#hBm^ zj8z`_qtIdFNKZq?#X7|)i(}EZ^5l+mXdqiYaxaS4Yj?X7$@8~igeOh@V@k@hrI!&T zUBK4(tjrcG$xpY+;x~Y9BwaCnMih4&>&GbQx&ho%!(KNRP8kD*-FM&J*C&yf(j6G9 zJfsDH1LHfcu$w%3c1HM)g-^Hs8X{` zh8!zUIdB_GLXtMPu8WDdF{8~e$J54TR17rUO$ySQksbsh831rVhPVC zi+iv0&ZY-0S!iNPA%zAF#FB;8Y{XuFYnFe{J@0C~O-w0-A)+0y@|Mj+hYBkLRKX1HF@r}}hPJh=R+N!v zQJR!p0CR#5yFchm+APuk(UDwz_0@e+pbAtx8rH+MpUwrC=m*;2G9{NjxfU9!#KJq_ zVFondMR%o{MkwJ$dB`9GJp*pSp@b|8lVtY`;65S%Jeru&ee8!-et^MmtM1AJjq^vu zz_1fcNjC>m%6**4w;f%TMFjGOP^@JlHR;BYph(LsFdjom1H5BkJW6-XAu?u{ysxpw z8coBKewI^tfv+wPmF4Cb_p;wbYuR&(4K@@qrIuzGd{Z%6TrCq>O(?LR!#D@&EFzYf zZ(iDx97r=72>+a!VODN7y8Uc6T@RNPAW8SwV~@bLB9d>-HP>{!u?a+XuP#dYP$mKS zsDk9yk0(P3Rvj2Gb82-^pdL7;3B+pvlZyV$oidzfHe^e`Pe*yO)nu9~o+oCX0r~mI z0Dj0{IM|RTu}O-bPv&gA?LZ~a$y$42=XDbNam#}^ojm`3yV=Cb>1-1n&)S4gzfth~ zFu)IwvDFMfr>1pENeC=eFe3%ZZpliYg=d*XkxH52={OAP2i!yxX5Vz_j58V5FcySP zbl>zO_-lL!-uf2}Rn9?`MYKd4>*%A84x4YjdAbxdDBLu`jcL-vl(DCAZTwm4yYkY2 z7t<)XX^EuN%-cv@l_o|jdXf}jYKI2U*X12Wd@upu^d^LKMYB>rFXg4K~ zG0MWDopf`Vl8CIev49NXYcSa5(AD54qLz)vL`)y1qsQT#I=Y|0@y8z@ zCXKF*YFTcOWse(16H^K?sqn*;njwjC6sFft5pTEMcJsAB(r3|{{n@H?`r*ay|Z`$>adz_gjs8^BYVe~|`dsBtUO%dV^ zObHVJRJ^Vak;E)Ype%P0l=PW}Gsfih2(*ZRel`-%aL9gCmux4ZOhT{2P)OZ*m5bBB zltPrV$GRy%-FM6+3Rm`%JYha|P3+X5XJ;m%{rIXxzldKpF2j^QG*NwNp`5*W>N57L zYMFAGlGcPCC5GmuB%wm~yCCXju-JjpEnU%`d+r&yO#+4mubMIQYXwDO^g&s2(H-Xb zAqVT4t-oBR1VvT&V9}kIJ4nNvFe4UnVN8}0bj^tvlW^GrRssKh;z0SK2SyFpjRQ2v zkzYUYX_c2W(Xv`pg-l8J$o++}MsTYP%JdV{u}{mrG|~gaiUiuzYCwcj*fQ~{YT9Bt z8Y@;d0O-ZaMU{X$0;CSf@eqcLDOf>Lu*&s!&OdWqiP`f`Oq1H(z)OsS-817V zPgan`)-e-XHgc6RJ9knUeEUfvsh-)j&naE(*s!bAfk#Zce&Usv*W9`D)Z{qhPyLye zRT8Tz(%q#X#7!$XF-6tHv`9L-XC_Uk#1|1C-9@u(kyZe>a`%r(hQy9czM+EHSbPj;7QLw;2gZfvXDOri$S-9w!XB)8?q7j`Aa;OorG}V<|*u$_Wotxm>O2 zoyDKC{45a-vFZ$2SXL`&3hD~z>*>BtnW&ci%{x z6jT^y-;B+6*=3j1uj((t9Xzq(X4|Abwt_MF$GR7my|8YU1>#n5{0UC{3wX!oC6hUo z%Z~phrU9fNL)X~aW=c-#!IXA2uopJ2@U-+5eTi{pnTQ);ZSgp*L{lJ6F24BU#1vi| zDqO`OzW(Lb&u3oVtR^sVv9-sv95!6>vSDad5SLwURe#D9U@R$f$CMbDXTs2rvpLq{ zdkPwBk|-vV`N#YW7AdfsgQk&PA?$gw_zvKQ89&Z-$GZzw$?0Um1D5n-jFV1E;_)sj zdyE?|xZnaeM1?X6x{xCyBd%N_v)sfdUL3b1RC}JRN&lua8<*hkDrj!Thpvs{< z0J@nNH((DKTjy-Saml-^s|i)MFww{+42J2Y^dWzxr*A!#pT6U#;$*|b?)dSK8;USk zui)r{8In!!EF?{ihM?&Kj%aGfX~cOB)4R+M#yB@Hr3i;s4xmEE5r*kqt*6Jse~q^{nfr6e!2V!4wP z$}cD|W4lSZqqt9+w2a%Wq=BG%hPgyF6w-^+Ap9_bcrC`gfhko`tc3v+q0lNUWl4-azf!4Lj<@ft;ZgF%uif$NfElI{7aG=e%BU44lhm|!q$pjhF^?Zf=A<4y4o63ktVl;BD0#$rlP?o3 zh88H{s(U7X)kCm7j5rQ{69wY(s!R)5!JPwnP;hKfVt<=!+-&K@)r;h(NE7)vN)9h# zmJwhon2qk3a4;v##PN~%+%l0-`NN&C4Cb?G713~hptZ`#qz;QHSf|65CqosdYnC_= zl5^G!tf_?g4YJGwkp#4A2$zK{L*fs^VvSg!iqLobR37A=%|8w|QQk!h?&9QtB4!rj zS$I?T4N++Qm{#tGxt6LEI?E(tAmNR_h%7ff6_zmBbQFeXE5A70M0=;<0!-+np8zeI zm{J8t>wJEclq!GGGmnAt+=yS~UX=Fy>MrI~`E!p$&_&VTGrp{$ra;*gP>-T~nwXLR z^!1FB7^K%wQ=r!r5MRkOP_{>D;yMQNTy!Z58NEiRPOqi_6kzF0SG!~>(!`YPb}-3d z7G6V5fifsSZ;Z5@JbF`aHjgHzWE^?@_1F7$S~hU~T~nYJ6wnyb?nKW`u8AoL1!HFW z`P|sGV@-i^P@ss%a+#7TI%7(4^f>aZqt+BCqyXbeAj@Y>ObPdzLW1x4vWN~8akP8Z zKQ#rqq=0sDu;`)XM;~uy(-YS=n9;}vs=sRrjDrFaa*QcC6~GZ;Hfsb;l2U6(GWV;1 z^|PixuP7jKbYa^os&<&zv$PnKP;3W-6d)3&=g|pPB+aq5#5>^~$(sZeU8dRo!>3;M*gr z*U7Y`06b>~a06CZ1kRKaot)akwjtUZa#O(iSyP}43UDqS&;*`C zfHl+fgX=t|I`%d zAqD2xwa)+-CkUJ=k%$a5bvZev@ql_fDKgd1vM8VlPTVV}Oi8BLbOG+a|Niv)yEw3W zR_q6{503oneUK=YNv|@~9u&_&2k+k%X75q^Jfjb59 z!i>JluU)hW-|l~_G)V(ISmtQ=PRmYkCGAeax59PMekzBCjOxB|Psf!0VU^0AGyo=; z0Y&zYiu`~R6~s9r#=ls=ojrTDUr^5y1Ag(qxfR+g{*11v7g>W`&(|gC2*0vUHvy97*ll7GNi_qUT!P2gAvG|+;_O# za?2%F$%(GRkl$#~fjxu=mxXf2j};&>hD;7P;DBVm{q{@DdY8M|j#P5@-FLTzCutsc z+;JX{^j@~uV(B~I`scnH^5HH>V^U9B_{13J*-_8 z@BVq|$&EXJz~!>bF7vS2G#fG)qL1m*r+c}uoD5LjCaY_3FbkR7PN06?h*2p(z3!A# zPH~*fJaO1?!wr25hrMuae89Rc>t9D6d1QKv0_CzYr;eDoQ7jdlz$Gp-G2M+?q^co%YhjhKyl-D-0>1jNFx*Zjv`V?cjIuILu^SGreR#jQBEY}hFsTi5uD|~Jo)!}pfV^xd;L;a{ zJmA0s!zP<-;(pL72GY|hP`e$>y^yYqS@9E|io?z|`G51E^1A7${t+v`~e!U2YFtM>Qq1z&-g6)s_^kY3$;$TC4+O%md2#6S`$+yzg>=f(D4U+-_4Kb*EdQy}ori3Ug zJ#Z_6j@eeF%&IVMQ9u%LjWU3gqx)ldh}#P+9RW6^p;)*L$p`kF@CutR>mkm3pZ{ermmFNyWxnoKyA40{IHYnut@})pXahQwe zg%@5JY*y-%6UKC0W5-x72C3VlY{Ddkf5xVaBS}vTuVWx|lT3E#HRw7SXC7!>H~-si zyKO+{l<_R_j0NJX{N3&%@~&B9!5wzkAw2&01#mD1^e0O~%PzZYVuR_#RMZ>%=7p@r zua-n?e3hJj`su!`Kt1qpm(M50Opd6+*%d5_tsf?K>1J~2rI#kxTysrfLAdGGCVGi= zt$s~2X|X(Z!wokiJMX-6nisd>if(#Z14;db56?-HCcC>y&V(f`09xZ`D+&IsH2fp_ zQ5nuT=Nu1jYkQGz^Q$p!Vhy0#qarRU4>t)@ewNy7Or2s!YjO}lY%-A89(d)MQux|r z#|uW`Y?6}Lu*1LY=2sQ1?WfYTv7@KKo#BAodAFfWVy!!|Ns)(%*F$Y~p6tE%-tNBr z_S+|CpM7?6?z!iBLpbJ`W8B@gaT6L6Ag0`6i!Bn9+U^$Tv$+jLWvw-eqgmzF1wRJz|UbcTUE|Z_a4*Ds4*zz+vCN>LqlxTt4GGxmU zNdzdof3)~fIHVfs@{d%y_S$PxS`ghBC9x}zee7y8@iawi&>qK@f)ct`fHddMowv<6 z`eL-g@`WWv0T*)?*zndIw1!PtblC3dF+- zxmV>Wd?hKVD|$TudNoN(SzSZ7lC?SuSJ{@v^~3;@LU(er?Fb;1q!y(X=^kzT5Rd!5 z+1-&;;vR0+Igx-|zs!;pOHjH96sczf_0&=BV1Zi)@k~~^`|@vEKG;|@Shwp-QYclE zCih?>EhrBg0MHz1j2p{O{Ig2Hj2*LiNKC@U(wGd02N0I4nTG|YOj+G=PVu#ZG=LNe z7^DM|9u0v8{2`o}bb#kZ8*P+I5Gz=6#1TiNvrmO>7iEQ?Idi5E51GW2pTCTT0EyK7lG-+Jqu}ZVInwk-Pk> z@>E&$6kZKXNn!GK92B^UPYQ&_Jl!@6+S-M}eLR(;of(rl&fqLu^WP4%${Qw+yIpXM z!)I|G>$@F%suo7OH#(pwr3~TOz?5?23897oRH@8{HPZ&~Y-M&+7HA*>X6ex?{Z@WT zCk_+8cZ26J#i9I^7X=hq_{-{8G%zI*#I=%`N~FpKSEcqESEWnYwkuow)Pi4}t?=jE){DV{EOzs{T@@RA8xI zp@4t_0Rfo+)lgHQ7ZlKNNN1QhTg9ZWp_j7{2bK{4mL}{NfiGLwtD3flYHa%_&e*~3P-{MJe5X2>qGgICtHb!AAUq)J6X)*a0I;s71!0sSG-+bHEl(QZM$6%R3VD$R zOFAexa5e~K3l4)BAw9m*utGXId=rl}c;(ER4u0Ef54sKjGN4+EgR!yfx&+uMclV}LPD&oFix*E^>& z(P}15c3dD3<$~#XXJ`WMXsIl{^wNG5gqfjjT?Vvnv_uvYUKJ_E20^_m9AV;cd4*6| z@L-*lhRr)`c+d!(&_7`Bo3z;ZVNaZY8Y^1%G~8@H!iBWhSb*k~0|O4M3F>fL9!|Y> z<5VeH{+C>GiSO|%ecNJm{s4E;L4LVRiDx!2>QpEqn8u8sd&YW19&iW>CPmo*DFk7Z zsnXPwqXtM_#uljfGvhaf*RbfKi#ib%Pedj^xhV~vG2qWX`CfVDmA>>qCB%3rJm+1s z^d+}JJvmc^G6t$@NO*c1fbCB31UTPLLt#gVMs54--jHBkR!XQN0X+nY9-QukF-g}n zyj>v#!2vz!Wnfb30adw4lO}oen6{!f9-_7A>w)cubMTxLB|Q$fQGYZt8rG~?vjSE_ z00aQ}Y`5KZVePfoZs_Ga!01mQQ!0=UQxYdG z7-0m2qXHl*?;J%%YV`^rN{m~aE;v2((68*o;!`epkT_H#jSVIyoC4fv_>a3@|lD8hQmVIKARnzy%LXppo{{o)QhSamQpzMaWA)txaLNea30?-YY0- z3`ObFfW#Pan3xH(_$iNhWgyl(hNa7-!2!?-rV}H=s6b=fdFpMriyp+I>n5IzEg+G= zld(EXOCF?6!$!fExP&*|OZTVCMmjNsfgzA$D1=Z>!omD>v8JW&@5-NN9uSAT=`j%^ zjQ=?+j}i>{FivCxhReYSN8anLx1Q?_PzFHd%S#`(wwY21kf1=7rSEQ^MU~TSdWsk0 zDz{co;n6BgCw|Jm*XeeGL%U&V0PO%}p;5r>JSii?35EeMA-w{U5XQuh@G5`1^yru= z+d+Jo!-#O>ErTjT>8OJIIPU-2wY*Dvf=4@L%HrEggp_}~dDKkVOX|-@X^GKPKWnCpsZqaIf&%{!kz+gipNXHX00000NkvXXu0mjf#g~ST literal 0 HcmV?d00001 diff --git a/examples/function_memory_game/public/back.png b/examples/function_memory_game/public/back.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee6dff875534514b6c7d5dc8900fd4e152534bf GIT binary patch literal 24805 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 Tb&<(600000NkvXXu0mjf9ZCZ% literal 0 HcmV?d00001 diff --git a/examples/function_memory_game/public/favicon.ico b/examples/function_memory_game/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..16eb2a0ac5b0a8c27b3a2278528312ef7f52452a GIT binary patch literal 38078 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 G&Gi3Ot%@%I literal 0 HcmV?d00001 diff --git a/examples/function_memory_game/public/kronos.png b/examples/function_memory_game/public/kronos.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec6e74d1061cae997755b0ea6b88ef107c55caa GIT binary patch literal 15537 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 literal 0 HcmV?d00001 diff --git a/examples/function_memory_game/public/rocket.png b/examples/function_memory_game/public/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..b20e848b3c23b3c012d0af08aaea7abbdb057ab2 GIT binary patch literal 19788 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 X&GawDur&og00000NkvXXu0mjfk^BTs literal 0 HcmV?d00001 diff --git a/examples/function_memory_game/public/that-guy.png b/examples/function_memory_game/public/that-guy.png new file mode 100644 index 0000000000000000000000000000000000000000..b8336f2d33268908f87811723eb79671b90822c0 GIT binary patch literal 16754 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 logo + +@media screen and (max-width: 450px) { + .score-board .logo { + width: 150px; + } +} + +@media screen and (max-width: 380px) { + .score-board .logo { + width: 140px; + } +} + +@media screen and (max-width: 360px) { + .score-board { + .logo { + width: 110px; + } + a { + font-size: 18px; + } + } +} diff --git a/examples/function_memory_game/scss/score_board_best_score.scss b/examples/function_memory_game/scss/score_board_best_score.scss new file mode 100644 index 00000000000..108305f462d --- /dev/null +++ b/examples/function_memory_game/scss/score_board_best_score.scss @@ -0,0 +1,46 @@ +.best-score { + width: 120px; + height: 100px; + padding: 10px; + background-color: #bbada0; + border-radius: 5px; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + color: #eae0d1; + span { + font-size: 19px; + font-weight: bold; + display: block; + width: 100%; + text-align: center; + } + + h2 { + color: #fff; + } +} + +@media screen and (max-width: 450px) { + .best-score { + width: 105px; + span { + font-size: 17px; + } + } +} +@media screen and (max-width: 380px) { + .best-score { + width: 95px; + } +} + +@media screen and (max-width: 360px) { + .best-score { + width: 90px; + span { + font-size: 15px; + } + } +} diff --git a/examples/function_memory_game/src/components.rs b/examples/function_memory_game/src/components.rs new file mode 100644 index 00000000000..4371776b5ec --- /dev/null +++ b/examples/function_memory_game/src/components.rs @@ -0,0 +1,7 @@ +pub mod chessboard; +pub mod chessboard_card; +pub mod game_status_board; +pub mod score_board; +pub mod score_board_best_score; +pub mod score_board_logo; +pub mod score_board_progress; diff --git a/examples/function_memory_game/src/components/chessboard.rs b/examples/function_memory_game/src/components/chessboard.rs new file mode 100644 index 00000000000..e8b29555755 --- /dev/null +++ b/examples/function_memory_game/src/components/chessboard.rs @@ -0,0 +1,38 @@ +use yew::prelude::*; +use yew::{function_component, html, Properties}; + +use crate::components::chessboard_card::ChessboardCard; +use crate::state::{Card, RawCard}; + +#[derive(Properties, Clone)] +pub struct Props { + pub cards: Vec, + pub on_flip: Callback, +} + +impl PartialEq for Props { + fn eq(&self, other: &Props) -> bool { + let s_cards = &self.cards; + let o_cards = &other.cards; + let s_cards_len = s_cards.len(); + let o_cards_len = o_cards.len(); + + match s_cards_len == o_cards_len { + false => false, + true => s_cards.iter().all(|c| o_cards.contains(c)), + } + } +} + +#[function_component(Chessboard)] +pub fn chessboard(props: &Props) -> Html { + html! { +
+ { for props.cards.iter().map(|card| + html! { + + } + ) } +
+ } +} diff --git a/examples/function_memory_game/src/components/chessboard_card.rs b/examples/function_memory_game/src/components/chessboard_card.rs new file mode 100644 index 00000000000..d4dce8f8fe1 --- /dev/null +++ b/examples/function_memory_game/src/components/chessboard_card.rs @@ -0,0 +1,61 @@ +use web_sys::MouseEvent; +use yew::prelude::*; +use yew::{function_component, html, Properties}; + +use crate::constant::CardName; +use crate::state::{Card, RawCard}; + +#[derive(Properties, Clone)] +pub struct Props { + pub card: Card, + pub on_flip: Callback, +} + +impl PartialEq for Props { + fn eq(&self, other: &Props) -> bool { + self.card.eq(&other.card) + } +} + +#[function_component(ChessboardCard)] +pub fn chessboard_card(props: &Props) -> Html { + let Card { flipped, name, id } = props.card.clone(); + + let get_link_by_cardname = { + match name { + CardName::EightBall => "public/8-ball.png", + CardName::Kronos => "public/kronos.png", + CardName::BakedPotato => "public/baked-potato.png", + CardName::Dinosaur => "public/dinosaur.png", + CardName::Rocket => "public/rocket.png", + CardName::SkinnyUnicorn => "public/skinny-unicorn.png", + CardName::ThatGuy => "public/that-guy.png", + CardName::Zeppelin => "public/zeppelin.png", + } + .to_string() + }; + + let onclick = { + let on_flip = props.on_flip.clone(); + + move |e: MouseEvent| { + e.stop_propagation(); + + (!flipped).then(|| { + on_flip.emit(RawCard { + id: id.clone(), + name, + }) + }); + } + }; + + html! { +
+
+ + +
+
+ } +} diff --git a/examples/function_memory_game/src/components/game_status_board.rs b/examples/function_memory_game/src/components/game_status_board.rs new file mode 100644 index 00000000000..aec8e432ba6 --- /dev/null +++ b/examples/function_memory_game/src/components/game_status_board.rs @@ -0,0 +1,45 @@ +use crate::constant::Status; +use yew::prelude::*; +use yew::{function_component, html, Properties}; + +#[derive(Properties, Clone)] +pub struct Props { + pub status: Status, + pub sec_past: u32, + pub on_reset: Callback<()>, +} + +impl PartialEq for Props { + fn eq(&self, other: &Props) -> bool { + self.status == other.status && self.sec_past == other.sec_past + } +} + +#[function_component(GameStatusBoard)] +pub fn game_status_board(props: &Props) -> Html { + let get_content = { + let onclick = props.on_reset.reform(move |e: MouseEvent| { + e.stop_propagation(); + e.prevent_default(); + }); + + match props.status { + Status::Ready => html! { + {"Ready"} + }, + Status::Playing => html! { + {"Playing"} + }, + Status::Passed => html! { +
{"Play again"} + }, + } + }; + + html! { +
+ {get_content} + { props.sec_past}{" s"} +
+ } +} diff --git a/examples/function_memory_game/src/components/score_board.rs b/examples/function_memory_game/src/components/score_board.rs new file mode 100644 index 00000000000..3b5ae97b272 --- /dev/null +++ b/examples/function_memory_game/src/components/score_board.rs @@ -0,0 +1,22 @@ +use yew::{function_component, html, Properties}; + +use crate::components::{ + score_board_best_score::BestScore, score_board_logo::Logo, score_board_progress::GameProgress, +}; + +#[derive(PartialEq, Properties, Clone)] +pub struct Props { + pub unresolved_card_pairs: u8, + pub best_score: u32, +} + +#[function_component(ScoreBoard)] +pub fn score_board(props: &Props) -> Html { + html! { +
+ + + +
+ } +} diff --git a/examples/function_memory_game/src/components/score_board_best_score.rs b/examples/function_memory_game/src/components/score_board_best_score.rs new file mode 100644 index 00000000000..dd9e3af0482 --- /dev/null +++ b/examples/function_memory_game/src/components/score_board_best_score.rs @@ -0,0 +1,16 @@ +use yew::{function_component, html, Properties}; + +#[derive(PartialEq, Properties, Clone)] +pub struct Props { + pub best_score: u32, +} + +#[function_component(BestScore)] +pub fn score_board_best_score(props: &Props) -> Html { + html! { +
+ {"Highest Record"} +

{ props.best_score }

+
+ } +} diff --git a/examples/function_memory_game/src/components/score_board_logo.rs b/examples/function_memory_game/src/components/score_board_logo.rs new file mode 100644 index 00000000000..e2f183ad28b --- /dev/null +++ b/examples/function_memory_game/src/components/score_board_logo.rs @@ -0,0 +1,10 @@ +use yew::{function_component, html}; + +#[function_component(Logo)] +pub fn score_board_logo() -> Html { + html! { +

+ {"Memory"} +

+ } +} diff --git a/examples/function_memory_game/src/components/score_board_progress.rs b/examples/function_memory_game/src/components/score_board_progress.rs new file mode 100644 index 00000000000..13a41549809 --- /dev/null +++ b/examples/function_memory_game/src/components/score_board_progress.rs @@ -0,0 +1,16 @@ +use yew::{function_component, html, Properties}; + +#[derive(PartialEq, Properties, Clone)] +pub struct Props { + pub unresolved_card_pairs: u8, +} + +#[function_component(GameProgress)] +pub fn score_board_progress(props: &Props) -> Html { + html! { +
+ {"Cards not Matched"} +

{ props.unresolved_card_pairs }

+
+ } +} diff --git a/examples/function_memory_game/src/constant.rs b/examples/function_memory_game/src/constant.rs new file mode 100644 index 00000000000..0de39262e4a --- /dev/null +++ b/examples/function_memory_game/src/constant.rs @@ -0,0 +1,42 @@ +use serde::{Deserialize, Serialize}; +use strum_macros::{Display, EnumIter}; + +pub const KEY_BEST_SCORE: &str = "memory.game.best.score"; + +#[derive(Clone, Copy, Debug, EnumIter, Display, PartialEq, Serialize, Deserialize)] +pub enum CardName { + EightBall, + Kronos, + BakedPotato, + Dinosaur, + Rocket, + SkinnyUnicorn, + ThatGuy, + Zeppelin, +} + +#[derive(Clone, Copy, Debug, EnumIter, Display, PartialEq, Serialize, Deserialize)] +pub enum Status { + Ready, + Playing, + Passed, +} + +pub const RAW_CARDS: [CardName; 16] = [ + CardName::EightBall, + CardName::Kronos, + CardName::BakedPotato, + CardName::Dinosaur, + CardName::Rocket, + CardName::SkinnyUnicorn, + CardName::ThatGuy, + CardName::Zeppelin, + CardName::EightBall, + CardName::Kronos, + CardName::BakedPotato, + CardName::Dinosaur, + CardName::Rocket, + CardName::SkinnyUnicorn, + CardName::ThatGuy, + CardName::Zeppelin, +]; diff --git a/examples/function_memory_game/src/helper.rs b/examples/function_memory_game/src/helper.rs new file mode 100644 index 00000000000..c74796dc053 --- /dev/null +++ b/examples/function_memory_game/src/helper.rs @@ -0,0 +1,21 @@ +use nanoid::nanoid; +use rand::seq::SliceRandom; +use rand::thread_rng; + +use crate::constant::RAW_CARDS; +use crate::state::Card; + +pub fn shuffle_cards() -> Vec { + let mut raw_cards = RAW_CARDS; + + raw_cards.shuffle(&mut thread_rng()); + + raw_cards + .iter() + .map(|&p| Card { + id: nanoid!(), + flipped: false, + name: p, + }) + .collect() +} diff --git a/examples/function_memory_game/src/main.rs b/examples/function_memory_game/src/main.rs new file mode 100644 index 00000000000..b381ea74dad --- /dev/null +++ b/examples/function_memory_game/src/main.rs @@ -0,0 +1,83 @@ +use gloo::timers::callback::{Interval, Timeout}; +use std::{cell::RefCell, rc::Rc}; +use yew::{ + function_component, html, use_effect_with_deps, use_mut_ref, use_reducer, use_state, Callback, +}; + +mod components; +mod constant; +mod helper; +mod state; + +use crate::components::{ + chessboard::Chessboard, game_status_board::GameStatusBoard, score_board::ScoreBoard, +}; +use crate::constant::Status; +use crate::state::{Action, State}; + +#[function_component(App)] +fn app() -> Html { + let state = use_reducer(State::reset); + let sec_past = use_state(|| 0_u32); + let sec_past_timer: Rc>> = use_mut_ref(|| None); + let flip_back_timer: Rc>> = use_mut_ref(|| None); + let sec_past_time = *sec_past; + + use_effect_with_deps( + move |state| { + // game reset + if state.status == Status::Ready { + sec_past.set(0); + } + // game start + else if *sec_past == 0 && state.last_card.is_some() { + let sec_past = sec_past.clone(); + let mut sec = *sec_past; + *sec_past_timer.borrow_mut() = Some(Interval::new(1000, move || { + sec += 1; + sec_past.set(sec); + })); + } + // game over + else if state.status == Status::Passed { + *sec_past_timer.borrow_mut() = None; + *flip_back_timer.borrow_mut() = None; + state.dispatch(Action::TrySaveBestScore(*sec_past)); + } + // match failed + else if state.rollback_cards.is_some() { + let cloned_state = state.clone(); + let cloned_rollback_cards = state.rollback_cards.clone().unwrap(); + *flip_back_timer.borrow_mut() = Some(Timeout::new(1000, move || { + cloned_state.dispatch(Action::RollbackCards(cloned_rollback_cards)); + })); + } + || () + }, + state.clone(), + ); + + let on_reset = { + let state = state.clone(); + Callback::from(move |_| state.dispatch(Action::GameReset)) + }; + + let on_flip = { + let state = state.clone(); + Callback::from(move |card| { + state.dispatch(Action::FlipCard(card)); + }) + }; + + html! { +
+ + + +
+ } +} + +fn main() { + yew::start_app::(); +} diff --git a/examples/function_memory_game/src/state.rs b/examples/function_memory_game/src/state.rs new file mode 100644 index 00000000000..f245efd1918 --- /dev/null +++ b/examples/function_memory_game/src/state.rs @@ -0,0 +1,153 @@ +use gloo::storage::{LocalStorage, Storage}; +use serde::{Deserialize, Serialize}; +use std::rc::Rc; +use yew::prelude::*; + +use crate::constant::{CardName, Status, KEY_BEST_SCORE}; +use crate::helper::shuffle_cards; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct RawCard { + pub id: String, + pub name: CardName, +} + +impl PartialEq for RawCard { + fn eq(&self, other: &RawCard) -> bool { + self.id == other.id && self.name == other.name + } +} + +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] +pub struct Card { + pub id: String, + pub flipped: bool, + pub name: CardName, +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub struct State { + pub unresolved_card_pairs: u8, + pub best_score: u32, + pub status: Status, + pub cards: Vec, + pub last_card: Option, + pub rollback_cards: Option<[RawCard; 2]>, +} + +impl PartialEq for &mut Card { + fn eq(&self, other: &RawCard) -> bool { + self.id == other.id && self.name == other.name + } +} + +pub enum Action { + FlipCard(RawCard), + RollbackCards([RawCard; 2]), + TrySaveBestScore(u32), + GameReset, +} + +impl Reducible for State { + type Action = Action; + + fn reduce(self: Rc, action: Self::Action) -> Rc { + match action { + Action::FlipCard(card) => { + let status = if self.status == Status::Ready { + Status::Playing + } else { + self.status + }; + + let mut cards = self.cards.clone(); + cards.iter_mut().filter(|c| c.eq(&card)).for_each(|c| { + c.flipped = !c.flipped; + }); + + let last_card = self.last_card.clone(); + + match last_card { + None => State { + unresolved_card_pairs: self.unresolved_card_pairs, + best_score: self.best_score, + status, + cards: cards.clone(), + last_card: Some(card), + rollback_cards: None, + }, + Some(last_card) => { + let mut unresolved_card_pairs = self.unresolved_card_pairs; + let mut status = self.status; + let mut rollback_cards = self.rollback_cards.clone(); + if card.id.ne(&last_card.id) && card.name.eq(&last_card.name) { + unresolved_card_pairs = self.unresolved_card_pairs - 1; + status = if unresolved_card_pairs == 0 { + Status::Passed + } else { + self.status + }; + } else { + rollback_cards = Some([last_card, card]); + } + + State { + unresolved_card_pairs, + best_score: self.best_score, + status, + cards: cards.clone(), + last_card: None, + rollback_cards, + } + } + } + .into() + } + Action::RollbackCards(rollback_cards) => { + let mut cards = self.cards.clone(); + + cards + .iter_mut() + .filter(|c| { + rollback_cards.contains( + &(RawCard { + id: c.id.clone(), + name: c.name, + }), + ) + }) + .for_each(|c| { + c.flipped = !c.flipped; + }); + + State { + unresolved_card_pairs: self.unresolved_card_pairs, + best_score: self.best_score, + status: self.status, + cards, + last_card: self.last_card.clone(), + rollback_cards: None, + } + .into() + } + Action::TrySaveBestScore(sec_past) => { + (self.best_score > sec_past).then(|| LocalStorage::set(KEY_BEST_SCORE, sec_past)); + self + } + Action::GameReset => State::reset().into(), + } + } +} + +impl State { + pub fn reset() -> State { + State { + unresolved_card_pairs: 8, + best_score: LocalStorage::get(KEY_BEST_SCORE).unwrap_or(9999), + status: Status::Ready, + cards: shuffle_cards(), + last_card: None, + rollback_cards: None, + } + } +} From 0555a6a5c7e9fefa6064c1eef4fb415618b827a0 Mon Sep 17 00:00:00 2001 From: "Howard.Zuo" Date: Wed, 29 Dec 2021 11:24:55 +0800 Subject: [PATCH 2/5] refactor: remove unnecessary manual PartialEq implementation --- .../src/components/chessboard.rs | 16 +--------------- .../src/components/chessboard_card.rs | 8 +------- .../src/components/game_status_board.rs | 8 +------- examples/function_memory_game/src/state.rs | 8 +------- 4 files changed, 4 insertions(+), 36 deletions(-) diff --git a/examples/function_memory_game/src/components/chessboard.rs b/examples/function_memory_game/src/components/chessboard.rs index e8b29555755..103246c2cf4 100644 --- a/examples/function_memory_game/src/components/chessboard.rs +++ b/examples/function_memory_game/src/components/chessboard.rs @@ -4,26 +4,12 @@ use yew::{function_component, html, Properties}; use crate::components::chessboard_card::ChessboardCard; use crate::state::{Card, RawCard}; -#[derive(Properties, Clone)] +#[derive(Properties, Clone, PartialEq)] pub struct Props { pub cards: Vec, pub on_flip: Callback, } -impl PartialEq for Props { - fn eq(&self, other: &Props) -> bool { - let s_cards = &self.cards; - let o_cards = &other.cards; - let s_cards_len = s_cards.len(); - let o_cards_len = o_cards.len(); - - match s_cards_len == o_cards_len { - false => false, - true => s_cards.iter().all(|c| o_cards.contains(c)), - } - } -} - #[function_component(Chessboard)] pub fn chessboard(props: &Props) -> Html { html! { diff --git a/examples/function_memory_game/src/components/chessboard_card.rs b/examples/function_memory_game/src/components/chessboard_card.rs index d4dce8f8fe1..a9cabe1741f 100644 --- a/examples/function_memory_game/src/components/chessboard_card.rs +++ b/examples/function_memory_game/src/components/chessboard_card.rs @@ -5,18 +5,12 @@ use yew::{function_component, html, Properties}; use crate::constant::CardName; use crate::state::{Card, RawCard}; -#[derive(Properties, Clone)] +#[derive(Properties, Clone, PartialEq)] pub struct Props { pub card: Card, pub on_flip: Callback, } -impl PartialEq for Props { - fn eq(&self, other: &Props) -> bool { - self.card.eq(&other.card) - } -} - #[function_component(ChessboardCard)] pub fn chessboard_card(props: &Props) -> Html { let Card { flipped, name, id } = props.card.clone(); diff --git a/examples/function_memory_game/src/components/game_status_board.rs b/examples/function_memory_game/src/components/game_status_board.rs index aec8e432ba6..e1b2fe37794 100644 --- a/examples/function_memory_game/src/components/game_status_board.rs +++ b/examples/function_memory_game/src/components/game_status_board.rs @@ -2,19 +2,13 @@ use crate::constant::Status; use yew::prelude::*; use yew::{function_component, html, Properties}; -#[derive(Properties, Clone)] +#[derive(Properties, Clone, PartialEq)] pub struct Props { pub status: Status, pub sec_past: u32, pub on_reset: Callback<()>, } -impl PartialEq for Props { - fn eq(&self, other: &Props) -> bool { - self.status == other.status && self.sec_past == other.sec_past - } -} - #[function_component(GameStatusBoard)] pub fn game_status_board(props: &Props) -> Html { let get_content = { diff --git a/examples/function_memory_game/src/state.rs b/examples/function_memory_game/src/state.rs index f245efd1918..6d3115ad76f 100644 --- a/examples/function_memory_game/src/state.rs +++ b/examples/function_memory_game/src/state.rs @@ -6,18 +6,12 @@ use yew::prelude::*; use crate::constant::{CardName, Status, KEY_BEST_SCORE}; use crate::helper::shuffle_cards; -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] pub struct RawCard { pub id: String, pub name: CardName, } -impl PartialEq for RawCard { - fn eq(&self, other: &RawCard) -> bool { - self.id == other.id && self.name == other.name - } -} - #[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] pub struct Card { pub id: String, From b6afec03e5c2e8803c67c5b62c884c3ce314e4bf Mon Sep 17 00:00:00 2001 From: "Howard.Zuo" Date: Thu, 30 Dec 2021 09:57:17 +0800 Subject: [PATCH 3/5] refactor: remove unnecessary license note --- examples/function_memory_game/README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/examples/function_memory_game/README.md b/examples/function_memory_game/README.md index 92436cfb319..7a41b9219b8 100644 --- a/examples/function_memory_game/README.md +++ b/examples/function_memory_game/README.md @@ -7,9 +7,3 @@ A port version of [react-memory-game](https://github.com/leftstick/react-memory- - Uses [`function_components`](https://yew.rs/docs/next/concepts/function-components) - Uses [`gloo_storage`](https://gloo-rs.web.app/docs/storage) to persist the state - - - -## LICENSE - -[MIT License](https://raw.githubusercontent.com/yewstack/yew/examples/function_memory_game/master/LICENSE) From 15053791a640bae986d7d24e6091dc4eac29d8c8 Mon Sep 17 00:00:00 2001 From: "Howard.Zuo" Date: Thu, 6 Jan 2022 16:47:25 +0800 Subject: [PATCH 4/5] refactor: update implementation and doc with suggestions --- Cargo.toml | 2 +- examples/function_memory_game/README.md | 12 ++- examples/function_memory_game/index.html | 4 +- .../scss/game_status_board.scss | 9 ++- .../function_memory_game/src/components.rs | 1 + .../src/components/app.rs | 74 ++++++++++++++++++ .../src/components/chessboard.rs | 5 +- .../src/components/chessboard_card.rs | 30 ++++---- .../src/components/game_status_board.rs | 6 +- .../src/components/score_board.rs | 14 ++-- .../src/components/score_board_best_score.rs | 6 +- .../src/components/score_board_logo.rs | 6 +- .../src/components/score_board_progress.rs | 6 +- examples/function_memory_game/src/main.rs | 75 +------------------ 14 files changed, 130 insertions(+), 120 deletions(-) create mode 100644 examples/function_memory_game/src/components/app.rs diff --git a/Cargo.toml b/Cargo.toml index 182112c5821..5180b602f93 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,8 +14,8 @@ members = [ "examples/counter", "examples/dyn_create_destroy_apps", "examples/file_upload", - "examples/function_todomvc", "examples/function_memory_game", + "examples/function_todomvc", "examples/futures", "examples/game_of_life", "examples/inner_html", diff --git a/examples/function_memory_game/README.md b/examples/function_memory_game/README.md index 7a41b9219b8..1ee70893618 100644 --- a/examples/function_memory_game/README.md +++ b/examples/function_memory_game/README.md @@ -1,9 +1,15 @@ -# rust-memory-game +# Memory Game Example +[![Demo](https://img.shields.io/website?label=demo&url=https%3A%2F%2Fexamples.yew.rs%2Ffunction_memory_game)](https://examples.yew.rs/function_memory_game) -A port version of [react-memory-game](https://github.com/leftstick/react-memory-game). You are able to try it at [here](https://img.shields.io/website?label=demo&url=https%3A%2F%2Fexamples.yew.rs%2Ffunction_memory_game)](https://examples.yew.rs/function_memory_game) +This is an implementation of [Memory Game](https://github.com/bradlygreen/Memory-Game) for Yew using function components and hooks. ## Concepts - Uses [`function_components`](https://yew.rs/docs/next/concepts/function-components) -- Uses [`gloo_storage`](https://gloo-rs.web.app/docs/storage) to persist the state +- Uses [`gloo::storage`](https://docs.rs/gloo-storage/0.2.0/gloo_storage/index.html) to persist the state +- Uses [`gloo::timers`](https://docs.rs/gloo-timers/0.2.2/gloo_timers/index.html) to schedule asynchronous callback + +## Note + +Images are authorized by [@bradlygreen](https://github.com/bradlygreen), see [authorization-issue](https://github.com/bradlygreen/Memory-Game/issues/6) \ No newline at end of file diff --git a/examples/function_memory_game/index.html b/examples/function_memory_game/index.html index 2c0ff1336b2..4db6cd60bf1 100644 --- a/examples/function_memory_game/index.html +++ b/examples/function_memory_game/index.html @@ -4,8 +4,8 @@ - Yew • Function MemoryGame - + Yew • Function Memory Game + diff --git a/examples/function_memory_game/scss/game_status_board.scss b/examples/function_memory_game/scss/game_status_board.scss index 216314ed14b..f0de14cbd2c 100644 --- a/examples/function_memory_game/scss/game_status_board.scss +++ b/examples/function_memory_game/scss/game_status_board.scss @@ -7,10 +7,13 @@ text-align: center; font-size: 18px; font-weight: bold; - a { - text-decoration: none; + button { + border: none; cursor: pointer; - color: #5979ab; + background: transparent; + color: #5979ac; + font-size: 17px; + font-weight: bold; } .sec-past { position: absolute; diff --git a/examples/function_memory_game/src/components.rs b/examples/function_memory_game/src/components.rs index 4371776b5ec..660a916d3d4 100644 --- a/examples/function_memory_game/src/components.rs +++ b/examples/function_memory_game/src/components.rs @@ -1,3 +1,4 @@ +pub mod app; pub mod chessboard; pub mod chessboard_card; pub mod game_status_board; diff --git a/examples/function_memory_game/src/components/app.rs b/examples/function_memory_game/src/components/app.rs new file mode 100644 index 00000000000..fae00a39fba --- /dev/null +++ b/examples/function_memory_game/src/components/app.rs @@ -0,0 +1,74 @@ +use gloo::timers::callback::{Interval, Timeout}; +use std::{cell::RefCell, rc::Rc}; +use yew::prelude::*; +use yew::{function_component, html}; + +use crate::components::{ + chessboard::Chessboard, game_status_board::GameStatusBoard, score_board::ScoreBoard, +}; + +use crate::constant::Status; +use crate::state::{Action, State}; + +#[function_component] +pub fn App() -> Html { + let state = use_reducer(State::reset); + let sec_past = use_state(|| 0_u32); + let sec_past_timer: Rc>> = use_mut_ref(|| None); + let flip_back_timer: Rc>> = use_mut_ref(|| None); + let sec_past_time = *sec_past; + + use_effect_with_deps( + move |state| { + // game reset + if state.status == Status::Ready { + sec_past.set(0); + } + // game start + else if *sec_past == 0 && state.last_card.is_some() { + let sec_past = sec_past.clone(); + let mut sec = *sec_past; + *sec_past_timer.borrow_mut() = Some(Interval::new(1000, move || { + sec += 1; + sec_past.set(sec); + })); + } + // game over + else if state.status == Status::Passed { + *sec_past_timer.borrow_mut() = None; + *flip_back_timer.borrow_mut() = None; + state.dispatch(Action::TrySaveBestScore(*sec_past)); + } + // match failed + else if state.rollback_cards.is_some() { + let cloned_state = state.clone(); + let cloned_rollback_cards = state.rollback_cards.clone().unwrap(); + *flip_back_timer.borrow_mut() = Some(Timeout::new(1000, move || { + cloned_state.dispatch(Action::RollbackCards(cloned_rollback_cards)); + })); + } + || () + }, + state.clone(), + ); + + let on_reset = { + let state = state.clone(); + Callback::from(move |_| state.dispatch(Action::GameReset)) + }; + + let on_flip = { + let state = state.clone(); + Callback::from(move |card| { + state.dispatch(Action::FlipCard(card)); + }) + }; + + html! { +
+ + + +
+ } +} diff --git a/examples/function_memory_game/src/components/chessboard.rs b/examples/function_memory_game/src/components/chessboard.rs index 103246c2cf4..22688337b5e 100644 --- a/examples/function_memory_game/src/components/chessboard.rs +++ b/examples/function_memory_game/src/components/chessboard.rs @@ -9,9 +9,8 @@ pub struct Props { pub cards: Vec, pub on_flip: Callback, } - -#[function_component(Chessboard)] -pub fn chessboard(props: &Props) -> Html { +#[function_component] +pub fn Chessboard(props: &Props) -> Html { html! {
{ for props.cards.iter().map(|card| diff --git a/examples/function_memory_game/src/components/chessboard_card.rs b/examples/function_memory_game/src/components/chessboard_card.rs index a9cabe1741f..ab5e8a40d11 100644 --- a/examples/function_memory_game/src/components/chessboard_card.rs +++ b/examples/function_memory_game/src/components/chessboard_card.rs @@ -1,6 +1,6 @@ use web_sys::MouseEvent; use yew::prelude::*; -use yew::{function_component, html, Properties}; +use yew::{function_component, html, Html, Properties}; use crate::constant::CardName; use crate::state::{Card, RawCard}; @@ -11,9 +11,10 @@ pub struct Props { pub on_flip: Callback, } -#[function_component(ChessboardCard)] -pub fn chessboard_card(props: &Props) -> Html { - let Card { flipped, name, id } = props.card.clone(); +#[function_component] +pub fn ChessboardCard(props: &Props) -> Html { + let Props { card, on_flip } = props.clone(); + let Card { flipped, name, id } = card; let get_link_by_cardname = { match name { @@ -29,19 +30,14 @@ pub fn chessboard_card(props: &Props) -> Html { .to_string() }; - let onclick = { - let on_flip = props.on_flip.clone(); - - move |e: MouseEvent| { - e.stop_propagation(); - - (!flipped).then(|| { - on_flip.emit(RawCard { - id: id.clone(), - name, - }) - }); - } + let onclick = move |e: MouseEvent| { + e.stop_propagation(); + (!flipped).then(|| { + on_flip.emit(RawCard { + id: id.clone(), + name, + }) + }); }; html! { diff --git a/examples/function_memory_game/src/components/game_status_board.rs b/examples/function_memory_game/src/components/game_status_board.rs index e1b2fe37794..f5ef39bf0da 100644 --- a/examples/function_memory_game/src/components/game_status_board.rs +++ b/examples/function_memory_game/src/components/game_status_board.rs @@ -9,8 +9,8 @@ pub struct Props { pub on_reset: Callback<()>, } -#[function_component(GameStatusBoard)] -pub fn game_status_board(props: &Props) -> Html { +#[function_component] +pub fn GameStatusBoard(props: &Props) -> Html { let get_content = { let onclick = props.on_reset.reform(move |e: MouseEvent| { e.stop_propagation(); @@ -25,7 +25,7 @@ pub fn game_status_board(props: &Props) -> Html { {"Playing"} }, Status::Passed => html! { - {"Play again"} + }, } }; diff --git a/examples/function_memory_game/src/components/score_board.rs b/examples/function_memory_game/src/components/score_board.rs index 3b5ae97b272..e3c7efee0f2 100644 --- a/examples/function_memory_game/src/components/score_board.rs +++ b/examples/function_memory_game/src/components/score_board.rs @@ -1,4 +1,4 @@ -use yew::{function_component, html, Properties}; +use yew::{function_component, html, Html, Properties}; use crate::components::{ score_board_best_score::BestScore, score_board_logo::Logo, score_board_progress::GameProgress, @@ -10,13 +10,17 @@ pub struct Props { pub best_score: u32, } -#[function_component(ScoreBoard)] -pub fn score_board(props: &Props) -> Html { +#[function_component] +pub fn ScoreBoard(props: &Props) -> Html { + let Props { + best_score, + unresolved_card_pairs, + } = props.clone(); html! {
- - + +
} } diff --git a/examples/function_memory_game/src/components/score_board_best_score.rs b/examples/function_memory_game/src/components/score_board_best_score.rs index dd9e3af0482..3af394a93a8 100644 --- a/examples/function_memory_game/src/components/score_board_best_score.rs +++ b/examples/function_memory_game/src/components/score_board_best_score.rs @@ -1,12 +1,12 @@ -use yew::{function_component, html, Properties}; +use yew::{function_component, html, Html, Properties}; #[derive(PartialEq, Properties, Clone)] pub struct Props { pub best_score: u32, } -#[function_component(BestScore)] -pub fn score_board_best_score(props: &Props) -> Html { +#[function_component] +pub fn BestScore(props: &Props) -> Html { html! {
{"Highest Record"} diff --git a/examples/function_memory_game/src/components/score_board_logo.rs b/examples/function_memory_game/src/components/score_board_logo.rs index e2f183ad28b..c18158bc803 100644 --- a/examples/function_memory_game/src/components/score_board_logo.rs +++ b/examples/function_memory_game/src/components/score_board_logo.rs @@ -1,7 +1,7 @@ -use yew::{function_component, html}; +use yew::{function_component, html, Html}; -#[function_component(Logo)] -pub fn score_board_logo() -> Html { +#[function_component] +pub fn Logo() -> Html { html! {

{"Memory"} diff --git a/examples/function_memory_game/src/components/score_board_progress.rs b/examples/function_memory_game/src/components/score_board_progress.rs index 13a41549809..13f9bc97848 100644 --- a/examples/function_memory_game/src/components/score_board_progress.rs +++ b/examples/function_memory_game/src/components/score_board_progress.rs @@ -1,12 +1,12 @@ -use yew::{function_component, html, Properties}; +use yew::{function_component, html, Html, Properties}; #[derive(PartialEq, Properties, Clone)] pub struct Props { pub unresolved_card_pairs: u8, } -#[function_component(GameProgress)] -pub fn score_board_progress(props: &Props) -> Html { +#[function_component] +pub fn GameProgress(props: &Props) -> Html { html! {
{"Cards not Matched"} diff --git a/examples/function_memory_game/src/main.rs b/examples/function_memory_game/src/main.rs index b381ea74dad..995fd2787be 100644 --- a/examples/function_memory_game/src/main.rs +++ b/examples/function_memory_game/src/main.rs @@ -1,82 +1,9 @@ -use gloo::timers::callback::{Interval, Timeout}; -use std::{cell::RefCell, rc::Rc}; -use yew::{ - function_component, html, use_effect_with_deps, use_mut_ref, use_reducer, use_state, Callback, -}; - mod components; mod constant; mod helper; mod state; -use crate::components::{ - chessboard::Chessboard, game_status_board::GameStatusBoard, score_board::ScoreBoard, -}; -use crate::constant::Status; -use crate::state::{Action, State}; - -#[function_component(App)] -fn app() -> Html { - let state = use_reducer(State::reset); - let sec_past = use_state(|| 0_u32); - let sec_past_timer: Rc>> = use_mut_ref(|| None); - let flip_back_timer: Rc>> = use_mut_ref(|| None); - let sec_past_time = *sec_past; - - use_effect_with_deps( - move |state| { - // game reset - if state.status == Status::Ready { - sec_past.set(0); - } - // game start - else if *sec_past == 0 && state.last_card.is_some() { - let sec_past = sec_past.clone(); - let mut sec = *sec_past; - *sec_past_timer.borrow_mut() = Some(Interval::new(1000, move || { - sec += 1; - sec_past.set(sec); - })); - } - // game over - else if state.status == Status::Passed { - *sec_past_timer.borrow_mut() = None; - *flip_back_timer.borrow_mut() = None; - state.dispatch(Action::TrySaveBestScore(*sec_past)); - } - // match failed - else if state.rollback_cards.is_some() { - let cloned_state = state.clone(); - let cloned_rollback_cards = state.rollback_cards.clone().unwrap(); - *flip_back_timer.borrow_mut() = Some(Timeout::new(1000, move || { - cloned_state.dispatch(Action::RollbackCards(cloned_rollback_cards)); - })); - } - || () - }, - state.clone(), - ); - - let on_reset = { - let state = state.clone(); - Callback::from(move |_| state.dispatch(Action::GameReset)) - }; - - let on_flip = { - let state = state.clone(); - Callback::from(move |card| { - state.dispatch(Action::FlipCard(card)); - }) - }; - - html! { -
- - - -
- } -} +use crate::components::app::App; fn main() { yew::start_app::(); From 31f34944a3580099d547e086753e9d6ef66428a1 Mon Sep 17 00:00:00 2001 From: "Howard.Zuo" Date: Wed, 12 Jan 2022 09:59:48 +0800 Subject: [PATCH 5/5] refactor: fix format and lint issues --- .../function_memory_game/src/components/chessboard_card.rs | 4 ++-- .../function_memory_game/src/components/game_status_board.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/function_memory_game/src/components/chessboard_card.rs b/examples/function_memory_game/src/components/chessboard_card.rs index ab5e8a40d11..a3c2ce43b80 100644 --- a/examples/function_memory_game/src/components/chessboard_card.rs +++ b/examples/function_memory_game/src/components/chessboard_card.rs @@ -43,8 +43,8 @@ pub fn ChessboardCard(props: &Props) -> Html { html! {
- - + card + card
} diff --git a/examples/function_memory_game/src/components/game_status_board.rs b/examples/function_memory_game/src/components/game_status_board.rs index f5ef39bf0da..19cd2813f14 100644 --- a/examples/function_memory_game/src/components/game_status_board.rs +++ b/examples/function_memory_game/src/components/game_status_board.rs @@ -19,10 +19,10 @@ pub fn GameStatusBoard(props: &Props) -> Html { match props.status { Status::Ready => html! { - {"Ready"} + {"Ready"} }, Status::Playing => html! { - {"Playing"} + {"Playing"} }, Status::Passed => html! {