クラスを使ったゲーム
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下にLZHとしてあります
グラフィックに手間をかけました
Option Explicit 'ステータス管理をするクラスを使う Private clsBattle As New Class1 'フォームがロードされた Private Sub Form_Load() Initialization Attack_Start End Sub '初期設定です Sub Initialization() '同じ戦闘にならないようにランダムを初期設定する Randomize Time '攻撃ボタンをイベント無効にします cmdAttack.Enabled = False 'キャラの位置の設定です imgMy.Move 24, 64, 60, 70 imgEnemy.Move 176, 16, 60, 70 labMy.Move 88, 104, 137, 17 labEnemy.Move 48, 16, 137, 17 'ステータスの設定です With clsBattle .My_Name = "黒猫" .My_Hp_Max = 100 .My_Hp = 100 .My_Str = 12 .My_Def = 5 .My_Qui = 20 .Enemy_Name = "宿敵ルキア" .Enemy_Hp_Max = 120 .Enemy_Hp = 120 .Enemy_Str = 9 .Enemy_Def = 7 .Enemy_Qui = 8 End With End Sub '戦闘を開始します Sub Attack_Start() timMy.Enabled = True timEnemy.Enabled = True MsgInfo "*** 戦闘開始! ***" End Sub '味方の動きのアクションです Sub My_Action() Dim j As Integer For j = 0 To 10 imgMy.Left = imgMy.Left + 10 imgMy.Top = imgMy.Top - 3 Next For j = 0 To 10 imgMy.Left = imgMy.Left - 10 imgMy.Top = imgMy.Top + 3 Next End Sub '敵の動きのアクションです Sub Enemy_Action() Dim j As Integer For j = 0 To 10 imgEnemy.Left = imgEnemy.Left - 10 imgEnemy.Top = imgEnemy.Top + 3 Next For j = 0 To 10 imgEnemy.Left = imgEnemy.Left + 10 imgEnemy.Top = imgEnemy.Top - 3 Next End Sub '味方の攻撃です Sub My_Attack() '一度、攻撃したのでイベント無効にします cmdAttack.Enabled = False My_Action 'HPからダメージを引きます With clsBattle If .Enemy_Def < .My_Str Then .Enemy_Damage = CInt(.My_Str + Rnd * (.My_Str - .Enemy_Def)) .Enemy_Hp = .Enemy_Hp - .Enemy_Damage Else .Enemy_Damage = CInt(Rnd * (3)) .Enemy_Hp = .Enemy_Hp - .Enemy_Damage End If End With '状況を表示します With clsBattle MsgInfo .My_Name & "の攻撃。" MsgInfo .Enemy_Name & "は、" & .Enemy_Damage & "のダメージをうけた。" '相手が倒れていたら相手を消して戦闘を終了する If .Enemy_Death = True Then timMy.Enabled = False timEnemy.Enabled = False imgEnemy.Visible = False labEnemy.Visible = False cmdAttack.Enabled = False MsgInfo .My_Name & "は、" & .Enemy_Name & "を倒した。" MsgInfo "*** 戦闘終了 ***" End If End With End Sub '敵の攻撃です Sub Enemy_Attack() Enemy_Action 'HPからダメージを引きます With clsBattle If .My_Def < .Enemy_Str Then .My_Damage = CInt(.Enemy_Str + Rnd * (.Enemy_Str - .My_Def)) .My_Hp = .My_Hp - .My_Damage Else .My_Damage = CInt(Rnd * (3)) .My_Hp = .My_Hp - .My_Damage End If End With '状況を表示します With clsBattle MsgInfo .Enemy_Name & "の攻撃。" MsgInfo .My_Name & "は、" & .My_Damage & "のダメージをうけた。" '相手が倒れていたら相手を消して戦闘を終了する If .My_Death = True Then timMy.Enabled = False timEnemy.Enabled = False imgMy.Visible = False labMy.Visible = False cmdAttack.Enabled = False MsgInfo .My_Name & "は、" & .Enemy_Name & "に倒された。" MsgInfo "*** 戦闘終了 ***" End If End With End Sub '攻撃ボタンをクリックした Private Sub cmdAttack_Click() My_Attack End Sub 'テキストボックスに状況を表示します Sub MsgInfo(ByVal strText As String) txtMsg.Text = txtMsg.Text & strText & vbCrLf txtMsg.SelStart = Len(txtMsg.Text) End Sub '敵のタイマーイベントが発生した Private Sub timEnemy_Timer() Enemy_Attack End Sub '味方のタイマーイベントが発生した Private Sub timMy_Timer() cmdAttack.Enabled = True End Sub |