新ブログ「ごんフラブログG2」

WordPressで始めてみました

[海外]バンドルされた複数のゲーム・PCアプリが購入できるサイト
humblebundle.com


ごんたろうのぼやきトップ

2009年01月24日

[第4回]Flash(フラッシュ)ゲーム制作講座[変数をもっと深く@/ゲーム基礎編]

えーと、慣れないもので、ちゃんとリニューアルして
画像なんかも入れながらやってみたいと思っております故
こんな講座でも読んで頂いている人がいるなら
コメントにちょこっと書いていただければやる気がでるです。よろしくです。


第1回(HPにあります)
【第2回 Flash制作講座[準備編/ラベル]】
[第3回]Flash(フラッシュ)ゲーム制作講座[ゲーム基礎編]

※若干修正くわえました。

------------------------
さて、みなさん右斜め上(浜村淳 風)

変数とは何かというのを第3回にて書いております。
変数を理解しないことにはゲームを作ることは不可能、これも
第3回で書いていたと思います。

変数をうまく使うことでゲームの進行などがスムーズに行くわけです。
変数というのはいろいろな型(種類)があるのです。

Flashではあまり意識しなくても何となく使っていればいいように思えますが、
多少変数を理解してきたならば、型は意識しないと痛い目に遭います。
まー、その辺は後にして、変数とはスコアや残機、HPやMPなどに
使用することも説明いたしました。

それ以外に変数の使い方として、「フラグ」として使うと言うことをお話しします。
フラグ=旗なのですが、なんぞや?とおもいますよね。
結構、ゲーム作りでは「フラグを立てる」という言葉を頻繁に使うのです。
これは難しく考える必要はありません。簡単です。
たとえばRPGなどで、あるボスを倒したとします。この
あるボスを倒したということを知らせるスイッチ」がフラグなのです。
なので、「倒していない」「倒した」の2種類で良いのです。
これをフラグと呼びます。まぁ、細かいことを言うと、2種類でおさまらない
フラグもあるのですが、まず、2種類のフラグから説明しましょう。

他のプログラミング言語ではこの2種類のフラグを
「boolean」(ブール、ブーラン?ブーリアン?)といい、「bool」と書くことがあります。
読みはブールで良いんじゃないでしょうか?詳しくはプログラマーさんに聞いてください(笑)
僕はブールと言います。JOKERさんからのコメントで、アクションスクリプトでは
「ブーリアン」が正しいという回答を頂きました。御協力、ありがとうございます。
そういうわけで「ブーリアン」と覚えてください。m(_ _)m

で、2種類しか値がないのです。つまりON OFFです。
boolの値は
true=真
false=偽
となります。

どっちがどういう使い方、、、、とかはありませんが
わかりやすくするために、あるボスAを倒していない場合はfalse、
倒したらtrueにする、のような使い方をします。

仮に変数testの判定をif文で書くときは

if(test){
//処理
}
等にした場合、条件は「testが真の場合」と言う意味になります。
他の書き方としては

if(test==true){}

と書いたりしますが、test==trueと書くならば
if(test)の方が早いのでそちらになれる方がイイと思います。
(=を2つ連続で==と入力することで
変数testがtrueと同じ場合という式になります。)

ifのカッコの後に変数名をそのまま入れるとtrueの時に
{}内の処理を実行すると言うことになります。

if(test){
//真の処理
}else
{
//偽の処理
}

上記のプログラムにelseという物が出てきました。
elseとはそれ以外の場合と言えばわかってもらえますでしょうか。
つまり上記のプログラムは、
「もしtestがtrueなら真の処理、それ以外(false)ならば偽の処理」
てな風になるのです。
ちなみにelse{}は無くても大丈夫です。
if(){}があればelseは必要有りません。
ただ、逆にelse{}だけではエラーになります。御注意ください。

flashでフラグを使用する場合は
test=true;
test=false;
のように書き、true、falseと言った値は青色になります。


