スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

配列に決まった範囲の値を重複なしでランダムにきっちり配置する方法[Java]

icon240.png

僕は、ナンバーズ アタック!っていう、脳トレ系パズルアプリをAndroidアプリとして公開してるんだけど(詳細はこっち)、要は、NxNの格子状のパネルにランダムに数字が表示されて、それを1から順番にタップして、すべてタップするまでの時間を競うっていう、よくあるやつ(僕のアプリの場合はオプションが豊富)。

numbers_attack_help00.png

でそれほど難しい話ではないけど、ある人に、グリッドに番号をランダムに配置するアルゴリズムがわかんないから、教えてほしいって言われたのね。

これって、つまりは配列(リスト)に決まった範囲の値をその値の個数分、重複なしできっちり配置するアルゴリズムってことになる。このアルゴリズムにおいてのポイントは

・重複してはいけない
・決まった範囲の値をすべて使わなければならない


一見難しそうに感じるかもしれないが、この2つのポイントを満たさなければならないアルゴリズムは言い換えれば、たとえば1から25(5x5)までの値の範囲であれば、1から25までの値を順番に並べ、その並びをばらばら(ランダム)にするということだ。なので、とりあえず1から25までの値を順番に並べてみる。
List<Integer> numberList = new ArrayList<Integer>();

for(int i = 0 ; i < 5 * 5 ; i++){
numberList.add(i + 1);
}

あとは、その並びをランダムな並びにしてしまえばいい。Javaの場合、Collections.shuffle()を使えば簡単にやってくれる。
Collections.shuffle(numberList, new Random());

for (Integer integer : numberList) {
System.out.print(integer + ", ");
}

これで終わり。あとはリストの頭から順番に値を取り出し、パネルに設定していけばいいだけ。

iPhoneでHOMEを整理する場合はiTunesを使うべし

僕もiPhone持ってるけど、アプリは2ページに収まるくらいしか入っていない(もちろんフォルダわけしてあるのもあるが)から、あんまりHOMEやアプリの整理を一生懸命したことがないんで、ぜんぜん知らんかったけど、PCでiTunesを使えば、HOMEの整理が簡単にできるみたい。

詳しくは↓
http://www.iphone-girl.jp/2014/04/349533/

アプリ1個1個だけでなく、ページの入れ替えや挿入が簡単にできるようだ。僕ももしHOMEのページが増えて、iPhone上での整理が大変になったら、iTunesを試してみようと思う。

Cocos2d-x 3.0をつかってAndroid/iOSで2Dゲームをつくる

そろそろ2Dゲームとかもまともに作れないといけないなと思い、Android/iOSで、今、主流となっている2D用のフレームワークを調べてみると、Cocos2d-xが利用されることが多くなってきていることがわかったので、Cocos2d-xを使う方法を調べてみたのよ。

default_download.jpg
で、どうやら、つい最近Cocos2d-x3.0finalがリリースされたようで、調べてみると2.x系からだいぶ使い勝手が変わったみたいだ。日本語で解説しているサイトもあまりなかったので、とりあえず Android向けの環境を整えて、サンプルを実行するところまでを書いてみた。


Cocos2d-xとは

Cocos2d-xはiOS用のCocos2dというオープンソースの2Dゲーム用のフレームワークをもとにC++で書かれたマルチプラットフォームなフレームワーク。Android、iOSはもちろん、Windows、Linuxなど、あらゆるプラットフォームに対応している、ということだ。


開発環境を整える

まずAndroid向けの開発環境を整える。Windowsで、Android SDK+Eclipse+ADTの環境が整っている前提に進めていくからね。
Androidの基本開発環境以外に、必要なものは以下のものが必要
・Android NDK
・Python
・Cocos2d-x 3.0


https://developer.android.com/tools/sdk/ndk/index.html
上記サイトから自分の環境にあったものをダウンロード。今回はandroid-ndk-r9dを使用した。解凍して、適当なディレクトリに展開してくれ。本記事ではCドライブ直下に展開している。


