スクリプトを作れるようになろう-04
投稿者:
ikosami
投稿日:2012/04/22 15:34
どうも。ikosamiです。
前回を見ていない人は、↓を先に見てください。
http://blog.rmake.jp/ikosami/1674
⑤戦闘を追加する
階層を進むごとに、戦闘があるようにしてみましょう。
戦闘は、思うほど難しいものではありません。
まず、「メインチャプター」の
を
にして、「メインチャプター」の下に、
「戦闘」のチャプターを作りましょう。
「主人公」の部分は、好きな名前を入れてください。
台詞も、ご自由に。
では、戦闘スクリプトを作ってみましょう。
戦闘スクリプトには、最低でも、
最大HP,HP,攻撃力,防御力を
自分と敵の分が必要です。
敵の分の最大HPは回復技を作らない限り必要ないですが、
まぁ一応作っておきましょう。
まず、自分のステータスです。
これは、初期設定で設定します。
数字の大きさはお好みで。
ちなみに、一番下のKは戦闘中回復できる回数です。
今回は傷薬の数ってことにしておきましょう。
次に、敵ステータスです。
これは、「設定チャプター」で設定します。
敵ステータスもお好みでいいのですが、
主人公ステータスとのバランスを考えてください。
絶対勝てないと、ゲームになりませんし、
弱すぎてもつまらないですし、
倒すのに時間がかかりすぎても嫌になります。
戦闘は、一度しかないわけではないので、
だんだん強くするようにしましょう。
敵は、とりあえず、すべての階に設定してください。
(最下層以外は、いなくても問題はないですけど・・・)
あと、ついでに、台詞も入れときましょう。
とは言っても、そのまま書くわけにはいきません。
なので、defを使って
後で呼び出せるようにしておきましょう。
と言う感じで。
これをすべての階層に追加しましょう。
defはユーザー定義関数を作るときに使うもので
def [新しく作る関数名](引数)
と、書きます。
例えば、
と書けば、
台詞
「こんにちは」
と、表示されます。
参考:「スクリプト言語のマニュアル」
それと、
setVariable("T",showImagePosition(200, 100, 64270))
が画像表示
setVariable("tn","トカゲ")
が敵の名前です。
戦闘中の「○○の攻撃!」という文章などに使います。
ちなみに、今回の例で使用した画像は、↓です。
http://rmake.jp/published_items/25361
では、準備が終わったので、早速戦闘スクリプトを作ってみましょう。
メインスクリプトと同じく、
から作っていきます。
戦闘のあるゲームを思い出してみてください。
「○○が現れた!」
※
「どうする?」(選択肢)
「主人公の攻撃!」
「▽△のダメージを与えた!」
「○○の攻撃!」
「□■のダメージを受けた!」
[※に戻る]
ってな感じですよね。
これを、そのまま当てはめてみます。
(上のほうのは、毎度おなじみの読み込みです。
おなじみでない人は1から順番に読みましょう)
ほぼ、そのまま書くと
体力が減ったとか回復したとか、文字で表示しているだけで
無駄な文章の繰り返しになります。
体力などの変数を実際にちゃんと使ってみましょう。
ついでにいろいろな場合の判定も。
これで、戦闘が追加されました。
⑥オープニングを作る
オープニングのないゲームだと、何をすれば良いのかがよくわかりません。
なので、ゲームにオープニングを加えてみましょう。
まず、「初期設定チャプター」と「設定チャプター」の間に、
「オープニング」と言う名前のチャプターを追加します。
ここにまず、オープニングを入れてみましょう。
迷路なので、それに見合ったオープニングを作りましょう。
みたいな感じなら、
「なにをすればいいのか?」
がはっきりします。
⑦エンディング(or後日談)を作る
設定チャプターの
の、
の部分を、
に変えます。
そして、戦闘チャプターの下に、
エンディングチャプターを作ります。
そこにエンディング、もしくは後日談を書いていきましょう。
など、御自由に。
今回の解説の内容で作るゲームは、
どちらかというと、文章力が必要になるものなので、
僕の書いたゲームのストーリーの内容は、
ほとんど気にしなくても結構です。
暗闇迷路 - 【迷路ゲーム】
わからない部分が、少しでもあったらどんどんコメントしてください。
次回は、キーボード入力を取り入れて、
操作性をよくしてみたいと思います。
ツイート
前回を見ていない人は、↓を先に見てください。
http://blog.rmake.jp/ikosami/1674
⑤戦闘を追加する
階層を進むごとに、戦闘があるようにしてみましょう。
戦闘は、思うほど難しいものではありません。
まず、「メインチャプター」の
speak("ゴールです。")
speak("次のステージへ進みます。")
setVariable("ST", getVariable("ST")+1)
changeChapter("設定")
を
setText(t, "")
setVariable("ST", getVariable("ST")+1)
changeChapter("戦闘")
にして、「メインチャプター」の下に、
「戦闘」のチャプターを作りましょう。
「主人公」の部分は、好きな名前を入れてください。
台詞も、ご自由に。
では、戦闘スクリプトを作ってみましょう。
戦闘スクリプトには、最低でも、
最大HP,HP,攻撃力,防御力を
自分と敵の分が必要です。
敵の分の最大HPは回復技を作らない限り必要ないですが、
まぁ一応作っておきましょう。
まず、自分のステータスです。
これは、初期設定で設定します。
setVariable("MHP", 100)
setVariable("HP", 100)
setVariable("AT", 20)
setVariable("DT", 10)
setVariable("K", 10)
数字の大きさはお好みで。
ちなみに、一番下のKは戦闘中回復できる回数です。
今回は傷薬の数ってことにしておきましょう。
次に、敵ステータスです。
これは、「設定チャプター」で設定します。
if getVariable("ST") == 1
s[0] = Array("1,1,1,1,1")
s[1] = Array("1,0,1,2,1")
s[2] = Array("1,0,0,0,1")
s[3] = Array("1,0,1,1,1")
s[4] = Array("1,1,1,1,1")
x = 1;y = 1
setVariable("tMHP", 30)
setVariable("tHP", 30)
setVariable("tAT", 10)
setVariable("tDT", 8)
敵ステータスもお好みでいいのですが、
主人公ステータスとのバランスを考えてください。
絶対勝てないと、ゲームになりませんし、
弱すぎてもつまらないですし、
倒すのに時間がかかりすぎても嫌になります。
戦闘は、一度しかないわけではないので、
だんだん強くするようにしましょう。
敵は、とりあえず、すべての階に設定してください。
(最下層以外は、いなくても問題はないですけど・・・)
あと、ついでに、台詞も入れときましょう。
とは言っても、そのまま書くわけにはいきません。
なので、defを使って
後で呼び出せるようにしておきましょう。
def spe1()
speak("主人公\n「階段を見つけた!」")
setVariable("T",showImagePosition(200, 100, 64270))
setVariable("tn","トカゲ")
speak("主人公\n「ん? なんだこいつ・・・」")
speak("トカゲ\n「・・・うきゃー!」")
speak("主人公\n「うわっ!」")
end
def spe2()
speak("トカゲ\n「・・・うきゅー・・・」")
hideImagePosition(getVariable("T"))
speak("主人公\n「トカゲは『うきゃー』とも『うきゅー』とも言わないだろ・・・」")
speak("主人公\n「まぁいいや。先へ進もう」")
end
と言う感じで。
これをすべての階層に追加しましょう。
defはユーザー定義関数を作るときに使うもので
def [新しく作る関数名](引数)
と、書きます。
例えば、
def spe(a)
speak("台詞\n「",a、"」")
end
spe("こんにちは")
と書けば、
台詞
「こんにちは」
と、表示されます。
参考:「スクリプト言語のマニュアル」
それと、
setVariable("T",showImagePosition(200, 100, 64270))
が画像表示
setVariable("tn","トカゲ")
が敵の名前です。
戦闘中の「○○の攻撃!」という文章などに使います。
ちなみに、今回の例で使用した画像は、↓です。
http://rmake.jp/published_items/25361
では、準備が終わったので、早速戦闘スクリプトを作ってみましょう。
メインスクリプトと同じく、
loop = true while loop end
から作っていきます。
戦闘のあるゲームを思い出してみてください。
「○○が現れた!」
※
「どうする?」(選択肢)
「主人公の攻撃!」
「▽△のダメージを与えた!」
「○○の攻撃!」
「□■のダメージを受けた!」
[※に戻る]
ってな感じですよね。
これを、そのまま当てはめてみます。
(上のほうのは、毎度おなじみの読み込みです。
おなじみでない人は1から順番に読みましょう)
spe1()
mhp = getVariable("MHP")
hp = getVariable("HP")
at = getVariable("AT")
dt = getVariable("DT")
tn = getVariable("tn")
tmhp = getVariable("tMHP")
thp = getVariable("tHP")
tat = getVariable("tAT")
tdt = getVariable("tDT")
speak(tn,"○○が現れた!")
loop = true
while loop
case speakWithSelect(3,"攻撃","回復","逃げる",
"どうする?")
when 0
speak("主人公の攻撃")
speak(tn,"に13のダメージを与えた!")
when 1
speak("主人公のは傷薬を使った")
speak("体力を25回復した!")
when 2
speak("主人公は逃げ出した!")
speak("しかし、何も起こらなかった!")
end
speak(tn,"の攻撃!")
speak("主人公は10のダメージを受けた!")
end
ほぼ、そのまま書くと
体力が減ったとか回復したとか、文字で表示しているだけで
無駄な文章の繰り返しになります。
体力などの変数を実際にちゃんと使ってみましょう。
ついでにいろいろな場合の判定も。
#//////前略////////
loop = true
while loop
case speakWithSelect(3,"攻撃","回復","逃げる",
"どうする?\nHP:",hp,"/",mhp,"\n傷薬:",getVariable("K"),"個")
when 0
speak("主人公の攻撃")
ko = at - tdt - rand(floor(at/6)) # 一定にならないように
if ko < 0
speak(tn,"は、笑っている!")
else
thp = thp - ko
speak(tn,"に",ko,"のダメージを与えた!")
if thp <= 0
speak(tn,"を倒した!")
spe2() #さっき設定したやつ
changeChapter("設定")
end
end
when 1
if getVariable("K") > 0
speak("主人公のは傷薬を使った")
if hp < mhp
hp = hp + 25
setVariable("K",getVariable("K")-1)
if hp > mhp
hp = mhp
end
else
speak("しかし傷が見当たらなかった!")
end
else
speak("傷薬はもうない!")
end
when 2
speak("主人公は逃げ出した!")
speak("しかし、何も変わらなかった!")
end
speak(tn,"の攻撃!")
ko = tat - dt - rand(floor(tat/6)) # 一定にならないように
if ko <= 0
speak("主人公は、微動だにしない!")
else
hp = hp - ko
speak("主人公は",ko,"のダメージを受けた!")
if hp <= 0
speak("主人公\n「負けた・・・」")
speak(tn,"「ゲームオーバー」")
speak("主人公\n「しゃべった!?」")
goBadEnding()
end
end
end
これで、戦闘が追加されました。
⑥オープニングを作る
オープニングのないゲームだと、何をすれば良いのかがよくわかりません。
なので、ゲームにオープニングを加えてみましょう。
まず、「初期設定チャプター」と「設定チャプター」の間に、
「オープニング」と言う名前のチャプターを追加します。
ここにまず、オープニングを入れてみましょう。
迷路なので、それに見合ったオープニングを作りましょう。
主人公「う~む・・・ これが家宝の宝刀か・・・」 #盗賊画像表示 主人公「ん? あんな誰?」 主人公「わっ! なにするんだ!」 盗賊「この宝刀は、もらって行くぞ!」 主人公「まて~!」 #洞窟の背景表示 主人公「この洞窟に逃げ込んだみたいだ。追いかけよう!」 #背景画像消去 主人公「うわっ! まっくらだ!一度もどって、 明かりになるものを取りに行こう。」 主人公「ん? こんなところにカンテラが・・・」 #薄暗い洞窟背景表示 主人公「大して変わらないな・・・ まぁいいや。このまま進もう」
みたいな感じなら、
「なにをすればいいのか?」
がはっきりします。
⑦エンディング(or後日談)を作る
設定チャプターの
#####<<<前略>>>#####
if getVariable("ST") == 1
#####<<<中略>>>#####
elsif getVariable("ST") == 2
#####<<<中略>>>#####
def spe1()
#####<<<中略>>>#####
elsif getVariable("ST") == 3
#####<<<中略>>>#####
elsif getVariable("ST") == 4
#####<<<中略>>>#####
else
speak("すべてのステージをクリアしました!\nおめでとうございます!")
goEnding()
end
#####<<<後略>>>#####
の、
speak("すべてのステージをクリアしました!\nおめでとうございます!")
goEnding()
の部分を、
changeChapter("エンディング")
に変えます。
そして、戦闘チャプターの下に、
エンディングチャプターを作ります。
そこにエンディング、もしくは後日談を書いていきましょう。
主人公「やっと見つけたぞ!」 盗賊「くっ・・・あいつらをこうもあっさり倒すなんて・・・ なんて強さだ・・・」 主人公「宝刀を返せ!」 盗賊「わかったわかった。返すから勘弁してくれ」 宝刀を取り返した! 盗賊「というか、俺の懐中電灯の電池が切れたんだが、 お前のそのカンテラで、出口まで連れてってくれないか?」 主人公「しかたないな・・・・・・」 主人公「やっと出られた~・・・」 盗賊「じゃぁ、逃げさせてもらうよ」 主人公「えっ!?」 主人公「・・・・・・」 goEnding()
など、御自由に。
今回の解説の内容で作るゲームは、
どちらかというと、文章力が必要になるものなので、
僕の書いたゲームのストーリーの内容は、
ほとんど気にしなくても結構です。
暗闇迷路 - 【迷路ゲーム】
わからない部分が、少しでもあったらどんどんコメントしてください。
次回は、キーボード入力を取り入れて、
操作性をよくしてみたいと思います。
コメントする
コメントするには、ログインする必要があります。
分かりやすかったです^^