1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

僕、最弱でした!? ツイートでバトルするWebサイトを作って無双しようとしたら逆にボコボコにされた件 フォロワーを増やそうとしてももう遅い

Posted at

概要

自分のツイートを選んでユーザーとバトルするwebサイトを作成

デモ

お試し動画。松本人志さんと対戦してみたらこのザマです

技術

  • サーバサイド

    • Rails
  • フロントエンド

    • React
  • アニメーション

    • CSS
    • react-transition-group
  • API

    • 公式TwitterAPI
  • ホスティング

    • Heroku
  • ssl

    • cloud flare

ルール

  • 直近30件のツイートを使用できる(ランダム)
  • フォロワー数でユーザーのHP、攻撃力が決まる
  • リツイート、いいねの数で攻撃力が上がる
  • リツイート数でクリティカル率が上がる
  • いいね数で回復力が上がる

やりたかったけどやれなかったこと

アニメーション

もう少し攻撃アニメーションのバリエーションやクオリティを上げたかったけど時間技術とセンスがなかった。アニメって難しいんですね・・・

初めてreact-transition-groupを使ったけれど、チンプンカンプンでステータス変更のタイミングを掴むまでかなり時間を要した。

この記事を何回も読んでやっと実装できた感じ

Twitterロゴ

バトル要素にTwitterバード:hatched_chick:を使いたかったけど、ロゴの規約に違反するため断念。色を変えたりアニメーション利用はできないみたい

カルーセル

スマホ向けにツイートのリストをcssでscroll-snapにしている。本当はカルーセルライブラリのreact-slickとか使っていい感じにしたかったけど、ツイート削除すると以下のエラーが出てうまくいかなかった

removeChild' on 'Node': The node to be removed is not a child of this node.

あとスクロールの初期位置をscrollLeftで補正しようとしたけど全く動かない。怠惰スクロール状態:sleepy:。なぜだ

コンポーネントがファット

バトル画面のコンポーネントが600行くらいある。ソースが読みづらいから問題解析に時間がかかる。
コンポーネントを分けた上で実装すべきだった。

アニメーションの指定も関数指定だったり即時関数だったりでなんかごちゃごちゃしている。
もう終わりだよこのプログラム:sob:

weapon() {
  return (
    <CSSTransition
      // 攻撃完了後
      onEntered={() => {
        this.setState({
          canAttack: false
        });
        this.enemyTurn();
      }}
・・・
  )
}

enemy() {
  return (
    <CSSTransition
      onEntered={this.enemyAttack}
      onExited={this.setUserHp}
・・・
  )
}

まとめ

ほぼネタアプリ。暇つぶしにどうぞ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?