双方向通信、相手のカード表示、ドロー、ディスカードが出来るようになった

ネルケが出たのでサボっていたタワーづくりを再開。

github.com

1. マッチングロビーに他人がいればその人に対戦の申請

(二人はロビーリストから削除される)

2. 申請を受けるとバトルスタート、タワー関数を呼び出し

3. タワー関数呼び出しでサーバーにタワーを作らせる

4. タワーを二人に送る

5. ドローすると自分の手札の左端に表示、ドローしたことをサーバーに伝える

6. サーバーからほかのユーザーにドローがあったことを伝えてドローしたユーザーと同じ部屋(対戦相手)ならドローされたカードを相手手札に表示

7. 互いのタワーを1つ進める。

8. 手札のカードをタッチするとディスカード、ドローと同じようにディスカードがあったことをサーバーに伝えて他の人にブロードキャスト。

9. 手札を1枚削除する。左端にカードを詰める。

 

特定の相手にだけ通信するやり方がよくわからない。socket.ioにはルームの概念もあるらしいが全く分からない。

デバッグするのが難しくなってきた、一応何人でもできるはずだが?

画面が思ったよりも狭い。MTGは手札土地盤面があるのでめっちゃスペースがいる。

みんなデバッグを手伝うと思ってニックネームを入れてくれ(誰だかわからん)

socket.ioを使って双方向通信できるようになった。マッチングロビーをコピペで作った。

MTGアリーナが出てサボっていたタワー作りを再開した。

対戦ゲーム作るには双方向通信が必要なのでsocket.ioのお勉強をして完全に理解した。

socket.io

socket.onでキャッチ、socket.emitで球投げ、socket.broadcast.emitでみんなに球投げ。

対戦ゲームとするためにはまずマッチングをどうするかと思ったがネットにいい感じのものが転がっていたのでコピペしてマッチングロビーを作った。

やっとサーバーとクライアントの違いが分かってきた。

今まで作っていたタワープログラムの半分くらいサーバーで書くべきものだったのではないかということに気づいた(タワーの生成とか)。

タワー開発日記

成果 :

手札のカードをプレイ or セットランドできるようになった。

土地をクリックするとマナが出せるようにした(30°傾く)

※前のディスカードドローだけのほうが単体では面白かった

 

課題 :

プレイしたカードをさらに処理しないといけない。

現状ではパーマネントと非パーマネントの区別もない。

そろそろ対戦相手との通信のとこ勉強しないといけない。

なんか無料のレンタルサーバーを借りたい(めんどい)。

github.com

 

タワー開発日記

手札を7枚出す、カードを選んでディスカード、左上部のタワーのつもりで置いてるカード裏面をタッチするとドローをできるようにした。

インターネッツを参考にして数値べた書きではなく定数を設定した。

問題点 : カードイメージ(sprite)にインデックスを振る方法がわからない(タッチしたカードが左から何番目か判別できない)。

仕方がないのでタッチイベントの際にspriteが保持している座標とあらかじめ作っておいたhandList内の座標とを照らし合わせてタッチしたカードが左から何番目か判別しているがものすごくあほな感じがする。

次 : 土地とキャストできるようにすれば一人回しにはなるか?

github.com

 

タワー開発日記

カード7枚出すのにcard1~card7までvar card1 = new Spriteみたいにしていたが、for文で出せることに気が付いた。

Sprite一つ一つにcard.ontouchstart = touchFuncみたいな感じで押したときの動作を設定できるようになった

一度Sceneに載せたSpriteを剥がせるようになった。

結果タワーからカードをドローし続けられるようなプログラムができた。

問題は、押したときに押した場所にまたカードを表示する方法がわからないこと

(もとのSpriteの座標って保持できるのか?)

github.com

参考文献

enchant.js 怒涛の 100 tips | TM Life

タワー開発日記

タワー開発日記

ブログ主旨 : タワーの開発日記をつけて困ったことをインターネットの偉い人に聞く

ゴールイメージ : 手札があって、盤面を共有出来て、ドロー、土地埋め、墓地送り、ライフカウントができる。目隠し将棋をするのがきついので将棋盤を作るくらいのイメージ。効果の処理は全部手動でする。

現状 : ver1.0をサーバーたてて公開できるようになった

次 : タワーのデッキを作ってカード一枚ずつ引けるようにする。土地埋めとプレイエリア作ってなんか一人回しできるようにする。

課題 : カード表示一つ一つ手打ちしているがオブジェクトってやつにした方がよいのでは?

指定フォルダの中のカードイメージ数数えて配列作るみたいなのが意外と難しい

コード : 

github.com

使ってるもの : 

enchantjs.com

https://nodejs.org/ja/

ngrok.com