プロが教える店舗&オフィスのセキュリティ対策術

ExcelでのVisual Basicのプログラミングでモンスターが乱数で攻撃をしてHPを減らすものを作りたいのですがどうすればいいのでしょうか?ちなみにここまで出来ました。

Type Monster
namae as String
kougeki as Integer
bougyo as Integer
HP as Integer
End Type

Dim dragon as Monster, doragon2 as Monster
dragon.namae = "red"
dragon.kougeki = 50
dragon.bougyo = 50
dragon.HP = 100
dragon2.namae = "blue"
dragon2.kougeki = 10
dragon2.bougyo = 10
dragon2.HP = 50
If dragon.kougeki > 50 Then MsgBox "fire"

A 回答 (4件)

誰の補足もないようなのと、適当に作ったにしても計算式があまりに不自然でしたので、修正しました。

でついでに要望のありました戦闘結果も出すようにしましたので、あとはパラメータの調整をするなど、存分に改造してみてください。

Randomize ' 乱数初期化
Do
dragon.HP = dragon.HP - dragon2.kougeki * Rnd + dragon.bougyo * Rnd ' ドラゴンへの攻撃
dragon2.HP = dragon2.HP - dragon.kougeki * Rnd + dragon2.bougyo * Rnd ' ドラゴン2への攻撃
MsgBox dragon.HP & " " & dragon2.HP ' 双方の残りHPを表示
Loop While dragon.HP > 0 And dragon2.HP > 0 ' 双方が生きている間はdoに戻って戦いを繰り返す

If dragon.HP > 0 Then ' ドラゴンが生き残っていたら
MsgBox "ドラゴン" & dragon.namae & "が勝ちました"
ElseIf dragon2.HP > 0 Then ' ドラゴン2が生き残っていたら
MsgBox "ドラゴン" & dragon2.namae & "が勝ちました"
Else ' どちらでもなかったら
MsgBox "引き分け"
End If

注釈などの文脈でおおよその流れはわかると思いますから、いろいろ手を加えてプログラムを理解してみてください。
    • good
    • 0

個人的にこういうプログラムは好きなんですが、いかんせんこれでどういう結果を求めているのかはわかりません。


まず、2匹の基本パラメータはあるようですが、このゲーム?はこの2匹が戦うのでしょうか?それともあなたと戦うのでしょうか。また、これらパラメータの用途が何かを(おおよそは想像が付きますが)はっきりさせたほうがいいでしょう。たとえば、kougekiとは通常攻撃の値か最大攻撃の値か、特に最後のif文で50より大きい場合の処理が入ってますが、なぜ50と決めている dragon.kougeki の値が50を超えることがあるのかの説明なしに答えを求めるのは酷というものです。そして一番の問題は、これらの戦闘の結果をどのように表示したいのか。途中経過は表現するのかです。
やはり環境がExcelということで、vbほどの表現が難しいだけに、そのあたりの仕様までははっきりさせないと、どうにもなりません。

あとは私の想像ですが、この後で

Randomize ' 乱数初期化
do
dragon.HP = dragon.HP - (dragon.bougyo * rnd - dragon2.kougeki * rnd) ' ドラゴンへの攻撃
dragon2.HP = dragon2.HP - (dragon2.bougyo * rnd - dragon.kougeki * rnd) ' ドラゴン2への攻撃
msgbox dragon.HP & " " & dragon2.HP ' 双方の残りHPを表示
loop while dragon.HP > 0 and dragon2.HP > 0 ' 双方が生きている間はdoに戻って戦いを繰り返す

と加えることで流れはいいかと思います。(もちろん攻撃の計算式は適当でバランスも取れていませんし、防御が上回って回復してしまう時もあります)

p.s. dim の所の変数名のつづりが間違ってますよ。^^
    • good
    • 0
この回答へのお礼

モンスター同士が戦うものを作りたかったのですが、説明が足りなくてすみませんでした。すごいしょぼいゲームでいんですが、戦闘結果は~の勝ちで表したいのですがどうすればいいのでしょうか?

お礼日時:2007/12/08 16:30

>ExcelでのVisual Basicのプログラミング


「エクセルVBA」というのが(分野が)あって、エクセル固有の操作(エクセルでできる機能を)スクリプトで動かすものがあります。
ほぼ仕事(ビジネス)の必要に絡むもの(数値や文字列の加工)です。この質問コーナーはそちらの質問がほとんどです。とりあえず、エクセルは、ゲームなどは念頭にありません(オブジェクト・メソッドプロパティも適したものはない)。
質問者がエクセルしか持ってないからなのか、持ち主が多いエクセルユーザーを対象とするためか判りませんが、VB(6.0相当)として使うならVBということで質問や勉強したら。
ーー
なぜエクセルなのか。シートのセルが扱いやすいと思ったのか、良くわかりません。
ーー
質問のコード程度で画面の像が動くなんて想像もできません。
やりたいというだけで、勉強はあまりしてなくてこれからということかな。
もしつくり方を知っている方がいても、このコーナーに回答を上げるのは量的に荷が重いと思う。
全部教えてと丸投げ的になっているので、もう少し判らない課題点を絞って質問すべきです。
    • good
    • 0

 この程度の内容では、貴方がどのようなゲームをイメージしているか全く判りません。


 まずは、基本的な所から勉強をしましょう。
http://www.geocities.jp/excelgame/books/intro.html
http://www1.plala.or.jp/chikada/cell/celltop.htm

その他にも、「Excel VBA ゲーム」等で検索すると、役に立つサイトがいっぱいあります。

頑張って下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!