cocos2d-x

こんにちは、インターン生の宮本です。

今回は、手札と場の札を合わせてとる処理と山札から引く処理を作成し、
かろうじてプレイできるようになりました。

やはり、実際に動いているのが見れると、より強く作っている実感があります。

また、手札を出し切った後、もう一度タッチすると最初からできるようにしました。

そろそろコードが多くなり、メソッドの実装をすぐに確認するのが難しくなってきました。

constやstaticほどではありませんが今回はコールバック関数に悩まされました。何か所かで使用していますが、未だによくわかっていません。よくわからないままでも最低限は使えてしまいます。

https://qiita.com/keroxp/items/ba15b1ab485b1b11eceb

こちらのサイトを参考にして、
ラムダ式を使ってみようとしましたが、まともに扱うことができませんでした。

今は、完成させることが先決であるため、ラムダ式についてはインターンが終わった後にじっくりと理解を深めていきたいと思っています。

札のオブジェクトを動かすために変数で管理しようとしました。
しかし、タグを使うことでゲーム内のオブジェクトを識別し取得できると知り、さっそく通し番号でタグをつけ、タグで管理することができるようになりました。これで変数を一つ使わずに済みます。

AndroidStudioにも徐々に慣れてきましたが、ほとんどすべての機能を使いこなせていません、オートフォーマットとコメントアウト・デバッグ周りのショートカットは使えるようになりました。まだまだ、便利な機能があるので、そちらも徐々に使いこなせるようになりたいと思います。

C++についてほとんど何も知りませんでしたが、まだ若干時間があるうちに動くところまでたどり着くことができてよかったです。
のこり2日で、ちゃんとこいこいとして遊べるものが完成できるよう頑張ります。

次回は、役の判定をゲーム内に実装し、あがれるようにしたいと思います。

興味を持たれた方はお気軽にお問い合わせください。

アプリの微調整と完成(おすすめバンドランキング少々)

こんにちは!エム・ビー・エーインターナショナル株式会社インターン生の岡田優太です。

今回で最終日の5日目になります。今日は一枚のHTMLファイルの中にcssとJavaScriptを織り込む作業をして一つのファイルにするところから始めました。結果的にはサインインのHTMLファイルとブロック崩しのHTMLファイルの2つにまとまり、分かりやすい成果物になったと思います。細部の調整はブロックの数から、ボールの速さ等を変え、背景画像のうさぎの数も若干変えました。また、5日間は思ったよりも相当短く、作業が制限されていたため、クオリティーは良いとは言えませんが、とてもためになるインターンシップだと思います。私は今大学2年生ですが、3年生のインターンシップでも募集していたらまた受けたいと思います。今はまだ知識や技術等、まだまだ未熟ではありますが、これから就職に向けて、プログラミング作成とWebの勉強も続けていきたいです。私事ではございますが、神奈川の本厚木に遊びに来た際は、ぜひ、私のバイトしているビックエコーにも遊びに来て下さい。また、呼んでくれたらすぐに駆け付けるのでこれからも宜しくお願い致します。

気難しい話はここまでにして、昨日の続きのバンド紹介をしていきたいと思います。まず最初に、sumikaです。sumikaは私が高校生のころ、ZIPを見て知り、それからはsumikaの曲をよく聞いています。ボーカルの片岡健太さんが9月30日誕生日で9月に関連しているため、お勧めさせてもらいました!バンド名の由来は「住処」から。「本当に好きなものを、好きな人に向けて、たくさん渡せるチームを作れるように」という思いを込めてつけられた。ミニアルバム「「I co Y」」は「憩い」と「I care of You」のダブルミーニング(ウィキペディア引用)だそうです。由来が素晴らしいですね。

次に最近私が聞いているミュージシャンの10人を紹介して終わろうと思います。まず、Official髭男dism、Mrs.GREENAPPLE、Kng Gnuの3組は一番よく聞いていると思います。次にBurnout Syndromes、BLUE ENCOUNT、女王蜂も最近は比較的よく聞いていると思います。後はMy hair is bad、sumika、THE ORAL CIGARETTES、ラップだったらt-aceをたまに聞いています。どの組も個性的な部分はありますが、いい曲ばかりなのでぜひ聞いてみてください。

興味を持たれた方はお気軽にお問い合わせください。

