SSブログ

[Algo]DQ1の復活の呪文解析[Page3] [Programming Algorithm]

[Algo]DQ1の復活の呪文解析[Page2]からの続きです。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[Algo]DQ1の復活の呪文解析[Page1]
[Algo]DQ1の復活の呪文解析[Page2]
[Algo]DQ1の復活の呪文解析[Page3]
[Algo]DQ1の復活の呪文解析[Page4]
''' <summary>
''' 「DQ1 - 復活の呪文解析ツール」
''' </summary>
''' <remarks></remarks>
Public Class FrmDq1

    ''' <summary>
    '''道具コンボボックスの配列
    ''' </summary>
    ''' <remarks></remarks>
    Private _cmbItemList() As ComboBox = Nothing

    ''' <summary>
    ''' 画面起動時
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub FrmDq1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        '武器
        Me.cmbWeapon.DataSource = Dq1ConstData.WEAPON_LIST
        '鎧
        Me.cmbArmor.DataSource = Dq1ConstData.ARMOR_LIST
        '盾
        Me.cmbShield.DataSource = Dq1ConstData.SHIELD_LIST

        '道具
        Me.cmbItem1.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem2.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem3.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem4.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem5.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem6.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem7.DataSource = Dq1ConstData.ITEM_LIST.Clone()
        Me.cmbItem8.DataSource = Dq1ConstData.ITEM_LIST.Clone()

        '道具
        Me._cmbItemList = New ComboBox() {
            Me.cmbItem1, Me.cmbItem2, Me.cmbItem3, Me.cmbItem4, _
            Me.cmbItem5, Me.cmbItem6, Me.cmbItem7, Me.cmbItem8
        }

    End Sub


    ''' <summary>
    ''' 「解析」ボタン
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnGetParam_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnGetParam.Click

        'パスワードを変換(文字列→数値)
        Dim passAnlz As New Dq1PasswordAnalizer()

        Dim passInfo As New Dq1Password( _
            Me.txtPass1.Text.Trim(), _
            Me.txtPass2.Text.Trim(), _
            Me.txtPass3.Text.Trim(), _
            Me.txtPass4.Text.Trim())

        If passInfo Is Nothing Then
            MessageBox.Show("復活の呪文が違います。""エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return
        End If

        Dim plInfo As PlayerInformation = passAnlz.GetPlayerInfoFromPassword(passInfo)

        If plInfo Is Nothing Then
            MessageBox.Show("復活の呪文が違います。""エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return
        End If

        Me.txtLevel.Text = plInfo.Level.ToString()

        Me.txtPlayerName.Text = plInfo.Name.ToString()
        Me.numGold.Value = plInfo.Gold
        Me.numExp.Value = plInfo.Experience
        Me.numHerb.Value = plInfo.HerbNum
        Me.numKey.Value = plInfo.MagicKeyNum

        Me.cmbWeapon.SelectedIndex = plInfo.Weapon
        Me.cmbArmor.SelectedIndex = plInfo.Armor
        Me.cmbShield.SelectedIndex = plInfo.Shild

        For i As Integer = 0 To Me._cmbItemList.Length - 1
            Me._cmbItemList(i).SelectedIndex = plInfo.ItemList(i)
        Next

        Me.chkFlag1.Checked = plInfo.Flag1 = 1
        Me.chkFlag2.Checked = plInfo.Flag2 = 1
        Me.chkFlag3.Checked = plInfo.Flag3 = 1
        Me.chkFlag4.Checked = plInfo.Flag4 = 1
        Me.chkFlag5.Checked = plInfo.Flag5 = 1

        Me.numCrypt.Value = plInfo.CryptKey
        Me.txtResult.Text = plInfo.CheckCode.ToString()

        If plInfo.CheckCode <> 0 Then
            '基本的にはありえないですが。。。
            MessageBox.Show("復活の呪文が違います。(一部だけ)""エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return
        End If

    End Sub

    ''' <summary>
    ''' 「生成」ボタン
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnGetPass_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnGetPass.Click

        Dim plInfo As New PlayerInformation()

        plInfo.Name = New PlayerName(Me.txtPlayerName.Text)

        If plInfo.Name.NameCode Is Nothing Then
            MessageBox.Show("名前が不正です。""エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return
        End If

        plInfo.Gold = Me.numGold.Value
        plInfo.Experience = Me.numExp.Value
        plInfo.HerbNum = Me.numHerb.Value
        plInfo.MagicKeyNum = Me.numKey.Value

        plInfo.Weapon = Me.cmbWeapon.SelectedIndex
        plInfo.Armor = Me.cmbArmor.SelectedIndex
        plInfo.Shild = Me.cmbShield.SelectedIndex

        For i As Integer = 0 To Me._cmbItemList.Length - 1
            plInfo.ItemList(i) = Me._cmbItemList(i).SelectedIndex
        Next

        plInfo.Flag1 = IIf(Me.chkFlag1.Checked, 1, 0)
        plInfo.Flag2 = IIf(Me.chkFlag2.Checked, 1, 0)
        plInfo.Flag3 = IIf(Me.chkFlag3.Checked, 1, 0)
        plInfo.Flag4 = IIf(Me.chkFlag4.Checked, 1, 0)
        plInfo.Flag5 = IIf(Me.chkFlag5.Checked, 1, 0)

        plInfo.CryptKey = Me.numCrypt.Value

        Dim passAnlz As New Dq1PasswordAnalizer()

        Dim dqPass As String = _
            passAnlz.GetPasswordFromPlayerInfo(plInfo).ToString().PadRight(20, " ")

        Me.txtPass1.Text = dqPass.PadRight(20, " ").Substring(0, 5)
        Me.txtPass2.Text = dqPass.PadRight(20, " ").Substring(5, 7)
        Me.txtPass3.Text = dqPass.PadRight(20, " ").Substring(12, 5)
        Me.txtPass4.Text = dqPass.PadRight(20, " ").Substring(17, 3)

    End Sub

    ''' <summary>
    ''' 「経験値」変更
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub numExp_ValueChanged(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles numExp.ValueChanged
        Me.txtLevel.Text = Dq1ConstData.GetLevel(Me.numExp.Value).ToString()
    End Sub

    ''' <summary>
    ''' テキストボックスのフォーカス取得時
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub txtCommon_Enter(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles _
        txtPass1.Enter, txtPass2.Enter, txtPass3.Enter, txtPass4.Enter, _
        txtLevel.Enter, txtPlayerName.Enter, txtResult.Enter

        CType(sender, TextBox).SelectAll()
    End Sub


End Class
[VB.NET]FrmDq1.vb


続きはこちらから
[Algo]DQ1の復活の呪文解析[Page4]
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。