初心者のスマホ(Android)でRPG作成blog

初心者がスマホ(Android)向けのRPGゲームアプリを作っていくブログです。 アプリの作り方やPRの仕方等を試行錯誤しながら紹介して行きます。

はじめまして。ひでふみです。
趣味でスマホ(Android)RPG系のゲームを作成しています。
アプリの作り方等についても初心者なりに紹介していこうと考えています。
皆さんにとって楽しい一時を提供できると幸いです♪

■作成アプリ紹介
・イビル・スレイヤー:3作目のダンジョンRPG(悪魔と契約&図鑑作成)
・サモン・ファミリア:2作目の学園物RPG(ギャグが大目)
・Tower_RPG:1作目のダンジョンRPG(ひたすら塔を攻略)

はじめまして。ひでふみと申します。
2013年の1月からスマホ向けにアプリを作り始めた初心者です。
システムエンジニア等を仕事にしていますが、プログラミングはまったくの素人で、
むしろJavaを覚えたくてアプリ作りを始めた位の感じです・・・。

ここまで1年掛けて3作のアプリを公開するまでに至った訳なのですが、
 趣味とはいえ細々とやっても喜ばせれる人があまりに少ないと感じています。
もっと多くの人に楽しんで貰い、意見を貰って更に良い作品を作って行くには、
多くの人の目につく機会が必要と考えてlivedoorブログを始める事にしました。

 これが切っ掛けで多くの人と触れ合うことが出来ると嬉しいです。
それではこれから長く続けて行きたいと考えていますので宜しくお願いします。 

■イビル・スレイヤー
https://play.google.com/store/apps/details?id=com.hidefumi.kasahara.evel_slayer
■サモン・ファミリア
https://play.google.com/store/apps/details?id=com.hidefumi.kasahara.familiar_rpg
■Tower_RPG
https://play.google.com/store/apps/details?id=com.test.example.tower_rpg1


ゲーム制作 ブログランキングへ

多くの人に見て貰える様にランキングへのご協力をお願いします!

ゲーム制作 ブログランキングへ

説明画面のJavaソースとなります。

 HelpActivityというアクティビティ内に以下の処理が含まれています。
<処理内容>
・onCreate : 画面の初期作成処理(レイアウトファイルの読み込み等)
・showDialog : 画面に文字をポップアップさせるプログラム(他のプログラムに呼ばれる)
・onClickXX : 格ボタン毎の処理内容を設定(XXは数字が入る)

クラスの設定開始直後に以下の記載がありますが、
これは「BR」という変数は今後改行を意味するという設定です。
(文字列の表示に改行を入れたい場合は宣言しておくと便利)

 private final static String BR=System.getProperty("line.separator");

今後紹介するJavaファイルでは良く利用する表示方法なのですが、
onCreateの中で「textView1~3」「button1~10」に対して、
「textSetting.setText」で文字列を表示させています。

これにより画面が開いた直後に各ボタンやタイトルに文字が表示され、
「開始」用のボタンだったり、「終了」用のボタンというのがすぐにわかります。

それとこのJavaプログラムの処理は非常にシンプルな作りになっていて、
「終了」ボタンである「onClick0」は「finish()」でアクティビティを終了させ、
その他は「showDialog」で解説用の説明文を表示させるだけです。

簡単な処理から説明を行っていますが、よくわからないという方は
メールやコメント等を頂ければ説明致しますのでご連絡をお願いします!


■HelpActivity.java(Javaファイル)

package com.hidefumi.kasahara.evel_slayer;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.View;
import android.view.Window;
import android.widget.TextView;

public class HelpActivity extends Activity {
private final static String BR=System.getProperty("line.separator");

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.help);
//文字列表示
TextView textSetting = (TextView)findViewById(R.id.textView1);
    textSetting.setText("《基本情報》");
//文字列表示
TextView textSetting2 = (TextView)findViewById(R.id.textView2);
   textSetting2.setText("《戦闘画面情報》");