先ほどのif文は「真の場合」と言う意味でしたが
逆に「偽の場合」と書きたいときがあると思います。
if(test){}だと「真」ですが、if(!test){}
変数の頭に「!」をつけると「否定」になります。つまり「〜〜じゃない場合」
という感じですかね。testの頭に!をつけて!test、つまり
testがtrueじゃない場合(ブールなのでtrueとfalseしかありません。)
つまりはfalseの場合となるのです。

真の使い方、!による偽の使い方を覚えていると良いでしょう。

フラグの使い方ですが基本的にON OFFという値しか持ちません、
それに適応する処理に使うのです。当たり前ですが…。

例えば、ポーズ(休憩)のON OFF、ONでポーズボタンを押したらOFFにするとか
または逆とか。

フラグ処理の組み合わせにより、例えば
ボスAを倒した→フラグを立てる
フラグが立ったらトビラが開く。のような処理を作ることが出来るのです。


うーん、、、、、、もっとわかりやすく書こうと思うので
めげずに見てやってくださいませ。
以上。
posted by ごんたろう(Gontaro-Soft) at 05:34 | Comment(4) | TrackBack(0) | Flashゲーム制作講座

2009年01月14日

[第3回]Flash(フラッシュ)ゲーム制作講座[ゲーム基礎編]

プログラムなんてやったことないけどFlashは好き。
だからFlashでゲームを作ってみたい、と言う人のための
ゲーム制作講座です。私はプログラマーではありません。
我流なのです。ホントに。

第1回(HPにあります)
【第2回 Flash制作講座[準備編/ラベル]】

さて、みなさん右斜め上(浜村淳 風)

第1回(HPにあります)に書いたコトとも被るものがありますが
ゲームプログラミングとは、他のプログラムでも同じなのですが
全てをプログラミングしなければいけません、当たり前ですが。

どういうコトかと言いますと、ポーズ画面を表示して
画面を止めたり、画面を切り替えたり、リセットボタンを
作ろうと思ったら、最初の画面に戻るだけでなく、
設定の値を初期化したりとか。
ゲームプログラミングを始めると
裏方的な作業が凄く多いと言うことがわかってもらえるかと思います。

で、簡単に言いますと、Flashゲーム制作で最低限必要な知識は
┗@Flashの基礎、フレームやインスタンス、シンボルなど
   フラッシュコンテンツを作る最低限の知識。
┗A変数の理解(後述)
┗Aif文(条件分岐)の理解、switch文もあればよりよい。(後述)
┗Bfor文、while文などのループ文(後述、次の回で)
┗Cどういうゲームを作るかにもよるが、ほとんどのゲームで使う
   いわゆる当たり判定(接触判定)について。(後日)
┗Dキャラ描きなど(MovieClipを理解していると楽!)

だいたいこんな感じなんですよね。
当然、Flashでのボタンクリックなど基礎の使い方を使用するのは
当たり前なのですが。

@はここでは省略いたします。ワカラナイ人はコメントにでも
書いていただけると説明できるかも・・・。<出来なくても怒らないでね

【A】
まずAについて(変数)
変数とはなんぞや?なのですが。
固定されていない変動する数。というといいかも?
さてこれはどういうことか。
変数というのは「箱」を想定してください。
数値や文字などを入れる「箱」です。
よくゲームなどでは、スコア(得点)、残機、RPGのHP、MP
等を想像していただいたらわかるかと思います。

これらの数は一定で止まらずに動きますよね。
特にHPなんかは減ったり増えたり。
プログラミングではこういう変動する値はどうやっているのでしょう?

プログラミングで画面に数値などを表示するときに
1とか2等を書いたらそのまま数値は変わりません。
ですが、変数と呼ばれる値を書くと、その変数がもっている
値を表示することが出来るのです。
例えばHP等を表示するときに数値をかくのではなく
変数の名称を書くのです。そうすると変数の値が表示されます。

