22
2

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.

クソアプリAdvent Calendar 2020

Day 9

【クソアプリ】猫がいるリバーシアプリつくってみた

Last updated at Posted at 2020-12-08

前置き

この記事は クソアプリ Advent Calendar 2020 の9日目の投稿です。
筆者は猫を飼いたいあまりおかしくなってしまいました。

猫との暮らし

猫と暮していると何をするにも猫がついてきます。

PC作業中に__キーボードに座られて仕事できない。。。__ってなるんだと思います。

そんな生活をぜひ皆さんに味わってほしくてこのアプリをつくりました。

表示が遅いのはきっと猫のせい。

猫とリバーシ

オンライン対戦できるようにしましたが、相手がいないと出来ないので

動きを確認したい人は下のオフライン対戦でお願いします。

猫がしてくれること

猫はひっくり返すのが大好き。

きっと並べられている石を好き勝手にうらがえしてしまうでしょう。

自分が4回打った時に裏返しに来ます。かわいいですね。

使用技術

angular
scss
firebase

詰まったところ

盤面をfriebaseのCloud Firestoreで共有しているのですが

多重配列に対応していなかったので、文字列化してあげる必要がある

play.component.ts

// 初期ボードの値

   board = [
      [0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 1, 2, 0, 0, 0],
      [0, 0, 0, 2, 1, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0],
    ];

// ボード情報を更新
  async setBoard(boardName: string) {
    const boardStr= JSON.stringify(this.board); //文字列化する
    await this.database
      .collection(boardName)
      .doc('board')
      .set({ board: boardStr});
  }

play.component.ts

// ボード情報を取得
  async getBoard(boardName: string) {
    await this.database
      .collection(boardName)
      .doc('board')
      .valueChanges() 
      .subscribe((res: Board) => {
        this.board = JSON.parse(res.board);
      });
   }

プレイ画面

play1.gif

22
2
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
22
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?