http://python.org/download/
Pythonは、Cocos2d-xのセットアップやCocos2d-x用のプロジェクトの生成など自動で行うためのスクリプトを実装するために必要だ。2.x系のほうをダウンロードして、インストール。本記事ではC:\Python27。

あと、各環境に合わせてパスを通しておくこと。
Windowsであれば、環境変数のPathにC:\Python27を追加しておく。



http://www.cocos2d-x.org/downloadからCocos2d-x 3.0をダウンロード。Android NDKと同様、解凍して、適当なディレクトリに展開してくれ、本記事ではCドライブ直下に展開している。

展開したディレクトリ直下にsetup.pyというPythonのスクリプトファイルがあるので、コマンドプロンプトからsetup.pyを実行。これを実行することで、一通りの設定を行ってくれるの楽チンだ。

C:\Users\basara>cd c:\cocos2d-x-3.0

c:\cocos2d-x-3.0>setup.py

実行するとNDK_ROOT(Android NDKの場所)とANDROID_SDK_ROOT(Android SDK)の場所を聞かれるので、本記事では、
NDK_ROOTはC:\android-ndk-r9dを
ANDROID_SDK_ROOTは、Android SDKのルートディレクトリパスを指定する。

最後にANT_ROOTのパスも聞かれるが、これはそのままEnterでスキップしてOK。


Eclipse設定

・「ウィンドウ -> 設定 -> 一般 -> ワークスペース -> リンクされたリソース」にCocos2d-xルートパスを追加する。
[新規(N)...]ボタンを押して、
名前(N):COCOS2DX
ロケーション(L):Cocos2d-xルートパス(本記事では、c:\cocos2d-x-3.0)
を指定する。
cocos2dx_eclipse_setting00.png


サンプルのプロジェクトを実行する

cocosコマンドを使い、Cocos2d-xのプロジェクトを自動生成する。cocosコマンドは、先のsetup.pyの実行によって、コマンドプロンプトから実行できるようになっている。任意のディレクトリで、以下のコマンドを実行して、プロジェクトを作成する
cocos new Cocos2dxTestProject -p com.hoge.cocos2dx.TestProject -l cpp -d 好きなディレクトリ

各パラメータの意味
Cocos2dxTestProject:プロジェクト名
com.hoge.cocos2dx.TestProject:パッケージ名
cpp:使用言語

これで、指定のディレクトリにCocos2dxTestProjectというプロジェクトが作成される。

作成されたディレクトリ内のproj.androidフォルダ直下のbuild_native.pyをコマンドプロンプトから実行して(たぶん直接、ダブルクリックで起動してもいける)、ビルドする。ビルドに少々時間がかかるが、コーヒーでも飲んで待とう。


EclipseにCocos2d-xライブラリ「libcocos2dx」ライブラリをインポートする
1. ファイル -> 新規 -> プロジェクト -> Android -> 既存コードからのAndroid プロジェクト
2. [ルート・ディレクトリ:]に「Cocos2d-xルート\cocos\2d\platform\android\java」を選択
cocos2dx_eclipse_setting01.png


Cocos2d-xライブラリプロジェクトをインポートしたときと同様に
1. ファイル -> 新規 -> プロジェクト -> Android -> 既存コードからのAndroid プロジェクト
2. [ルート・ディレクトリ:]に先ほど作成したCocos2dxTestProjectのプロジェクトのパスを指定する。
cocos2dx_eclipse_setting03.png

インポート完了後にプロジェクトにエラーが出る場合は、「libcocos2dx」のライブラリのパスが合っていない場合だと思われる。その場合は、プロジェクトの[プロパティ(R)]→「Android」の[ライブラリ]に設定されている「libcocos2dx」のライブラリのパスを正しいものに修正する。
cocos2dx_eclipse_setting02.png