この変数というものはゲームプログラミングには必須です。
これがワカラナイとなるとゲームは作れないと言っても
過言ではありません。
そして、この変数を使って様々なことが出来ます。
変数というのは、変数の名称を書き、それに値を入れます。
例:player_life=5;
player_lifeというのが変数の名称で5というのは値
変数の名称=値;
上記の式を変数に代入。(変数player_lifeに5を代入とか言います)
こんな感じで変数に値を代入することが出来ます。

式を書けば変数をいろんな値に変化させることが出来ます。

変数hpを使ってRPGを想定すると
敵の攻撃!とか表示させた後で
敵の攻撃力、プレイヤーの防御力を計算し、差を出します。
その差をhpから引いて、hpが0になったら死ぬとか
例えばこんな感じです。

敵の攻撃力(teki):10
プレイヤーの防御力(player_def):5
ダメージ(damage):0
damage=teki-player_def
hp=hp-damage(hp-=damageも同様の式)
のようになります。ダメージを決める際、乱数(ランダム)を発生させて
ダメージを決めるとより一層楽しくなるでしょう。
変数についてはわかっていただけましたか?
変数のお約束事は別の機会に。
質問のある方はコメントにお願いいたします。

PCでお小遣い稼ぎをしたい方は
こちらの説明を見てバナーから登録してください。



↑アフィリエイトサイトのトラフィックゲートさん。

↓子供ドレス販売「輸入ドレス 1st LADY」よかったらポチッと御覧下さい。↓
 子供ドレス、フォーマルドレス、スーツなど、かわいい商品がお値打ち価格で揃っています♪

ヘルシーライフでアンチ・メタボをめざす
医療健康情報サイト「セルフケア&キュア」

【B】

次、Bについて(if〜文)
さて、この「if」(いふ)文ですが、なんぞや?と言う方も
いらっしゃるのではないでしょうか。
これは英語です。if、もしも〜ならという意味です。
日本語で考えたらだいぶ楽になると思うのですが、
第1回にも記述しましたが、「日本語でプログラミングを考える」ことを
すると、プログラミングに行き詰まっても解決しやすいです。

ifというのは「もし〜なら」ですが、例えば
【プレイヤーの撃った弾がもし敵に当たったら】とか
【プレイヤーの残機が0だったら】とかそんな感じで考えます。
ifの使い方は条件を書き、それから結果を書くと言うことになります。
どういうことか。上記の例を使用すると

【プレイヤーの撃った弾がもし敵に当たったら[条件]、
その敵はやられる(ダメージを受ける)[結果]】、
【プレイヤーの残機が0だったら[条件]、
ゲームオーバーでタイトルに戻る[結果]】
こんな感じでわかっていただけますでしょうか。

if文の書き方は
if(条件式){
結果
}
になり、例を書くと
if(player_hp<=0){
ゲームオーバーの処理
}
の様になります。
さて、条件式の欄に書いたモノはなんぞや?ですが、
変数のトコロに出てきた「player_hp」はわかりますね。
あとは0、それと「<=」ですが><の記号は等号ですね
どちらが大きいか小さいかというやつです。
<=は「以上」という意味です。
日本語で書くと「もし変数player_hpが0以下だったら」
(0がplayer_hpより大きかったら)
という意味になります。
わかっていただけましたかな?
質問などはコメントでお願いします。
あと、これ意味わからね!っていうところもコメントでお願いします。

以上。
続きを読む

posted by ごんたろう(Gontaro-Soft) at 17:38 | Comment(0) | TrackBack(0) | Flashゲーム制作講座

2009年01月11日

[第2回]Flashゲーム制作講座[準備編/ラベル]

対応バージョンはFlash MXです。アクションスクリプトは1.1(1.0?わかんねw)

第2回と有りますが、一応、メインホームページ側にある
適当に作ってしまったところが第1回となっておりますので、
今回は第2回ということで。

