2024 ソフトウェア設計及び演習用の班Wiki
24::gr05::情報交換
情報交換を行うページです。何かあれば色々追加していってください!
スケジュール
#04 5/10 ものと操作の洗い出し、JavaScript応用
#05 5/17 モジュール化、HTML応用、GitLab
#06 5/24 プロトタイプ作成
#07 5/31 プロトタイプ作成
#08 6/07 見直し
#09 6/14 中間発表
#10 6/21 モジュールの実装など
#11 6/28 モジュールの実装など
#12 7/05 統合テスト
#13 7/12 最終準備発表
#14 7/26 最終発表
スクリーンサイズ
フルスクリーンは933×1850です
https://web-designer.cman.jp/javascript_ref/window/size/
enchant.jsを使った例
2023年度の11班、おそらくリズムゲームです
11班のgithub
シーンごとにモジュール分けされているイメージです。
- setup.js
・setup.jsで"let game= new Game"のような最初の宣言を行っています。
・また、イメージを読み込んでおく"game.preload"もここで全部読み込んでしまっているようです。
・ちなみに、preloadは配列で読み込ませることができます。
- var ARRAY = {"a.png", "b.png"};
- preload(ARRAY);
・gameの定義時にはrootSceneという一つのシーンが出来るのですが、"game.onload = function(){}"という最初に実行される?関数内でgame.replacementを行っています。これにより、実質rootSceneというシーンを使わずにスキップすることが可能です。
・ちなみに、それぞれのシーン遷移では"title(game.status)"と2つのステータスを送っています。これが必要なのかはちょっと調査が必要です。
Gitlabでやり取りするコマンド
詳しくは→演習ページ
○ダウンロードする場合
- git pull
○新しいファイルやディレクトリを追加する場合
※pullをしてからの方が不具合が起こらないはず
- git add (ファイル名)
- git commit -m "(コメント)"
- git push
- ※git add . とすると一括で追加可能
○作成済みのファイルをアップロードする(更新する)場合
- git commit -a -m "(コメント)"
- git push
・アップロード後にGitlab側でファイルを整理することもできますが、その後は必ずgit pullをするようにしましょう。
・自分の端末のファイル構造とGitlabの構造が違う場合、エラーが起こるようです。
・git pull またはgit pushの際、学籍番号とパスワードを求められます。"Authentication" という単語が出てきたら、パスワードを打ち間違えている可能性が高いです。
○現在の追加状況を確認したい場合
- git status
○うまく行かない場合(リセット)
・以下の方法で現在のGitLabと強制的に合わせることができますが、この際git pushしていないデータは削除または変更前に戻される事になります。保存されないため、一度別の場所に退避させてから実行すると良いでしょう。
(他にも解決方法はあります)
1) リモートの最新を取ってきておいて・・ $ git fetch origin master
2) ローカルのmasterを、リモート追跡のmasterに強制的に合わせる! $ git reset --hard origin/master
よく使いそうな関数
○シーン遷移(シーン名がscene、ゲーム名がgame、次のシーンの変数名がnextのとき)
- scene.replaceScene(next(game));
・gameを渡さないと次のシーンにうまくつながらないため注意
Googleフォントを追加する
Googleのフォント一覧
GoogleのようなWEBフォントは、インストールせずともHTML用のコードをコピーすることで使うことができます。
○使い方
・使いたいフォントを一覧からクリック
・右上のGet fontをクリック
・<> Get embed codeをクリック
・HTMLの<link>を選び、書かれてあるコードをHTMLファイルにコピー&ペースト
・enchant.jsならLabel内でフォントを指定すれば使えるはず
○例えば、DotGothic16はHTMLファイルに以下を記入すれば準備完了です。
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DotGothic16&display=swap" rel="stylesheet">
とりあえずエンターキーで進める場合のコード(中間発表用)
scene.addEventListener('touchend', function(){
if(game.input.e)
scene.replaceScene(game)
})
遅延(○秒後に関数を実行)
授業ページJavaScript応用編にも書いてあります。
setTimeout(関数名,ミリ秒) | ミリ秒後に関数を1回だけ呼び出す |
clearTimeout(timerId1) | setTimeoutの処理を停止する.timerId1はsetTimeoutの戻り値 |
setInterval(関数名,ミリ秒) | ミリ秒間隔で関数を定期的に呼び出す |
clearInterval(timerId2) | setIntervalの処理を停止する.timerId2はsetIntervalの戻り値 |
・上の「関数名」と書いてある部分には処理を関数の形で入れます。
代入など関数を使わない処理も、以下のように関数の形で書かないと動かない事があります。
×:setTimeout(counter++, 500);
○:setTimeout(function(){counter++}, 500);
クラスの書き方
以下のように書きます。sprite型も同様です。
新しく追加する変数(下の例ではvalue)も、letやconstなどの変数宣言をせず、そのまま
- this.value
のように書くことができます。
MyLabel = Class.create(Label,{ initialize:function(x, y, option){ //Label型を呼び出す Label.call(this, x, y); //ここを変更しました(6/21) this.x = x; this.y = y; this.font = "50px Dotgothic16"; this.color = "rgb(0, 255, 0)"; this.a = "strings"; //変数型letなどを書かなくてよい this.text; if(option === "random"){ //もし"random"と指定されたら1~10の乱数を生成 this.value = Math.floor(Math.random()*10); }else{ //指定が無ければ5とする this.value = 5; } } }); //クラスを使う クラス名の前に"new"とつける let t = new MyLabel(100, 400, "random"); t.text = t.value; scene.addChild(t);
最終更新日:2024/06/21 19:35:29