オープンデータ活用サービス開発日誌~05~

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。
 5回目にして、オープンデータを利用する時に何が辛いのか、理解してしまった気分です。どういうことかを今回のテーマにしたいと思います。

 さっそく何が辛いのかという話でございますが、データのフォーマットが違うのです。具体的に言うと、現在利用しているAED設置施設についてのCSVファイル、東京都内でも区ごとにフォーマットが違うのです。例えば、ある区では施設に通し番号を振り、その次に施設名、住所のデータというような順番なのですが、別の区では施設の大分類、小分類の次に施設名、郵便番号、住所・・・という順番です。

 順番が違うと何が困るのか、という話なのですが、端的に言えば複数データをまとめることが難しくなります。これが揃っていれば、例えばA区とB区のデータをまとめたければ、IDの数値さえ増やせばB区のデータをA区のデータの最後に加えるだけで良かったのですが、フォーマットが違うのでは話は別です。それこそ、データを手作業で編集でもすれば、ある程度整ったデータにすることはできます。しかし、これは非常に時間と手間を求められるのであまりやりたくないです。前回触れた改行文字の問題は、仕方なく手作業でフォーマットを整えたのですが、正直もうやりたくないです。

 さて、今回は以前作ったプロトタイプの改良、機能充実にあたりました。結果として、エンターキーでのsubmitの無効化、CSVファイルの変更、それに伴う修正が完了しました。これまでは世田谷区のAED設置場所のデータを利用していましたが、今回、東京都福祉保険局が提供している、だれでもトイレ設置施設のデータを利用したバージョンも作成しました。理由は、複数エリアのAED設置データの統合に難しさを感じたため、都内全体についてのデータを利用して、UIを使いやすくする方針が良いと考えたためです。今後はだれでもトイレのデータを使ったバージョンを中心に開発を進めていき、必要な情報を見やすく提供できるサービスを目標にします。
 
興味を持たれた方はお気軽にお問い合わせください。

10日間でAndroidゲームネイティブ制作に挑戦(UI編)

 こんにちは。星野耀司です。

 前回は画面をタッチすることができるようになるまでの話をしましたね。
今回は画像の移動がどうなったかとUIについての話をしようと思います。

 まず画像の移動についてですが、とても面倒くさい方法で、貝が見切れることはあれど画面外に出ることはほぼ無いようになりました。
簡単に言うと最初にやったことをほぼ繰り返しているようなものです。
様々な座標の表示方法があるのでどれを使えばいいかわからなくなったため、その時の座標をX、Y単位で変数に格納できるものがありました。
getTranslationというものです。
これを使ってまず最初にランダムな位置に配置する前の座標を保存します。
そしてその後前にやったランダム配置を実行します。
ここからタッチをされた場合にSetTranslationというものを使い、変数に格納した座標に一旦画像を移動させます。その後ランダム配置の時と同じ値、変数を使いまた配置するというものです。
もし私と同じように調べ方が下手、調べたけどこのやり方よく分からないという人は、色々考えて、分かっているものだけでどうやってやりたいことができるかを考えたほうがいいかもしれませんね。
それでも知識が不足することは多々ありますが。

 次はUIの話ですね。そもそも私の作っているゲームに必要なUIは二つだけです。スコアと制限時間です。
スコアに関しては、何度もやったxmlからのid取得による方法で弄ることができたため、あらかじめスコアの数字を変数化しておいて、貝をタップした時の処理の最初に変数に数字を足して、xmlに反映させるだけで済みました。
問題は制限時間でした。
timerというものを使うのですが様々な種類と方法があったためどれが適切な方法かで悩みました。
私が使った方法は、CountDownTimerを使って数字を数えて、その数字がゼロになったら処理を終わらせるというものでした。
CountDownTimerは文字通りカウントダウンをしてくれるものなのですが、カウントする時間だけでなく、カウントダウンをどのくらいの周期で行うかのインターバルを設定することもできるものでした。
私は普通にカウントしたかっただけなので使いませんでしたが、どこかで役に立つかもしれませんね。
CountDownTimerに関しては詳しいことは各自で調べて頂けると幸いです。

さて、これでゲームに必要そうな部分は殆ど揃ったといっていいと思います。
あまり時間はありませんが、ここからはバグやエラー取りをして、追加要素やリザルト画面、ストーリーなどに力を入れられたらと思っています。
ただ、もう少しxmlについては勉強をしないとテキスト等の配置がとてもめんどくさいです。うまく配置できる方法を模索したいですね。

 では次回はなにか変化があったところがあればそれについて話したいと思います。
なければここからの構想や、今回のゲームで諦めた点などを話していきたいと思います。

