2018 ソフトウェア設計及び演習用の班Wiki
gr09::MAP・移動モジュール
以下にマップサンプルを示す。各マスにイベント判定用の配列eventkindが設定。(フォルダ名「map2」内の開始時はhtml:map-(start).html js:map-(start).js部分、それ以降はhtml:map.htmlとjs:map.js部分を実行)
0~78の計78マス。
eventkind=[0,3,3,4,1,3,3,1,4,3,0,2,3,1,4,3,3,0,1,3,0,2,0,4,1,0,3,0,0,2,0,3,0,3,0,1,0,4,0,2,0,3,3,0,1,5,0,3,0,1,0,5,0,3,0,1,0,3,3,1,0,3,5,1,0,5,0,3,0,1,0,3,3,1,0,5,0,6]
イベントの種類:0-何もなし 1-サイコロ+ 2-サイコロー(1と2はマップ上での見た目は同じなので注意) 3-その他(ショップとかハートマークとか!マーク) 4-雑魚敵戦闘 5-中雑魚 6-ラスボス
eventkind[0]がスタート地点、eventkind[77]がゴール地点のイベントの種類。サイコロの出目をeventkind[x]のxに追加していきたい。
(7/13追記)
キャラクター表示について、歩いたマス数zと対応するように、各マスの座標を配列masuxとnasuyに突っ込んで、
var z =0;
var masuy = [655-48*0,655-48*0…
var masux = [0,48*1,48*2…
var sprite = new Sprite(32, 32);//キャラクター表示
sprite.x = masux[z]+8;//masux[z]+8が理想
sprite.y = masuy[z]+535;//xと同様。sprite.y=masu[z]+535(+8と+535はマスの真ん中にキャラを表示するための調整)
sprite.image = game.assets[IMG1];
としたが、以下のようにキャラクターは表示されなかった。次回TAに聞く
(7/20追記)
キャラクター表示はyの値が大きかっただけで、sprite.y=masuy[z]+8に変更したら表示された。
以下に示すように、アイテムとサイコロ用のボタンの配置も完了。クリックで確認画面を出し、それぞれのHTMLへの移動も可能に。
ただし、サイコロモジュールで返された出目1~6の取得がいくつか試してみたが成功しない。他モジュールのjsファイルの返り値取得方法を調べる。解決しなければ次回もう一度TAに尋ねる。
(8/1追記)
別のjavascriptファイルから値を貰うには、渡す側のサイコロモジュールも変更しなくてはならないと判明。サイコロモジュール担当者不在によりdiceフォルダのdice.jsとsaikoro.htmlも伊東が変更(詳細はサイコロモジュールで)。結果としてサイコロのhtmlからmapのhtmlに移動したときに値を読み込むようになったが、その値がサイコロ側のjsファイルで用いた即時関数(dice.js内のvar ichi)の初期化したときの値(以下のスクリーンショットの43行目のd)で、サイコロで出した目が反映されていなかった。値の受け渡しそのものはうまくいっているので、dice側の問題があると判断し、詳しくはdice側に記述。
この場合常に1マス目にキャラクターが表示
追記(8/3)
前回までの問題点であった「サイコロ画面で出した値がマップページに戻っても反映されていない」は修正に成功し、1~6の出した値をマップに反映できるようになったが、7マス目以降の表示はうまくいかなかった。
結果としてはスタート画面→マップ画面(スタート位置)→さいころ画面(1~6を出す)→マップ画面(サイコロ画面で出した位置)→イベント判定→イベント発生(戦闘orアイテム入手)→マップ画面に戻る、までの統合は成功したが、歩いた歩数の累積がうまくいかず、常に1~6マス目の表示しかできず、修正が間に合わなかった。この修正ができればマップからの一連の統合が終わるので、もう少し修正を加えたい。
感想(伊東) 私はプログラミングが他のメンバーと比較すると得意ではないので、マップの作成を担当しました。プロトタイプはenchant.jsを使って比較的早めにできたのだが、他のモジュールとの統合に関しては、担当するはずだったメンバーがいなくなったのもあり、javascriptの知識を急いで集めることになったので、序盤からもっとjavascriptについて勉強すべきだったと感じている。
最終更新日:2018/08/03 15:33:43