あとは、いつも通りにAndroidアプリを実行する。
エミュレータで実行する場合は、[エミュレータ・オプション:]で、[ホストGPUを使用する]にチェックをいれる。

cocos2dx_eclipse_setting04.png


Google Play上の有料アプリが購入できない件ついて

2013年9月ごろから、私が公開しているGoogle Play上のAndroidアプリの有料アプリがご購入できない状態が続いております。

有料アプリをご購入しようとしていただいたユーザ様には、大変申し訳ありません。
諸事情により、私の販売アカウント側が停止している状態で、現在も復旧の目処が立っておりません。

再度、販売可能になったタイミングで、こちらのブログでも、お知らせしますので、もうしばらくお待ちください。

Androidアプリ アプリボックス アップデート Ver2.2

Androidアプリ アプリボックスをアップデートし、無料版はVer2.2.0、有料版はVer2.3.0となりました。

アプリボックスは、アプリのショートカットをエクスプローラ風にフォルダ管理し、増えすぎてしまったアプリをフォルダで管理して、すばやく起動したいアプリを探せるようにするためのアプリです。

apps box icon2_240
アプリボックス(無料版)
アプリボックス プラス(有料版)

今回の主なアップデート内容は以下のとおりです。

ショートカット作成機能
フォルダのコンテキストメニュー(フォルダアイコン長押し後、その場でリリースで表示)から、ホーム画面にそのフォルダのショートカットを作成できるようになりました。
ホーム画面に作成されたショートカットを利用することで、直接そのフォルダが選択された状態で、アプリ ボックスを起動することができます。
appsbox_blog13.png
appsbox_blog14.png
1.ホーム画面にショートカットをおきたい
フォルダを長押し(階層ビュー内のフォルダも可)
2.ドラッグモードに移行
 
appsbox_blog15.pngappsbox_blog16.png
3.その場で指を離して、表示されるメニューの
「ショートカット作成」を選択
4.ホーム画面にショートカットが作成される
 

注)ショートカットの作成は、インストールされているすべてのホームアプリに対して、同時に行われます(AndroidOSの仕様)。

並び替え機能
画面右上に並び替えボタンが追加されました。
appsbox_blog17.png

このボタンをタッチし、表示される以下の並び順を選択することで、現在選択されているフォルダに登録されているアイテムのフォルダ内ビューでの並びを選択した並び順で並び替えることができます。
[選択できる並び順]
・名前(昇順)
・名前(降順)
・追加順(昇順)
・追加順(降順)

<以下、有料版のみ>
・種類(昇順)
・種類(降順)
・手動

設定は各フォルダ毎に可能です。
さらに、手動を選択した場合は、フォルダ内ビューでアイテムを並び替えたい位置にドラッグ&ドロップすることで自由に並び替えることができます。
[手動]での並び順は記憶されるため、他の並び順に変えても[手動]での並びはリセットされません。

注)並べ替えは、フォルダ内ビューでのアプリ(有料版では、ブックマーク、連絡先も)のショートカットに対してのみ行われます。フォルダに対しては適用されません。

アプリボックス(無料版)はこちらから">アプリボックス(無料版)はこちらから

アプリボックス プラス(有料版)はこちらから">アプリボックス プラス(有料版)はこちらから

テーマ : androidアプリ
ジャンル : 携帯電話・PHS

プロフィール

basarafire

Author:basarafire
IT関連会社で情報処理の基礎やプログラミング(主にC・Java)を教えています。最近はAndroidの教育や開発なども行ったりしています。

basarafireの開発したアプリに関する内容はこちらから
http://basarafire.jugem.jp/

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
お気に入り
[プレスブログ]価値あるブログに換金可能なポイントを差し上げます。 アクセストレードレビュー
提携
ゲーム
QRコード
QR
リンク
RSSリンクの表示
お気に入り商品
カウンター
おすすめAndroid書籍
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。