ではまた次回

興味を持たれた方はお気軽にお問い合わせください。

cocos2d-x

こんにちは、未だにAndroidStudioに慣れないインターン生の宮本です。

今回は、手札をタップして選択する処理や、山札などのベクター設定、指定の札が場にあるか、などの処理を作成しました。

今回の作業は、ゲームの内部ばかりだったため、目に見える成果がなかなか出ずどのくらい進んでいるのか見当もつきません。

そのため今回は、使用中のベクターについて紹介しようと思います。
C++のプログラム内で配列を扱うときは、多くの場合コンテナのベクターかリストを使うことになると思います。
C言語では配列を使用する際、基本的には最初に使用する領域を全て確保しておかないといけませんが、これらはプログラム中で必要に応じてメモリを確保してくれます。
また、対応するライブラリをインクルードする必要があります。

ベクターとリストは似ていますが、構造が違うため得意なこと(処理が速い機能)が違います。

ベクターは添え字で指定するアクセス(ランダムアクセス)が高速で末尾以外への要素の追加がやや遅く、
リストは途中の項目の追加や削除が高速で添え字指定でのアクセスはできず先頭からたどっていくしかありません。

また、ベクターは動的配列と呼ばれるほど構造が配列と似ていて配列の延長のような形で使用できるため、CからC++を始めた多くの人が最初に扱うコンテナだと思います。

ベクターを使用するときは
#include
を最初に記述し、
std::vector<型名> 変数名;
で宣言します。

型名の部分はクラスでも大丈夫です。

ベクターに値を追加するときは、基本push_backメソッドで末尾に追加します。
値を削除するときも同様に、pop_backメソッドで末尾から削除します。
メソッド名の由来はデータ構造のスタックにおける項目の追加と削除だと思います。
もちろん任意の場所に対して挿入・削除することも可能です。ただし、任意の場所への挿入・削除は、空いた項目分を詰める処理が入るため要素数が多いほど時間がかかります。

配列と同じように扱えるため、ベクターはC++の経験がほとんどない私でも簡単に扱うことができました。

10日間もあっという間であと3日しかありませんが、ゲームを完成させられるよう頑張りたいと思います。

次回こそ、動く状態にしたいと思っています。

興味を持たれた方はお気軽にお問い合わせください。

7日でゲームを作ろう!7

こんにちは、インターンシップ生の松本です。前回はクリア、ゲームオーバー、タイトルの画面とステージの作成をやっていきました。

今回は最後になるので、全体の確認と今までできなかったことに再挑戦したいと思います。

今回作ってきたゲームの流れは、

1,向かってくる燃えるスイカたちを避け

2,白いゴールラインまで行き、

3,巨大スイカを破壊してクリア

といった感じです。

実際にやってみて、流れとしてはちゃんと正確に動きました。

ゲームとしてちゃんと面白くなっているかどうかは少し難しいところですが...

次は、できなかったことを調べてもう一度やり直してみようと思います。

今までできなかったことは、

・スイカを実際に割ること

・アニメーションに合わせて攻撃判定をつけること

の二つです。

いろいろな方法を調べてみたところ、スイカを割ることができそうな方法を見つけました。その方法は”Distructible Mesh”という機能を使ったものです。これはUE4のプラグインにあり、有効にすると触れるといくつかの破片になって壊れるようなものを作ることができます。

まず最初にプラグインを有効にします。セッティングのプラグインというところから設定することができます。有効にしたら”今すぐ再起動”と下に出ているのでそれをクリックして再起動します。準備はこれで完了です。

あとは、動きをさせたいスケルタルメッシュを右クリックしてCreate Destructible Meshをクリックすることで新しくDestructible Meshができ、そのエディタ画面が開きます。そしてEnable Impact Damageにチェックを入れると触れたときに破壊されていくつかの破片に分かれるようになります。

参考元:http://historia.co.jp/archives/8021/

攻撃判定についてはなかなかいい方法が見つからなかった為、今のままでいきます。

さて今回までインターンシップでの7日間で作るゲーム作成を記事にしていきましたが、いかがでしたでしょうか。拙い文章で分かりにくいところばかりだったと思いますが、読んでいただいた方、動画を見ていただいた方、ありがとうございます。

何とかゲームも完成とすることができました。自分の理解力や応用力が至らず、諦めてしまったことも多々ありましたが、ここまで作ることができてうれしく思っています。これからまたゲームを作るとき、今回のインターンシップで身に着けたことを思いだし、その時は後悔することのないように作っていきたいと思います。

