Skip to content

2021AIT-OOP2-G03/OOP2-last-issue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OOP2-last-issue

プロトタイプ,ファイルツリー,ウィジェットツリー,プレイスクリーンの仕様の概要

紙媒体にまとめました。グループLINEで確認してください。

【変更点】

  • 紙媒体のツリー構造 json → SQLite

GUIフレームワーク(Kivy)のインストール方法

$ brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

$ pip install -I Cython==0.23
$ USE_OSX_FRAMEWORKS=0 pip install kivy

全体の連絡事項

  • 分からないことがあれば、個人チャットでもグループチャットでも構いませんので松井等に相談してください。日時の都合も合えば、LINE通話等も受け付けます。
  • 早めに仕事が終わってしまった、仕事量が少ない、特にやることがない等の人が出てしまいましたら、適宜その人に仕事を分散させる等も行う場合があります。
  • 予定が決まってて忙しい等の旨がありましたら、僕にスケジュール表等を教えてください。それに応じて仕事の割り振りは可能な限り調整します。

1回目に割り振る仕事

スコアを引数にランキング(保存手法: SQLite)に引き渡し、ランキングの更新を行うプログラムを作成する。(氏家君,筒井君)

  • ホーム画面には各曲の各難易度について、3位までの情報が出力されるようにしてください。
  • 基盤システム班が実装してくれるゲームのスコアを引数にランキングを更新してください。ソートを使う等が挙げられます。

単体の長方形オブジェクトが流れ落ちるプログラムを作成する。(櫻本君)

  • kivyでサポートされているClock.schedule_intervalを使って、適当なフレーム周期と1フレームごとに移動する適当なピクセル数を定め、物体が縦に落下するプログラムを作成してください。
  • easy,normalでは4レーン、hardでは6レーン必要になっております。それに応じて長方形のx座標及び横幅を調整するプログラムにしてください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

2回目に割り振る仕事

nレーン×m行(n=4or6, m=曲の長さ)分の譜面が流れ落ちるプログラムを作成する。(和田さん)

  • 櫻本君のプログラムを継承してもらいます。
  • nレーン並んでいて、そこに複数の長方形オブジェクトが並列している場合の落下をプログラムしてください。
  • 次に、m行のレーンについて、適当に等間隔の間をあけ、適当なフレーム周期と1フレームごとに移動する適当なピクセル数を定め、物体が縦に連続的に落下するプログラムを作成してください。
  • 以上を以て、行列の場合の譜面を作成してください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

3回目に割り振る仕事

譜面を作成する。(内木君)

  • 和田さんのプログラムを継承してもらいます。
  • 全部の曲の全部の難易度の譜面を作成する必要はありません。
  • easy,normalでは4レーン、hardでは6レーンで譜面を書いて貰います。
  • レーンの増築に関するUI(game.kv)の変更に関しても実装してください。
  • ゲーム画面を開いたら、指定された曲を流すプログラムを追加してください。
  • 曲に合わせて、譜面の縦間隔、フレーム周期、1フレームごとに移動するピクセル数を調節してください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

流れ落ちる譜面について、当たり判定のプログラムを作成する。(高村君)

  • 和田さんのプログラムを継承してもらいます。
  • 断続的に流れ落ちる譜面について、ヒットさせたい適当なy座標を決定し、タイミングよく特定のキーボードを押した時、真のy座標とヒットさせた瞬間の音符のy座標の距離差又は時間差(どちらでも結構です)を決め、その差の大きさごとに、Excellent、Good、Bad、Missのどれかを+1加算し、全体のスコアを加算してください。(キーボードについて、4レーンならdfjk,6レーンならsdfjklで反応させると良いかと思います。レーン数の判別の実装はお任せします。)
  • スルーされた音に関しては、次の音が来るまでのどこか都合の良いタイミングでMiss判定と見なすようにしてください。
  • 流れ落ちる1個の音符に対して高速連打を仕掛けることで多重に反応してしまわないよう、一度当たり判定を処理された音に関しては二度と処理されないようにしてください。(例えば、1行目の音の処理されるタイミングが終わったら2行目の音に判定をシフトする等の処理で実装をするとできるかと思います。)
  • あまりに早いタイミングでキーを押された場合には、当たり判定が機能しないようにしてください。(一定以内の距離に近づいてから当たり判定が機能するようにしてください。)
  • 全部の行の音を判定し終えたら、データベース班の作成したスコア更新プログラムの関数に全体のスコアを引数として投げておいてください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

