クソカードゲームを作るクソアプリを作った(React)
クソカードゲームを作るクソアプリを作った(React):
ここで実際にクソゲーを作れます
アナログゲームプロトタイプメーカー
github
ちょうどreactを勉強したいが、せっかくなので何か作りたい。
同人活動でアナログゲームを作っているが、プロトタイプを作るのが毎回大変だった。
海外産の遊戯王ジェネレータ等を使っても日本語だと文字化けしたり、改行がズレたりといまいち。
そういうわけで、作った。
あと、当時正式版が公開されたばかりのbootstrap4も使ってみたかった。
印刷して使う事が前提だったので、
切り離しやすいよう1枚目の紙と2枚目の紙でカードの位置がズレないようにした。
・印刷時は9枚単位で改ページする
CSSに'page-break-after: always'なるものがいる、便利なものは使う。
・カード3つ毎にdivで囲む。カード9つ毎にまたdivで囲む。
3つで次の行、9つで前述のpage-break-afterをするため、divで階層化したかった。
今思えばCSS疑似クラスでいけそうだけど気にしない。
こういう感じにしたかった。
JSXの中ではforが使えず、上記のコードは上手くいかない。困った。
というわけでこうなった。
皆さんはそれぞれのネストが何しているか分かりますか?
マジな話、オレは分からない
半年前の俺によると
第三引数で今度はカードリストのうち、123 や 456 など3つを返すようにしてあげるためまた
らしい。へーすごいね。
・
・
という感じ。
このときちょうどlaravelも学習しており、JSXもbladeみたいなテンプレートエンジン族だと思っていた。
実際にはjavascriptの拡張記法。
あと、bootstrap4普通にいい感じだった。
・バグ潰し(xの調整がうまくいってない)
・canvasにして画像として保存できるようにする
頑張って作ったので使ってね。
「React完全に理解したし次いこう」
となってディープラーニングに手を出した。
エロゲの立ち絵っぽいか判定するマン
めっちゃ頑張って正解率96%まで伸ばしたが、
あんまりイイネがつかなくて悲しかったので誰か使ってほしい
何に使うかわからないが、せめて学習済みモデルだけでも。
ちなみに、冒頭で作ったカードゲームはつまらなかった。
作ったモノ
実際に印刷したもの
ここで実際にクソゲーを作れます
アナログゲームプロトタイプメーカー
github
何故作ったのか
ちょうどreactを勉強したいが、せっかくなので何か作りたい。同人活動でアナログゲームを作っているが、プロトタイプを作るのが毎回大変だった。
海外産の遊戯王ジェネレータ等を使っても日本語だと文字化けしたり、改行がズレたりといまいち。
そういうわけで、作った。
あと、当時正式版が公開されたばかりのbootstrap4も使ってみたかった。
工夫した点
印刷して使う事が前提だったので、切り離しやすいよう1枚目の紙と2枚目の紙でカードの位置がズレないようにした。
技術的な点
・印刷時は9枚単位で改ページするCSSに'page-break-after: always'なるものがいる、便利なものは使う。
・カード3つ毎にdivで囲む。カード9つ毎にまたdivで囲む。
3つで次の行、9つで前述のpage-break-afterをするため、divで階層化したかった。
今思えばCSS疑似クラスでいけそうだけど気にしない。
こういう感じにしたかった。
for(var i=0;i < カードの枚数;i++){ if(i%9 === 0) { <div className="page-break"> //9枚ごとに次の紙に印刷 if(i%3 === 0) { <div className="row">//3枚ごとに改行 } <Card> if(i%3 === 0) { </div> } </div> } }
というわけでこうなった。
{ //this.card_row_limitは3 Object.keys(this.cardlist).filter(key => key%this.card_row_limit === 0).map( (carddata,i) => { return React.createElement('div',{className:'row'},((row_data,num) => Object.keys(this.cardlist).filter(key => ((key >= num*this.card_row_limit) && (key <= num*this.card_row_limit+(this.card_row_limit-1)))).map( (row_card_data,in_row_number) => { var card_num = num*this.card_row_limit+in_row_number return React.createElement(CardBox, {data:this.cardlist[card_num], index:card_num, ref:"card"+(card_num)}) } ) )(this.cardlist,i)) } ) }
マジな話、オレは分からない
半年前の俺によると
this.cardlist
がカードのデータ。3枚目のカードならthis.cardlist[3]
。cardlist
からキーを取得して、filter
で3の倍数だけ取得、それを1回目のmap
でループ。return React.createElement('div'
で div
を作る。第三引数で今度はカードリストのうち、123 や 456 など3つを返すようにしてあげるためまた
filter
とmap
らしい。へーすごいね。
・
JSX
の中でfor
は使えず、ループはmap
で行う・
map
の返り値としてReact.createElement
オブジェクトを返す事で,タグとかコンポーネントが生成できるという感じ。
このときちょうどlaravelも学習しており、JSXもbladeみたいなテンプレートエンジン族だと思っていた。
実際にはjavascriptの拡張記法。
margin-left
がmarginLeft
だったりclass
がclassName
な事にキレ散らかしていたが、classはjavascriptの予約語だし当然である。あと、bootstrap4普通にいい感じだった。
今後なんとかしたい点
・バグ潰し(xの調整がうまくいってない)・canvasにして画像として保存できるようにする
頑張って作ったので使ってね。
クソアプリその2
「React完全に理解したし次いこう」となってディープラーニングに手を出した。
エロゲの立ち絵っぽいか判定するマン
めっちゃ頑張って正解率96%まで伸ばしたが、
あんまりイイネがつかなくて悲しかったので誰か使ってほしい
何に使うかわからないが、せめて学習済みモデルだけでも。
ちなみに、冒頭で作ったカードゲームはつまらなかった。
コメント
コメントを投稿