興味を持たれた方はお気軽にお問い合わせください。

アプリの微調整と変更(アイビーカラーとバンド紹介少々)

こんにちは!

こんにちは!エム・ビー・エーインターナショナル株式会社インターン生の岡田優太です。

今回は4日目になります。検索フォームを作っていたのですが、なかなかうまくいかず、サインインの画面から飛ばすように設定を変えました!実はそのサインインの画面はフェイクで名前などを入れても特に意味はなく、ココと書いてあるボタンを押すと、ブロック崩しの画面になるようになっています。後は背景を十五夜のウサギに変え、(イラストやの画像です)見栄えを良くしたつもりです。

明日はいよいよ最終日なので、細部に注目してプログラミング作成を行い、悔いの内容で終われたらいいなと思います。また、私は副業でpythonを使ったブログ作成をしたいと思っていましたが、記事、動画の作成がいかに大変かわかったので、もっとしっかり知識を付けてから、副業のほうにも力を入れていきたいと思います。

ところで、明日で記事、動画作成が終わりますが、私的には比較的自由に作れたと感じます。とはいってもテーマが9月なのに様々な歌手を無理やり紹介しているので多少反省する部分ではあります。ですが、明日までは色んな人を紹介できればと思っています。そうしましたら、本日紹介したい方々が「アイビーカラー」です。アイビーカラーというグループはあまりメジャーではないですが、私がYouTubeを見ているとき、偶然発見したバンドです。どこが9月についてなのかというとこれまた9月に、最初のミニアルバム「君が思い出になる頃」を発売したというところです。一応9月と関係あるのでぜひ、気になったら調べてみてください。さらに、終わりが近いので明日も合わせ、合計二回に分けて最近聞いているバンドを紹介したいと思います。上げだしたらきりがないので、軽く紹介する程度にしておきます。まず、Mrs.GREENAPPLEです。(以下、ミセス)ミセスは、炎炎の消防隊(えんえんのしょうぼうたい)というアニメの主題歌を担当し、「lovin’」という歌も最近YouTubeで公開されていたので紹介しました。ミセスは誰にでも人気があると思うので、知っている人でももう一度聞いてみてください。次に、Official髭男dismです。(以下、髭男)髭男は最近ますます人気が出てきて、甲子園の主題歌も担当していたので、今きているバンドの一つです。そろそろ長くなるので明日にしますが、まだまだ紹介したいバンドがたくさんあります。なので皆さんもお気に入りのバンドをさがしてみてはいかかでしょうか。

興味を持たれた方はお気軽にお問い合わせください。

オープンデータ活用サービス開発日誌~04~

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。

 折り返しが見えてきた4回目は、やっと進捗らしい進捗がご報告できそうです。今回は進捗報告と今後の課題や実装したい機能をまとめて開発日誌としたい所存です。

 さて、前回決定できたのは、「AEDの設置施設や多目的トイレの設置施設のデータを利用して、なんらかのWEBサービスを作ろう」という大まかなテーマです。今回はこの方針に基づいて、プロトタイプを制作しました。このプロトタイプでは、世田谷区が提供するAED設置施設のデータについて、施設名に特定の文字列を含むデータセットを取り出す機能を実装しました。使用言語はHTMLとJavaScriptです。制作したとはいえプロトタイプなので、使い勝手は悪いです。施設名検索しかできず、データも文字列で表示されるので、見栄えが悪いです。この点は今後改良をしたいところです。

 今回の作業中に苦戦したのは、CSVデータの取り扱いです。改行をデータ列の区切りとして利用していたのですが、想定外の位置に開業文字が来ることがあり、この部分の対策は未完成です。手動で前処理するのは出来る限りやりたくないです。

 今後追加したい機能は、より詳細な検索機能とソート機能、最終的に達成したいのは、複数の都市のデータから、AEDと多目的トイレを同じページから検索できるようにしたいです。自分の技量を顧みずに理想を言えば、緯度と経度のデータを利用して、地図上に表示したいものです。

 前回は一切手を付けられなかった実装に、今回はある程度取り組めたのは中々良い滑り出しではないでしょうか。不安な点を挙げると、実装にかまけて要件定義が甘いことでしょうか。文字に起こしてみると、絶対に失敗しそうな開発やってるなぁとしみじみしております。

 次回の課題としては、追加機能や可読性を向上したバージョン2を開発することに加えて、要件定義をしっかり行うことですかね。

興味を持たれた方はお気軽にお問い合わせください。

10日間でAndroidゲームネイティブ制作に挑戦(画像タッチ編)

 こんにちは。星野耀司です。

 さて前回は貝を配置することができました。なので今回は貝をタッチしたら別の場所にワープさせたいと思います。
UIが完成したら、これを利用してスコア等も作ろうと思います。
完全にアクションゲームではなくなりそうですね。

 私がまず最初に画像タッチを認識させる方法として考えたものは、座標を記録して、その座標をクリックしたら画像を移動させるということでした。

「画面上の座標が分かれば判定は簡単だ!」

そう思ったのですが…。
まずどれが画面上の座標なのかわかりませんでした。
xmlを見たらwidth、height、marginEnd、marginRight,_marginBottom等、様々なものがありました。
widthは横、height縦だとしても、他のものについてはまず文字がよく分からない上、調べても直接画像の座標を取得できそうなものではありませんでした。
widthやheightは、どこにいても数字が変わらなかったため、画像の大きさであることが分かりました。

 座標取得のために何か別の変数があるのか、それともさっきのEnd、Right、Bottomの中で計算しなければならないのか、など様々なことを調べてみました。
xやyで表現されているととても分かりやすかったのですがね…。
おそらくxmlに慣れている人はわかると思います。
しかしx、y とか座標とかどうでもよくなるとんでもなく便利な変数がありました。
setOnClickListener
View.OnClickListener()

いやunity等には同じようなのがありましたがまさかこっちにもこんなものがあるとは思いませんでした。しかもこれはImageView自体にクリックイベントリックイベントを追加するというものなのでした。
これのいいところは当たり判定などをあまり気にしなくてよくなるところです。
なぜなら画像自体につけているから。
凝った当たり判定を付けたいのなら話は別ですが、今の私にとっては十分なものでした。
1~2時間座標関連で調べ続けていた私の努力はどこへ。

ということで今回はクリックイベントを追加することに成功しました。
しかし、これができたからと言って簡単にもう終わりというものではありませんでした。
画像を画面内に移動させなければならないのです。
いやいや前回移動させる術は学んだじゃないですか。という人もいるかと思いますが思い出してみてください。
setXやsetYは現在の画像の位置に影響されて画像を移動させるのです。
画像は前調整した位置から動いていますし、動いた位置はランダムです。
要するに画面外に簡単に出ます。setX、Yでは制御不可です。
…完全に前回楽したツケが回ってきているような気がします。
というわけで今度は画面外に出ないように移動させる術を探してこようと思います。
それが見つかったら前回のところも修正しなければならないかもしれませんね。
見つかったら次回はそれを紹介しようと思います。
今回はいい感じの経験を身に着けることができたと思いますね。

ではまた次回

興味を持たれた方はお気軽にお問い合わせください。

Cocos2d-x 製作開始

こんにちは、インターン生の宮本です。

折り返しも過ぎてしまいましたが、やっと制作に入ることができました。

テーマは夏で、どんなかかわりでもいいから、何か夏に関係のあるものです。

私はこいこいを作ろうと思っています。

とりあえず、menuitemimageに対してもactionオブジェクトを適用できることを確認しました。

札の情報のみを持つクラスを作りました。
引数で番号を指定しその札の画像を返すメソッドなど入れておく予定です。

ビットマスクを使い成立している役を探し返すメソッドを作り。
マスクに使う情報を格納しようと静的な配列を作るときに詰まりました。

staticだけでは初期化ができず。
staticを付けなければクラス内のstatic関数で使用できないためです。

staticを付けてビルドした場合
non-const static data member must be initialized out of line
とエラーが出ます
goolgle翻訳によると
constでない静的データ変数はライン外で初期化する必要があるという意味です。

そこで、const staticで試してみると
クラス内で初期化するには ‘constexpr’指定子が必要
というようなエラーが出ました。

そこで、constexpr const static で試してみると。
linker command failed with exit code 1 (use -v to see invocation)
とでます
リンカが終了コード1で失敗しました
ということだそうです。

色々調べてみましたが解決策が全くわかりませんでした。
クラス内に含めることはあきらめ、クラス外に宣言することにしました。
気が付いたら2時間以上ここで詰まってしまっていたようで、他のことはあまりできていません。
この部分は、ゲームがプレイできるレベルまで完成して時間があったらリベンジしたいと思います。
次回は、ゲーム本体の処理を作りたいと思います。

興味を持たれた方はお気軽にお問い合わせください。