Androidでマッチ3ゲームを作ってみよう! 3 | ソース人の憩いの場

ソース人の憩いの場

Sourcegeneの説明と、時々技術的なこと。

こんにちは。

そーす人です。

 

クラウドソーシングとマーケットプレイスが合わさったサービスを展開しています。

https://www.source-gene.com

 

マッチ3ゲームを作っていきます。

マッチ3とは、3つ揃えて消す、みたいなパズルゲームです。パズドラなどが有名ですね。

 

ここで出来上がったソースコードは、最終的に整形してソースジン上に掲載いたします。

ゲームやそれ以外、画像素材などもソースジンで販売や募集ができます。ご利用いただければと思います。

 

---------------------------------------------------------

さて、今回は、自動で生成されている

MainActivity
を変更します。


生成されているのは、
―――――――――――――――――――――――――――――――――――――――――
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
―――――――――――――――――――――――――――――――――――――――――
こんな感じかと思います。
これ以下のように変更します。


―――――――――――――――――――――――――――――――――――――――――
public class MainActivity extends AppCompatActivity {

    MySurfaceView mySV;     

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFormat(PixelFormat.TRANSLUCENT);

        mySV = new MySurfaceView(this);     
        setContentView(mySV);               
        mySV.requestFocus();                
        mySV.setFocusableInTouchMode(true); 
    }
}
―――――――――――――――――――――――――――――――――――――――――
もともと記述してあった
setContentView(R.layout.activity_main);
は画面表示にレイアウトのXMLファイルとしてactivity_main.xmlを使いますよ、という宣言ですが、前回作成したMySurfaceViewでOpenGLで画面を表示しますので、いらなくなります。
ゲーム用の画面ですので、それように表示するように設定をします。


デフォルトでは、端末を横にすると横向き用に画面が変わります。
これではゲームが成り立たなくなってしまいますので、横向きに固定します。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


ステータスバーなども消して画面を全画面表示します。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);


タイトルを消します。
requestWindowFeature(Window.FEATURE_NO_TITLE);


背景を半透明にします。
getWindow().setFormat(PixelFormat.TRANSLUCENT);


画面描画のためのクラスのインスタンスを生成します。ゲームの画面はここに描かれていくわけですね。
mySV = new MySurfaceView(this); 


画先ほど、setContentViewにセットしているactivity_mainを削除しましたが、代わりに上記のインスタンスをセットします。
setContentView(mySV);  


起動直後にカーソルを当てます。
mySV.requestFocus(); 
タッチモードでフォーカスを受け取れるようにしておきます。これで画面がタッチされたら反応を返すことができるようになります。
mySV.setFocusableInTouchMode(true); 

 

これで、画面描画をするための下準備が整いました。

 

続きは次回です。