4回目に割り振る仕事

ゲームを終了するプログラムを作成し、スコアを引数にランキングを更新するプログラムを作成する。(筒井君,和田さん)

  • 高村君、内木君のプログラムを継承してもらいます。
  • 以下の条件を満たすことをゲーム終了と定義したいと思います。
    • ノーツの二元配列がすべて初期状態に戻っていること(二限配列のRectangleオブジェクトたちについて、posとsizeの情報にmove_yが入ってなければ問題ありません。)
    • BGMが止まっていること(sound.play()と同様、確かsound.stop()というメソッドも存在していたはずです。)
    • クロック関数が止まっていること(Clock.schesule_intervalをインスタンス化し、そこからcancelメソッドを呼び起こせたはずです。)
    • ゲーム終了後にダイアログが表示されること(そのダイアログにてハイスコア関数を呼び出し、DB参照からスコアを更新してランクインしたかを表示してください)
  • ダイアログの終了からHomeScreenへと遷移し、再びゲームが遊べたらOKです。
  • ハイスコア関数はPlayScreenクラスの中で書くことを推奨します。
  • ハイスコア関数に渡す引数は、曲名と曲の難易度、スコアです。
  • ゲーム終了後、HomeScreenにてデータが書き換わっていることを確認してください。遷移しただけではデータは変わっていないが、そこでボタンを押し直せば更新されるという状態でも良しとします。
  • かなり条件が多いですので、具体的な仕事分担は担当者の間でよく相談し合ってください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

譜面作成を行う(櫻本君,内木君,高村君)

  • 三回目の内木君の仕事にて、各曲とその難易度ごとに譜面が調整されてない部分を調整していただきます。
  • ノーツのテンポが音楽に合っていること
  • ノーツの縦間隔が適切に空いていること
  • 譜面がある程度仕上がっていること
  • 以上の3点を調整の定義とします。内木君の分のコードの成果により、music_list.pyから各変数の値を変更するだけでUIの変更が反映されるようになっているはずです。
  • 時間が足りなければ、全部の曲及びその難易度の譜面作成は行わなくても大丈夫です。発表分に必要な手順さえ守れたら結構です。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

UIの不具合の改善,アプリ内で発生するバグを修正する(氏家君)

  • ノーツの横幅を固定幅(200)からウィンドウサイズ(Window.size[0]/(2*len(melody)))に合わせるよう変更してください。
  • HomeScreenにて、難易度がデフォルトが何も設定されてない状態です。このままゲームを開始するとゲームが落ちるバグが発生しますので、そこに初期値を与えるか例外処理を書くなどの処置を取ってバグを解消してください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

おまけで実装できたら嬉しいこと

ゲーム画面の装飾などを行う。(未定)

  • 基本的にここの処理はバージョンアップとして実装するものですので、難しそうであれば変更なしでも結構です。
  • 音符の長方形オブジェクトの色を変更したり、画像に変更する等に変更してください。
  • PlayScreenのレイアウトに改善点があれば、各ウィジェットの幅などを修正してもらっても構いません。
  • ゲームの背景を画像にしたりアニメーションにする等の変更をしてください。
  • より見た目の良いフォントがありましたら、それに差し替えてもらっても構いません。(日本語に対応した.ttfをネットで探せば出てくるかと思います。)
  • その他、見た目が悪ければ各ラベルやボタン等の色は変更してもらっても構いません。
  • 余裕があればで結構ですが、上から下に流れる実装をペーパーの仕様書より奥から手間に流すUIに変更してもらうとより良いデザインになります。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

Android APKへの出力。(未定)

  • この仕事はできなくても十分です。
  • 以下のソースを参考にしてください。現代の技術では、VirtualBoxやDockerを使わずともGoogle ColabでAPK出力が可能です。個人的にはこのやり方を推奨します。  https://towardsdatascience.com/3-ways-to-convert-python-app-into-apk-77f4c9cd55af
  • 当たり判定プログラムの改変が必要です。キーボードダウンではなく、画面へのタップによって当たり判定する必要性があります。まずはその実装を行ってから出力してください。
  • 些細なことでも構いませんので、困ったことがありましたら気軽に松井に相談してください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages