2015年12月21日月曜日

今年最後のゼミ

今日は,今年最後のゼミです.前回に続いてゲームの作成です.前回は赤いボールを追加しました.まだ,他のボールとぶつかっても跳ね返りません.今日は,3つのボールの間で
  1. ぶつかったことを検出する
  2. ぶつかったときに跳ね返らせる
の2つを実現させます.ぶつかったことを検出するには関数collisionをコピーして,
  • バスケットボールと赤いボール
  • サッカーボールと赤いボール
の衝突を検出できるようにします.次に,ぶつかったときの反射です.たとえば,バスケットボールと赤いボールがぶつかったとき,それらが反射する関数をreflect関数をコピーして作成します.同様に,サッカーボールと赤いボールがぶつかったときにはそれらが反射する関数を関数reflectをコピーして作成します.
このようにして,まずは,3つのボールがぶつかったときの動きをプログラムします. それができたら,次は,得点です.バスケットボールが赤いボールにぶつかったら得点を1点減点します.最後に,ゲームオーバ―時にそれまで獲得した得点をゲームの延長時間として使うかどうかを選ばせます.延長回数には上限を設けたほうが良いかもしれません.
また,Ajaxを使って次の機能を加えます.
  • 獲得した得点をデータベースに書き込んだり読み込んで画面に表示したりする機能
  • データベースのテーブルには,チーム,プレイヤー,得点を書き込む
  • チーム別やプレイヤー別に得点順に得点を表示する
こうした機能を付加してチームを作って対戦する.

http://hustler307.softether.net/~mtanaka/game/bounce_ball_game4.php


2015年12月14日月曜日

ゲームを作ろう!

ここのところずっとゲーム作りをしている.最初はPHPの勉強をしていたが,せっかくだからということで,javascriptを用いて動きのあるホームページを作っていた.それが高じてとうとうゲームまで発展してしまった.こうして作ったゲームがこれ.

http://hustler307.softether.net/~mtanaka/game/bounce_ball_game3.php

なかなか良くできている.
そこで,このゲームを更に発展させて次のような機能をつけたい.
  1. コート中に障害物を作り,それにぶつかったら減点する
  2. ゲームオーバ―時,スコア(衝突回数)をゲーム延長時間として利用できるようにする.ただし,その時点で終了すればそのスコアがそのまま得点として与えられる
  3. 複数のプレイヤーでチームを作ってチーム間で得点を競うオンラインゲームにする
1については,障害物がボールのように動いているとなお面白いかもしれない.あるいは,障害物ではなく第3のボールにしても良いかもしれない.つまり,サッカーボールにぶつかれば得点がもらえ,第3のボールにぶつかると逆に減点するといったゲームにする.
2は,ゲームオーバ―時の得点よりもさらに得点を稼ぐためのオプションで,延長するかしないかはプレイヤーの自由.ただし,延長した場合,第3のボールにぶつかると減点されるので,ゲームオーバ―時の得点よりも下がる危険性がある.
また,延長回数は上限を設けたほうが良い.延長時間をその時点での得点にするか,それとも一定の時間(たとえば30秒位)にするかは検討の余地あり.
3についてはデータベースを作ってPHPのプログラムでチーム,プレイヤー,得点を書き込むようにする.そして,チームごとに得点を集計して順位を決める.この場合,同一のプレイヤーが複数回のゲームをした場合,どうするかについて検討する必要がある.そのまま加算するか,最後のプレーのみ加算するかなど.
こうしてできあがったゲームを3月の入学前事前学習で使ったらどうだろう.3年生が作ったゲームということで興味を持ってもらえるかもしれない.