HP側で作るか、ブログに書くかマダ決めかねています。
それはぼちぼち決めていこうかと思っております。


さて、今回は準備編。
なにをすんねん。ってことですが。
まず、ゲーム制作ですが、やはり基本的な流れを理解する必要があります。
その前にFlashはフレームで制御されていると言うことを頭に入れておいて下さい。
第1回にも書きましたが、シンボル、インスタンス、ムービークリップ、ボタン、グラフィックを
ある程度理解していないとゲーム制作は難しいと思います。
ですが、ここでは上記の項目の説明は省きます。機会があれば追加しますが。


↓子供ドレス販売「輸入ドレス 1st LADY」↓
 子供ドレス、フォーマルドレス、スーツなど、かわいい商品がお値打ち価格で揃っています♪

ゲルクリームのエバメール化粧品


前置きが長くてすみません。
Flashは再生して1フレームから順番に進んでいくというのはご存知だと思います。
ゲームを作るときには、まずフレームレートはどれくらいか、ステージの大きさは
どれくらいかを決めます。

そして、強制ではないですが、ゲームのタイトルやメインの部分など
フレームの場所によって場面を変えますが、それらはすべて「ラベル」を
使用することをオススメします。
ラベルとは何か?
例えばgotoAndPlay()という関数があります。
()内にフレームの番号を入れるんですね。そうすると指定したフレームにジャンプします。
ここでちょっと言っておくと、
gotoAndStop(Play)
はタイムライン、ムービークリップをstop()させておくことが重要です。
ラベルの指定の仕方はgotoAndPlay()の()内に"で囲ってラベル名を指定します。
例えばgotoAndStop("title");みたいな感じです。""でくくります。
ラベル指定は半角文字も全角文字も使用できます。
ですが、プログラムを組むのになれるために半角文字を使用することをオススメします。
あくまでこのサイトでは(笑)

そしてラベル名を決めるのは任意のフレームをクリックすると、左下(デフォルトの設定では)に
フレームとあり「フレームラベル」というテキストボックスがあります。
そちらに入力しましょう。

 

↓下記参照
ラベル入力 


ラベル指定して見やすくするためにラベルはラベルだけのレイヤーを用意する方がいいでしょう。

ではなぜラベル指定をするのか?といいますと、
数値でフレーム指定をした場合、途中でフレームを追加したり削除したりで編集した場合
前もって書いておいたgotoAndStop(6)などのカッコ内の数値まで変えなければ行けません。
フレーム6に飛ぶ、だったのが間のフレームを作事したために4フレームに飛ばさないと行けなくなった。
この場合は6→4に変更です。1個くらいならどうってことはないですが、複数あると面倒です。

でもラベル指定をすると、そのラベルの先頭に移動しますから、
ラベルの先頭の移動でなければ、編集し直す必要はなくなるのです。
非常に便利なので、使用する癖を付けると良いです。


ちなみに私がラベルで分ける項目は
まずformat−「初期設定」変数の初期設定、位置など最初から設定しておくことが必要なものを
記述するフレーム。(だいたい1フレームのみ)
そしてローダー(プリローダーというやつですね)を設置するフレーム。
ここも1フレームしか使いませんが、2フレーム取り、最後のフレームでstopをかけて
ローダー表示のフレームを準備します。これが「loader」フレーム。

あとはゲームジャンルによって変わりますが、mainとかdata_selectみたいな感じで
指定します。
これらをパターン化するとフレームジャンプが楽になり、管理もしやすくなります。


この辺で第2回は終わります。
ではまた。
*****第2回 終了*****続きを読む

posted by ごんたろう(Gontaro-Soft) at 14:10 | Comment(0) | TrackBack(0) | Flashゲーム制作講座
ブログランキング・にほんブログ村へ
にほんブログ村

インターネット・コンピュータランキング