//文字列表示
TextView textSetting3 = (TextView)findViewById(R.id.textView3);
   textSetting3.setText("《移動画面情報》");
   
//「目的」の説明
TextView textSettingb01 = (TextView)findViewById(R.id.button1);
   textSettingb01.setText("目的");
//「依頼」の説明
TextView textSettingb02 = (TextView)findViewById(R.id.button2);
   textSettingb02.setText("依頼");
//「能力」の説明
TextView textSettingb03 = (TextView)findViewById(R.id.button3);
   textSettingb03.setText("ステータス");

   //「攻撃」の説明
TextView textSettingb04 = (TextView)findViewById(R.id.button4);
   textSettingb04.setText("攻撃");
//「魔法」の説明
TextView textSettingb05 = (TextView)findViewById(R.id.button5);
   textSettingb05.setText("剣技");
//「回復」の説明
TextView textSettingb06 = (TextView)findViewById(R.id.button6);
   textSettingb06.setText("回復");
//「契約」の説明
TextView textSettingb7 = (TextView)findViewById(R.id.button7);
   textSettingb7.setText("契約");

   //「探索」の説明
TextView textSettingb08 = (TextView)findViewById(R.id.button8);
   textSettingb08.setText("探索");
//「帰還」の説明
TextView textSettingb09 = (TextView)findViewById(R.id.button9);
   textSettingb09.setText("帰還");
//「情報」の説明
TextView textSettingb10 = (TextView)findViewById(R.id.button10);
   textSettingb10.setText("情報");
}

//showDialogの実装
private void showDialog(HelpActivity mainActivity, String title,String text) {
AlertDialog.Builder ad=new AlertDialog.Builder(mainActivity);
ad.setTitle(title);
ad.setMessage(text);
ad.setPositiveButton("OK", null);
ad.show();
}
//「戻る」コマンド実行処理
public void onClick0(View view){
finish() ;
}

//「目的」解説コマンド
public void onClick1(View view){
showDialog(HelpActivity.this,"目的","シナリオのクリアが目的となります。"+BR+BR+"各章の選択肢によりエンディングが変化します。");
}
//「依頼」解説コマンド
public void onClick2(View view){
showDialog(HelpActivity.this,"依頼","各章で達成すべき目的です。"+BR+BR+"酒場で悪魔の討伐等を依頼されます。");
}
//「ステータス」解説コマンド
public void onClick3(View view){
showDialog(HelpActivity.this,"ステータス","[HP]"+BR+"体力。"+BR+"0になると戦闘不能。"+BR+"HPが0になるとお金を奪われ、酒場に強制送還されます。"+BR+BR+"[SP]"+BR+"精神力。"+BR+"剣技利用時に必要。"+BR+BR+"[ATK]"+BR+"攻撃力。"+BR+"攻撃利用時のダメージ量。");
}
//「攻撃」解説コマンド
public void onClick4(View view){
showDialog(HelpActivity.this,"攻撃","通常攻撃です。"+BR+"ATK+武器能力のダメージを与えます。");
}
//「剣技」解説コマンド
public void onClick5(View view){
showDialog(HelpActivity.this,"技能","習得した剣技を使用します。"+BR+BR+"剣技は一定数利用すると成長します。");
}
//「回復」解説コマンド
public void onClick6(View view){
showDialog(HelpActivity.this,"回復","HPを全回復します。"+BR+BR+"ただし、回復には傷薬が一つ必要です。");
}
//「契約」解説コマンド
public void onClick7(View view){
showDialog(HelpActivity.this,"契約","悪魔と契約して使い魔にする事が出来ます。"+BR+BR+"悪魔はそれぞれに異なる能力を持っています。"+BR+"また、情報画面より魔石を一定数付与すると能力が変化します。"+BR+BR+"契約には魔石が必要です。");
}

//「探索」解説コマンド
public void onClick8(View view){
showDialog(HelpActivity.this,"探索","攻略エリアを探索します。"+BR+"100回の探索で現在のエリアを攻略します。"+BR+BR+"また、モンスターとの戦闘やアイテム取得等のイベントも発生します。");
}
//「帰還」解説コマンド
public void onClick9(View view){
showDialog(HelpActivity.this,"帰還","エリアの攻略を中断し、酒場に戻ります。");
}
//「情報」解説コマンド
public void onClick10(View view){
showDialog(HelpActivity.this,"情報","ステータスや所持品等の各種情報を参照します。");
}


■イビル・スレイヤー
https://play.google.com/store/apps/details?id=com.hidefumi.kasahara.evel_slayer 

多くの人に見て貰える様にランキングへのご協力をお願いします!

ゲーム制作 ブログランキングへ

次に紹介するには説明画面のレイアウトファイル。
時際のプログラムであるJavaファイルは2-2で別途説明します。

用途は操作や言葉がわからない時に確認する、良くあるHelp画面ですね。
MainActivity(1-1を参照)の「説明」ボタンを押すと表示されます。

作りは非常に簡単なもので、説明用にサブタイトルの「
ScrollView」と
説明文を表示する為のボタンとして「Button」を縦に並べるだけです。

後は「
ScrollView」で全体を囲う事で画面からはみ出しても、
スクロールする事で全てを表示可能にしていますね。

画像ファイルである「
frame」は黄色枠のフレームでテキスト表示の際に利用。
画像ファイルである「
frame2」は赤枠でボタンの際に利用しています。

一番最後の「終了」ボタンだけは固定なので「
@string/end_button」を使い、
レイアウト側で中に文字を表示させています。
ただ、2種類の表示方法があると面倒という場合は、その他の文字列と同じく
Javaファイルで全て表示させても良いかと思います。


■help.xml


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000"
    android:orientation="vertical" >
    
<LinearLayout 
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@drawable/frame"
        android:gravity="center"
        android:textSize="25sp"
        android:textStyle="italic" />
    
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame2"
        android:onClick="onClick1"
        android:textSize="30sp" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame2"
        android:onClick="onClick2"
        android:textSize="30sp" />
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame2"
        android:onClick="onClick3"
        android:textSize="30sp" />
     
    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="@drawable/frame"
        android:gravity="center"
        android:textSize="30sp"
        android:textStyle="italic" />
    
       <Button
       android:id="@+id/button4"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/frame2"
       android:onClick="onClick4"
       android:textSize="30sp" />
       <Button
       android:id="@+id/button5"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/frame2"
       android:onClick="onClick5"
       android:textSize="30sp" />
      <Button
        android:id="@+id/button6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame2"
        android:onClick="onClick6"
        android:textSize="30sp" />

       <Button
       android:id="@+id/button7"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/frame2"
       android:onClick="onClick7"
       android:textSize="30sp" />
       
      <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="@drawable/frame"
        android:gravity="center"
        android:textSize="30sp"
        android:textStyle="italic" />
    
   <Button
       android:id="@+id/button8"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/frame2"
       android:onClick="onClick8"
       android:textSize="30sp" />
      <Button
        android:id="@+id/button9"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame2"
        android:onClick="onClick9"
        android:textSize="30sp" />
       <Button
       android:id="@+id/button10"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/frame2"
       android:onClick="onClick10"
       android:textSize="30sp" />
       
    <Button
        android:id="@+id/button0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/frame2"
        android:onClick="onClick0"
        android:text="@string/end_button"
        android:textColor="#990000"
        android:textSize="30sp" />
       
</LinearLayout>
</ScrollView>

補足)
 @string/end_button = 終了

■イビル・スレイヤー
https://play.google.com/store/apps/details?id=com.hidefumi.kasahara.evel_slayer


■完成画面
 

Screenshot_2014-01-18-18-15-19
 

↑このページのトップヘ