Option Strict Off
Option Explicit On
Imports System.Windows.Forms
'------------------------------------ 2023/11/09 ------------------------------------
Public Class Clsコレココ

#Region "宣言"
    '********************************************************************************
    Public WithEvents DlgFileゲーム用 As 四frmDlgPctFilesList
    Public WithEvents 標準オプション設定Dlg As 四frmDlgOptionSTD
    Public WithEvents 標準サウンド設定Dlg As 四frmDlgSound
    '********************************************************************************
    Private mImg現在のゲーム用 As Image = Nothing : Private mImg現在のゲーム用Gray As Image = Nothing : Private mImg現在サイズGray As Image = Nothing
    '********************************************************************************
    Private WithEvents イベントgAppEventMaker As 五clsEventMaker
    '********************************************************************************
    Private Structure typeカードーデーター
        Dim DoDraw As Boolean 'True = 次回に描画するフラッグ
        Dim 当り削除ずみ As Boolean '当り削除ずみになっていれば   True
        Dim 実寸領域 As RECT 'カードのタイル配列の実寸領域　１ピクセル左と下で隣とダブル
        Dim 内側領域 As RECT 'カードの隣とダブらない内側領域
        Dim 内側WD As Integer '内側領域.Width
        Dim 内側HT As Integer '内側領域.Height
        Dim 内側領域Card As RECT 'カードの隣とダブらない内側領域     PctCard用に左と下を +1
        Dim 内側WDCard As Integer '内側領域Card.Width                 PctCard用に左と下を +1
        Dim 内側HTCard As Integer '内側領域Card.Height                PctCard用に左と下を +1
        Dim 画素カードID As Integer 'このカードの画素の本来の位置のカードインデックス
        Dim カード枠幅 As Integer
    End Structure
    Private mカード配列(app最大カード枚数) As typeカードーデーター '全てのカードーデーター  1　から始まり、c最大枚数 になる。
    '********************************************************************************
    Private DoeventCall As Boolean = False
    '***********************************************************************
#End Region

#Region "aa外部とのインタフェイス"
    '***********************************************************************
    Protected Overrides Sub Finalize()
        If mImg現在のゲーム用 IsNot Nothing Then mImg現在のゲーム用.Dispose()
        If mImg現在のゲーム用Gray IsNot Nothing Then mImg現在のゲーム用Gray.Dispose()
        If mImg現在サイズGray IsNot Nothing Then mImg現在サイズGray.Dispose()
        MyBase.Finalize()
    End Sub
    '***********************************************************************
    Friend Function aa初期設定オブジェ設定() As Boolean
        '----------------------------------------
        '2023/08/05 new
        mImg現在のゲーム用 = New Bitmap(2000, 1200)
        mImg現在のゲーム用Gray = New Bitmap(2000, 1200)
        mImg現在サイズGray = New Bitmap(2000, 1200)
        frmMain.pctBmp.Image = New Bitmap(2000, 1200)
        frmMain.pctメイン.Image = New Bitmap(2000, 1200)
        '----------------------------------------
        frmMain.pctCard.Image = New Bitmap(1000, 500)
        frmMain.pctCardHit.Image = New Bitmap(1000, 500)
        '----------------------------------------
        イベントgAppEventMaker = gAppEventMaker
        '----------------------------------------
        DlgFileゲーム用 = New 四frmDlgPctFilesList
        gggbol = DlgFileゲーム用.aa初期設定オブジェ設定("ゲーム用ファイルを設定", gmDlgFileゲーム用, &HAAFFFF&, False)
        '----------------------------------------
        gggbol = frmMain.ゲームデーター表示(3, 0, 0)
        '----------------------------------------
        Return True
    End Function
    '***********************************************************************
    Friend Function aaDlgFileゲーム用_aaウインドウ初期化作成_After_Ini_Read() As String
        If DlgFileゲーム用 Is Nothing Then Return ""
        gggstr = DlgFileゲーム用.aaウインドウ初期化作成()
        Dim ファイル As String = DlgFileゲーム用.p画像ファイル現在使用()
        Return zzゲーム描画用ファイル新規設定(frmMain, ファイル)
    End Function
    '***********************************************************************
    Friend Function aaDlgFileゲーム用_aaウインドウ_Close() As Boolean
        If DlgFileゲーム用 Is Nothing Then Return False
        DlgFileゲーム用.Close()
        Return True
    End Function
    '***********************************************************************
    Friend Function aaゲームクリア(Optional ByVal tmp使用しない引数 As Boolean = False) As Boolean
        Dim a As Integer
        If gmアプリ終了する Then Return True
        If イベントgAppEventMaker Is Nothing Then Return True
        '-----------------------------------------------------

        If ppゲーム実行中 Then
            '************************************************
            gggbol = frmMain.ゲームデーター表示(3, 0, 0)
            '************************************************
        End If

        For a = 1 To p現在のカード枚数
            mカード配列(a).当り削除ずみ = True
        Next
        gggbol = イベントgAppEventMaker.MakeEventタイマーのオンオフonスイスイonff(gmDlgFileゲーム用, False)
        gggstr = イベントgAppEventMaker.MakeEventゲーム開始と停止(False, "")
        ppゲームクリア状態 = True
        frmMain.pctメイン.Visible = True
        gggbol = aaフォームマウスイベント処理(False, 173, 0, 0, 0, 0)
        '-----------------------------------------------------
        If frmMain.pctメイン.Image IsNot Nothing Then
            If frmMain.pctメイン.Image.Width <> frmMain.ClientRectangle.Width Then
                aa描画用_pctBoxs_セットImage(frmMain, CStr(CInt(Rnd() * 100000)))
                'qqqqq("aa描画用_pctBoxs_セットImage  in  aaゲームクリア()")
            End If
        End If
        '-----------------------------------------------------
        frmMain.Invalidate()
        frmMain.Refresh()
        '-----------------------------------------------------
        'qqqqq("gmアプリ固有クラス.aaゲームクリア()")
        Return True
    End Function
    '***********************************************************************
    Friend Function aaフォームマウスイベント処理(ByRef EventFromWnd As Boolean, ByRef MouseOp As Integer, ByRef Button As Integer, ByRef X As Integer, ByRef Y As Integer, ByRef OnLoopCardID As Integer) As Boolean
        If gmアプリ終了する Then
            Return True
        End If
        Static mドラッグカード As Integer       'マウスダウンのドラッグされているカード、mカード配列() 配列内のインデックス。
        Static mドロップ先カード As Integer     'ドラッグカードがドロップされた位置のカード、mカード配列() 配列内のインデックス。
        Static mDnX, mDnY As Integer            'フォーム上のマウスダウン時の X Y
        Static mDnPxtLeft, mDnPctTop As Integer 'フォーム上のマウスダウン時の  pctCard の Left / Top
        Static mMouseFlag As Integer            '左右マウスボタンが押されたフラッグ
        Dim MoveAryX() As Integer : Dim MoveAryY() As Integer : Dim n, a, max As Integer : Dim px, py As Single : Dim EndGame As Boolean : Dim rc As RECT
        Dim o現在のカード枚数, oカードスピード As Integer
        Dim mMenuHight As Integer = frmMain.mMenuHight
        Dim pctCard, pctCardHit As PictureBox : Dim pnl仮表示 As Panel
        With frmMain
            If MouseOp <> 2 Then 'NOT Form_MouseMove
                o現在のカード枚数 = p現在のカード枚数
                oカードスピード = pカードスピード実効値(pカードスピード)
            End If
            pctCard = .pctCard : pctCardHit = .pctCardHit : pnl仮表示 = .pnl仮表示
        End With
        Select Case MouseOp
            '2018/09/18----------------------------------
            Case 173 '外部からの　subデータークリア:　の呼び出しだけ
                gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示) '
                '2018/09/18----------------------------------
            Case 1 'Form_MouseDown
                If Not ppゲーム実行中 Then
                    gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                    mMouseFlag = 0
                ElseIf Button = MouseButtons.Left Then
                    gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                    mMouseFlag = 1
                    mドラッグカード = 0
                    If OnLoopCardID > 0 Then
                        mドラッグカード = OnLoopCardID
                    Else
                        For a = 1 To o現在のカード枚数
                            With mカード配列(a)
                                If .当り削除ずみ = False And mドラッグカード <> a Then
                                    If ⅩRect内にXY座標がある(X, Y, .実寸領域) Then
                                        mドラッグカード = a : Exit For
                                    End If
                                End If
                            End With
                        Next
                    End If
                    If mドラッグカード > 0 Then
                        gmゲーム実行中_in_MouseEvent = True
                        '----------------------------------------------
                        With mカード配列(mドラッグカード)
                            pctCard.SetBounds(.内側領域Card.lll, .内側領域Card.ttt + mMenuHight, .内側WDCard, .内側HTCard)
                            pctCard.Visible = True
                            Dim g As Graphics = Graphics.FromImage(pctCard.Image)
                            If g IsNot Nothing Then
                                Dim 田 As Rectangle : 田.X = 0 : 田.Y = 0 : 田.Width = pctCard.Width : 田.Height = pctCard.Height
                                g.DrawImage(frmMain.pctメイン.Image, 田, pctCard.Left, pctCard.Top - mMenuHight, pctCard.Width, pctCard.Height, GraphicsUnit.Pixel)
                                gggbol = zzカードの枠を描画(g, 田, Nothing, pゲーム配色外枠ドラッグ, .カード枠幅)
                                g.Dispose()
                            End If
                        End With
                        '----------------------------------------------
                        mDnPxtLeft = (pctCard.Left) : mDnPctTop = (pctCard.Top)
                        mDnX = X : mDnY = Y
                        With pctCard
                            pnl仮表示.SetBounds(.Left, .Top, .Width, .Height)
                            pnl仮表示.Visible = True
                        End With
                    End If
                ElseIf mMouseFlag = 0 Then
                    gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                    mMouseFlag = 11 : mDnX = X : mDnY = Y
                End If
            Case 2 'Form_MouseMove
                If Button = MouseButtons.Left And mMouseFlag = 1 And mドラッグカード > 0 And pctCard.Visible Then
                    pctCard.SetBounds(mDnPxtLeft + (X - mDnX), mDnPctTop + (Y - mDnY), 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
                End If
            Case 3 'Form_MouseUp
                If Button = MouseButtons.Left Then
                    If mMouseFlag = 1 And mドラッグカード > 0 And pctCard.Visible Then
                        With frmMain
                            mドロップ先カード = 0
                            If OnLoopCardID > 0 Then
                                mドロップ先カード = OnLoopCardID
                            Else
                                n = mカード配列(mドラッグカード).画素カードID
                                With mカード配列(n)
                                    If ⅩRect内にXY座標がある(X, Y, .実寸領域) And .当り削除ずみ = False And mドラッグカード <> n Then
                                        mドロップ先カード = n
                                    End If
                                End With
                            End If
                            '----------------------------------------------
                            EndGame = False
                            '----------------------------------------------
                            If mドロップ先カード = 0 Then 'はずれ
                                max = Ⅹ画面内での移動用配列の要素数の設定_平方根で(((pctCard.Left)), ((pctCard.Top)), mDnPxtLeft, mDnPctTop, oカードスピード / 30, 2, 200)
                                max = Math.Max(2, max)
                                'qqqqq "* " + CStr(max) + "    oカードスピード  " + CStr(oカードスピード)
                                ReDim MoveAryX(max) : px = ((pctCard.Left) - mDnPxtLeft) / max : For a = 1 To max : MoveAryX(a) = (pctCard.Left) - (px * (a - 1)) : Next
                                ReDim MoveAryY(max) : py = ((pctCard.Top) - mDnPctTop) / max : For a = 1 To max : MoveAryY(a) = (pctCard.Top) - (py * (a - 1)) : Next
                                For a = 1 To max
                                    Call Sleep(1) '???????????????????????????????
                                    pctCard.SetBounds(MoveAryX(a), MoveAryY(a), 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y) 'はずれたカードが元の位置に戻る
                                    pctCard.Refresh()
                                    If Not pカード移動の軌跡を残すBOOL Then frmMain.Refresh() '軌跡を残すなら OFF  ****************************************
                                Next
                                pctCard.Visible = False
                                '----------------------------------------------
                            Else '当り
                                '------------------------------------------------------
                                With mカード配列(mドロップ先カード)
                                    pctCard.SetBounds(.内側領域Card.lll, mMenuHight + .内側領域Card.ttt, 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
                                    Call SetRect(rc, 0, 0, .内側WD, .内側HT)
                                End With
                                frmMain.Refresh()  '必須
                                If pカード一致で反転するBOOL Then
                                    '反転する
                                    gggint = ⅩInvertRect_WndHandle((pctCard.Handle), rc, True)
                                    Call Sleep(500)
                                Else
                                    Call Sleep(100)
                                End If
                                frmMain.Refresh()
                                '------------------------------------------------------
                                With pctCard : pctCardHit.SetBounds(.Left, .Top, .Width, .Height) : End With
                                'pnl仮表示.Visible = False
                                Call Sleep(1)
                                '------------------------------------------------------
                                pctCardHit.Visible = True
                                pctCardHit.BringToFront()
                                Dim g As Graphics = Graphics.FromImage(pctCardHit.Image)
                                If g IsNot Nothing Then
                                    Dim 田 As Rectangle : 田.X = 0 : 田.Y = 0 : 田.Width = pctCardHit.Width : 田.Height = pctCardHit.Height
                                    g.DrawImage(frmMain.pctメイン.Image, 田, pctCardHit.Left, pctCardHit.Top - mMenuHight, pctCardHit.Width, pctCardHit.Height, GraphicsUnit.Pixel)
                                    g.Dispose()
                                End If
                                '----------------------------------------------
                                'あたり音を鳴らす。
                                If pサウンドを鳴らす And (aa残りカード枚数() > 2) Then  'この時点で、まだ２枚残っている
                                    Dim sfile As String = IIf(pサウンドファイルを順次変更する, pサウンドファイルの配列_NEXT(), pサウンドファイル)
                                    gggbol = イベントgAppEventMaker.MakeEventサウンドファイルの実行を開始します(sfile)
                                    gggbol = Ⅹサウンドを鳴らす(sfile, 1, False, True)
                                Else
                                    'qqqqq("残り２枚　以下")
                                End If
                                '------------------------------------------------------
                                max = Ⅹ画面内での移動用配列の要素数の設定_平方根で(((pctCardHit.Left)), ((pctCardHit.Top)), mDnPxtLeft, mDnPctTop, oカードスピード / 30, 2, 200)
                                max = Math.Max(2, max)
                                'qqqqq "* " + CStr(max) + "oカードスピード  " + CStr(oカードスピード)
                                ReDim MoveAryX(max) : px = ((pctCardHit.Left) - mDnPxtLeft) / max : For a = 1 To max : MoveAryX(a) = (pctCardHit.Left) - (px * (a - 1)) : Next
                                ReDim MoveAryY(max) : py = ((pctCardHit.Top) - mDnPctTop) / max : For a = 1 To max : MoveAryY(a) = (pctCardHit.Top) - (py * (a - 1)) : Next
                                For a = 1 To max
                                    Call Sleep(1) '???????????????????????????
                                    pctCardHit.SetBounds(MoveAryX(a), MoveAryY(a), 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
                                    pctCardHit.Refresh()
                                    If Not pカード移動の軌跡を残すBOOL Then frmMain.Refresh() '軌跡を残すなら OFF  ****************************************
                                Next
                                pnl仮表示.Visible = False
                                pctCard.Visible = False
                                pctCardHit.Visible = False
                                '------------------------------------------------------
                                Call Sleep(200)
                                '------------------------------------------------------
                                mカード配列(mドラッグカード).画素カードID = mカード配列(mドロップ先カード).画素カードID
                                mカード配列(mドラッグカード).当り削除ずみ = (mカード配列(mドラッグカード).画素カードID = mドラッグカード)
                                mカード配列(mドロップ先カード).当り削除ずみ = True
                                mカード配列(mドロップ先カード).画素カードID = mドロップ先カード
                                '------------------------------------------------------
                                For a = 1 To o現在のカード枚数
                                    mカード配列(a).DoDraw = (a = mドラッグカード Or a = mドロップ先カード)
                                Next
                                '----------------------------------------------
                                .pctメイン.Invalidate()
                                .Invalidate()
                                .Refresh()
                                '----------------------------------------------
                                Call Sleep(500)
                                '----------------------------------------------
                                If zz残りカードがない() Then
                                    Call .aaゲームクリア(False)
                                    .Refresh()
                                    'あたり音を鳴らす。
                                    If pサウンドを鳴らす Then
                                        Dim sfile As String = pサウンドファイル
                                        gggbol = イベントgAppEventMaker.MakeEventサウンドファイルの実行を開始します(sfile)
                                        gggbol = Ⅹサウンドを鳴らす(sfile, 2, True, True)
                                    End If
                                    EndGame = True
                                End If
                                '----------------------------------------------
                            End If
                            gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                            gmゲーム実行中_in_MouseEvent = False
                            '------------------------------------------------------
                            If EndGame Then
                                Call .mn1gameゲームクリア_Click(Nothing, Nothing)
                                Call .aa_スイスイを自動実行_もし設定されていれば()
                                Dim wOptionRetStr As String = ""
                                gggstr = イベントgAppEventMaker.MakeEventゲーム開始と停止(False, wOptionRetStr)
                                '***********************************************************************
                                gggbol = frmMain.ゲームデーター表示(2, (p現在のカード枚数), 0)
                                '***********************************************************************
                            End If
                            '------------------------------------------------------
                        End With
                    Else
                        gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                    End If
                    '------------------------------------------------------
                Else  'Form_MouseUp  しかし  Button <> MouseButtons.Left
                    If mMouseFlag = 11 And System.Math.Abs(X - mDnX) < 20 And System.Math.Abs(Y - mDnY) < 20 Then
                        gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                        frmMain.pctBmp.Visible = Not frmMain.pctBmp.Visible
                    ElseIf mMouseFlag <> 1 Then
                        gggbol = zzフォームマウスイベント処理subデータークリア(mドラッグカード, mドロップ先カード, mMouseFlag, mDnX, mDnY, mDnPxtLeft, mDnPctTop, pctCard, pnl仮表示)
                    End If
                End If
        End Select
        Return True
    End Function
    Private Function zzフォームマウスイベント処理subデータークリア(ByRef mドラッグカード As Integer, ByRef mドロップ先カード As Integer, ByRef mMouseFlag As Integer, _
                                ByRef mDnX As Integer, ByRef mDnY As Integer, ByRef mDnPxtLeft As Integer, ByRef mDnPctTop As Integer, ByRef pctCard As PictureBox, ByVal pnl仮表示 As Panel) As Boolean
        mドラッグカード = 0 : mドロップ先カード = 0 : mMouseFlag = 0 : mDnX = 0 : mDnY = 0 : mDnPxtLeft = 0 : mDnPctTop = 0 : pctCard.Visible = False : pnl仮表示.Visible = False
        frmMain.pctBmp.Visible = (frmMain.pctメイン.Visible = False And (Not ppスイスイフラフラ_いずれかあるいは両方_を実行中))
        gmゲーム実行中_in_MouseEvent = False
    End Function
    '***********************************************************************
    Friend Function aaカードの配置と再描画(ByRef rNew1_WndReSize2_PropChange3) As Boolean
        If gmアプリ終了する Then Return True
        '*****************************************************************************************************
        On Error GoTo errop
        Dim カード幅, 現在の縦横個数, カード高 As Integer, 現在のカード枚数 As Integer
        Dim idx() As Integer
        Dim x1, n, b, a, c, m, y1, MenuHT As Integer
        '*****************************************************************************************************
        With frmMain
            If .mmLoading Then Return False
            '*****************************************************************************************************
            MenuHT = .mMenuHight
            現在のカード枚数 = p現在のカード枚数
            If 現在のカード枚数 = 0 Then Return False
            現在の縦横個数 = System.Math.Sqrt(現在のカード枚数)
            カード幅 = .ClientRectangle.Width \ 現在の縦横個数
            カード高 = (.ClientRectangle.Height - MenuHT) \ 現在の縦横個数
            '*****************************************************************************************************
            '新規に配るか、フォームリサイズの場合には、、、
            If rNew1_WndReSize2_PropChange3 <> 3 Then
                '------------------------------------------------
                '新規に配る場合には、、、
                If rNew1_WndReSize2_PropChange3 = 1 And ppスイスイフラフラ_いずれも停止している Then
                    '------------------------------------------------
                    '前回のデーターが残っている場合もあるので、画素カードIDを０にリセットする。
                    For a = 1 To 現在のカード枚数
                        With mカード配列(a)
                            .当り削除ずみ = False : .画素カードID = 0
                        End With
                    Next
                    '------------------------------------------------
                    '全てのカードにハズレの画素カードIDを設定しておく。
                    Randomize()
                    For a = 1 To 現在のカード枚数
                        m = 0
                        b = Math.Max(1, Rnd() * 現在のカード枚数)
                        Do
                            If b <> a Then
                                For c = 1 To 現在のカード枚数
                                    If mカード配列(c).画素カードID = b Then Exit For
                                Next
                                If c > 現在のカード枚数 Then
                                    mカード配列(a).画素カードID = b : Exit Do
                                End If
                            End If
                            b = b + 1
                            If b > 現在のカード枚数 Then b = 1
                            '------------------------------------------------
                            m = m + 1
                            If m > 現在のカード枚数 + 10 Then '最後の一枚の 画素カードID は、ひとつしか残っていないので、偶然に自身のインデックスになる場合
                                '                        qqqqq "配列(" + CStr(a) + ") error Exit Do": 'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
                                Exit Do
                            End If
                        Loop
                        '------------------------------------------------
                        '最後の一枚の 画素カードID は、ひとつしか残っていないので、偶然に自身のインデックスになる場合、、、
                        If a = 現在のカード枚数 And mカード配列(a).画素カードID = 0 Then
                            c = Math.Max(1, Rnd() * (a - 1)) '任意のインデックスの　画素カードID　と交換しておく
                            mカード配列(a).画素カードID = mカード配列(c).画素カードID
                            mカード配列(c).画素カードID = a
                        End If
                    Next
                    '------------------------------------------------
                    'pヒント表示　にあわせて当り枚数を増やす。当りカードのインデックスを選択して配列に入れる。
                    m = 現在のカード枚数 * pヒント表示 \ 100
                    ReDim idx(1 + m)
                    idx(1) = (現在のカード枚数 + 1) \ 2 '１枚だけは規定として当りにしておく。
                    For b = 1 To m
                        x1 = Math.Max(1, Rnd() * 現在の縦横個数)
                        y1 = Math.Max(1, Rnd() * 現在の縦横個数) - 1
                        a = Math.Min(現在のカード枚数, y1 * 現在の縦横個数 + x1)
                        Do
                            If Ⅹ数値の配列内のインデックス(a, idx) > 0 Then
                                a = a + 1
                                If a > 現在のカード枚数 Then a = 1
                            Else
                                Exit Do
                            End If
                        Loop
                        idx(1 + b) = a
                        'If idx(1 + b) < 1 Then qqqqq(CStr(idx(1 + b)))
                    Next
                    '------------------------------------------------
                    '当りカードを設定して、画素カードIDを交換する。
                    For b = 1 To m + 1
                        a = idx(b)
                        With mカード配列(a)
                            .当り削除ずみ = True : n = .画素カードID : .画素カードID = a
                            For c = 1 To 現在のカード枚数
                                With mカード配列(c)
                                    If a <> c Then
                                        If .画素カードID = a Then
                                            .画素カードID = n : .当り削除ずみ = (c = n)
                                            Exit For
                                        End If
                                    End If
                                End With
                            Next
                        End With
                    Next
                End If
                '------------------------------------------------
                'サイズの再設定  '新規に配る or フォームリサイズの場合
                For a = 1 To 現在のカード枚数
                    With mカード配列(a)
                        n = a - 1
                        x1 = (n Mod 現在の縦横個数) * カード幅
                        y1 = (n \ 現在の縦横個数) * カード高
                        Call SetRect(.実寸領域, x1, y1, x1 + カード幅, y1 + カード高)
                        Call SetRect(.内側領域, x1 + 1, y1 + 1, x1 + カード幅 - 1, y1 + カード高 - 1)
                        .内側WD = ⅩRect幅(.内側領域) '内側領域.Width
                        .内側HT = ⅩRect高(.内側領域) '内側領域.Height
                        Call SetRect(.内側領域Card, x1 + 1, y1 + 1, x1 + カード幅, y1 + カード高)
                        .内側WDCard = ⅩRect幅(.内側領域Card) '内側領域.Width
                        .内側HTCard = ⅩRect高(.内側領域Card) '内側領域.Height
                    End With
                Next
                'qqqqq("サイズの再設定  '新規に配る or フォームリサイズの場合")
            End If
            '*****************************************************************************************************
            n = Math.Max(2, Math.Min(カード幅, カード高) * pカードサイズ枠の太さ実効値(pカードサイズ枠の太さ))
            For a = 1 To 現在のカード枚数
                mカード配列(a).DoDraw = True : mカード配列(a).カード枠幅 = n
            Next
            '*****************************************************************************************************
            frmMain.pctメイン.Invalidate()
            frmMain.Invalidate()
            '-------------------------------------------
            If zz残りカードがない() Then
                ppゲームクリア状態 = True
            Else
                ppゲーム実行中 = True
            End If
            If rNew1_WndReSize2_PropChange3 = 1 Then
                pゲーム用ファイルの切り替え_カレントカウント = 0
                gggbol = イベントgAppEventMaker.MakeEventタイマーのオンオフonスイスイonff(gmDlgFileゲーム用, True)
                '***********************************************************************
                gggbol = frmMain.ゲームデーター表示(0, (p現在のカード枚数), (p現在のカード枚数))
                '***********************************************************************
            End If
            gggstr = イベントgAppEventMaker.MakeEventゲーム開始と停止(ppゲーム実行中, "")
            '-------------------------------------------
            'Static mm As Integer : mm = mm + 1 : qqqqq(CStr(mm) + " ■■aaカードの配置と再描画() " + CStr(.ClientSize.Width) + ", " + CStr(.ClientSize.Height))
            Return True 'すべて描画する
        End With
        '*****************************************************************************************************
        ''デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        'If rNew1_WndReSize2_PropChange3 = 1 Then            'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    For a = 1 To 現在のカード枚数                   'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        If mカード配列(a).画素カードID = 0 Then qqqqq "error   配列(" + CStr(a) + ").画素カードID = 0"  'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    Next                                            'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    For a = 1 To 現在のカード枚数                   'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        With mカード配列(a)                         'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '            If .画素カードID = a And .当り削除ずみ = False Then         'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '                qqqqq "error   配列(" + CStr(a) + ").画素カードID = " + CStr(.画素カードID) + "    .当り削除ずみ = " + CStr(.当り削除ずみ) 'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '            End If                                  'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        End With                                    'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    Next                                            'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        'End If                                              'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        ''デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        'If rNew1_WndReSize2_PropChange3 = 1 Then            'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    For a = 1 To 現在のカード枚数                   'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        With mカード配列(a)                         'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '            qqqqq "配列(" + CStr(a) + ").画素カードID = " + CStr(.画素カードID) 'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        End With                                    'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    Next                                            'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        ''デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    For a = 1 To 現在のカード枚数                   'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        For b = 1 To 現在のカード枚数               'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '            With mカード配列(b)                     'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '                If .画素カードID = a Then           'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '                    qqqqq CStr(a) + " = " + "配列(" + CStr(b) + ").画素カードID" + "    .当り削除ずみ = " + CStr(.当り削除ずみ) 'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '                    Exit For                        'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '                End If                              'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '            End With                                'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        Next                                        'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '        If b > 現在のカード枚数 Then qqqqq CStr(a) + " = " 'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '    Next                                            'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        'End If                                              'デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        ''デバッグ検査コード @@@@@@@@@@@@@@@@@@@@@@@@
        '*****************************************************************************************************
        '----------------------------------------------------------------------------------------------------
        Exit Function
        '----------------------------------------------------------------------------------------------------
errop:
        MsgBox("ERROR in aaカードの配置と再描画()  " + vbCrLf + ErrorToString()) : Return False
        '----------------------------------------------------------------------------------------------------
    End Function
    '***********************************************************************
    Friend Function aafrmMain_Paint() As Boolean
        If ppスイスイフラフラ_いずれかあるいは両方_を実行中 Then
            Return False
        Else
            If frmMain.pctメイン.Image Is Nothing Then Return False
            Return zzカード描画(False)
        End If
    End Function
    '***********************************************************************
    Friend Function aaフォームサイズセットとカードの配置と再描画(ByRef rNew1_WndReSize2_PropChange3 As Integer) As Boolean
        '------------------------------------------------
        Static ココから呼び出した As Boolean
        If ココから呼び出した Then Return True
        '------------------------------------------------
        With frmMain
            Dim OldWD As Integer = .Width : Dim OldHT As Integer = .Height
            If .WindowState = FormWindowState.Maximized Then
                'no op only   Return aaカードの配置と再描画(rNew1_WndReSize2_PropChange3)
            Else
                Dim rXY個数 As Integer = Math.Sqrt(p現在のカード枚数)
                Dim rカード群領域最小サイズ As Integer = (appカード群領域最小サイズ \ rXY個数) * rXY個数
                '------------------------------------------------
                Dim rc As RECT : Dim scrnWD, scrnHT, scrnRight, scrnLeft, scrnTop, scrnBottom As Integer
                gggint = ⅩGetScreenSizeNET(rc, scrnWD, scrnHT, scrnLeft, scrnTop, scrnRight, scrnBottom)
                '------------------------------------------------
                Dim WDmax, HTmax, WDmin, HTmin, Min面積, WndFrameAddWD, WndFrameAddHT, OldMeScaleHeight As Integer
                WndFrameAddWD = .Width - .ClientSize.Width
                WDmax = Math.Max(scrnRight - scrnLeft - WndFrameAddWD, .ClientSize.Width)
                WndFrameAddHT = .Height - .ClientSize.Height - .mMenuHight
                HTmax = Math.Max(scrnBottom - scrnTop - WndFrameAddHT, .ClientSize.Height - .mMenuHight)
                '------------------------------------------------
                WDmin = rカード群領域最小サイズ
                HTmin = rカード群領域最小サイズ
                OldMeScaleHeight = .ClientSize.Height - .mMenuHight
                Min面積 = WDmin * HTmin
                '------------------------------------------------
                'Debug.Print "pct max WD HT --- " + CStr(WDmax) + ", " + CStr(HTmax)
                '------------------------------------------------
                Dim 縦横比 As Single : Dim yy, xx, WDminTWP, HTminTWP, newWndWD, newWndHT, Cur面積 As Integer
                WDminTWP = WDmin : HTminTWP = HTmin
                newWndWD = .Width : newWndHT = .Height
                xx = newWndWD - WndFrameAddWD : yy = newWndHT - WndFrameAddHT
                xx = Math.Max(100, xx) : yy = Math.Max(100, yy)
                縦横比 = yy / xx
                Cur面積 = xx * yy
                Do
                    縦横比 = yy / xx
                    If xx >= WDminTWP And yy >= HTminTWP And 縦横比 <= 4 And 縦横比 >= 0.25 Then
                        Exit Do
                    Else
                        If 縦横比 > 4 Then
                            xx = xx * 1.04 : yy = yy / 1.04
                        ElseIf 縦横比 < 0.25 Then
                            yy = yy * 1.04 : xx = xx / 1.04
                        ElseIf xx < WDminTWP Then
                            xx = xx * 1.02
                        ElseIf yy < HTminTWP Then
                            yy = yy * 1.02
                        End If
                    End If
                Loop
                '------------------------------------------------
                If rXY個数 = 0 Then
                    'no op
                Else
                    '-------------------------------------------------------
                    'qqqqq(CStr(rXY個数))
                    '-------------------------------------------------------
                    If p現在のカード枚数 = 0 Then Return False
                    '-------------------------------------------------------
                    rXY個数 = Math.Sqrt(p現在のカード枚数)
                    rカード群領域最小サイズ = (appカード群領域最小サイズ \ rXY個数) * rXY個数
                    '-------------------------------------------------------
                    Dim カード幅 As Integer = .ClientSize.Width \ rXY個数
                    Dim カード高 As Integer = (.ClientSize.Height - .mMenuHight) \ rXY個数
                    xx = カード幅 * rXY個数
                    yy = カード高 * rXY個数
                    xx = 1 + Math.Max(xx, rカード群領域最小サイズ)
                    yy = 1 + Math.Max(yy, rカード群領域最小サイズ)
                    yy = yy + .mMenuHight
                    '-------------------------------------------------------
                    xx = xx + (.Width - .ClientSize.Width)
                    yy = yy + (.Height - .ClientSize.Height)
                    xx = Math.Min(xx, scrnWD)
                    yy = Math.Min(yy, scrnHT)
                    If xx <> .Width Or yy <> .Height Then
                        ココから呼び出した = True
                        'qqqqq("**" + CStr(.Width)) : qqqqq("xx = " + CStr(xx))
                        .SetBounds(.Left, .Top, xx, yy)
                        'qqqqq("  " + CStr(.Width))
                        ココから呼び出した = False
                    End If
                End If
            End If
            'Static mm As Integer : mm = mm + 1 : qqqqq(CStr(mm) + " ■■aaフォームサイズセットとカードの配置と再描画() " + CStr(.ClientSize.Width) + ", " + CStr(.ClientSize.Height))
            If OldWD <> .Width Or OldHT <> .Height Then
                gggbol = aa描画用_pctBoxs_セットImage(frmMain, "") '2022/0729 これを削除してはいけない
            End If
            Return aaカードの配置と再描画(rNew1_WndReSize2_PropChange3)
        End With
    End Function
    '***********************************************************************
    Private Function zzゲーム描画用ファイル新規設定(ByRef fom As frmMain, ByVal ファイル As String) As String
        '---------------------------------------------
        Dim wPctCurBmp縦横比率 As Single : Dim w使用中リストIDX As Integer
        Dim imf As Image = Nothing
        Dim OpenOKfile As String = DlgFileゲーム用.aa画像ファイルオープン_into_ImageBox_IfError_SetNextFile_自動的に(ファイル, imf, wPctCurBmp縦横比率, w使用中リストIDX)
        '---------------------------------------------
        'qqqqq("aa画像ファイルオープン....SetNextFile_自動的に()")
        '---------------------------------------------
        gggbol = ⅩImage_Copy_or_Clone(mImg現在のゲーム用, imf)
        gggbol = ⅩImage_Copy_or_Clone(mImg現在のゲーム用Gray, imf)
        imf.Dispose()
        '---------------------------------------------
        'グレーにする
        gggbol = zz描画用グレー_pctCurFileGray_Make(mImg現在のゲーム用, mImg現在のゲーム用Gray)
        '---------------------------------------------
        pゲーム用ファイルの切り替え_カレントカウント = 0
        Return DlgFileゲーム用.aa画像ファイル新規設定後のリスト選択表示処理(OpenOKfile)
    End Function
    '***********************************************************************
    Private Function zz描画用グレー_pctCurFileGray_Make(ByRef Img元画 As Image, ByRef Imgグレイ As Image) As Boolean
        If Img元画 Is Nothing Then Return False
        If Imgグレイ IsNot Nothing Then
            Imgグレイ.Dispose()
        End If
        Imgグレイ = Img元画.Clone
        Return ⅩBmpPctBox明るく暗くする_BitsByteAry(Imgグレイ, pゲーム用ファイルの明るさ実効値(pゲーム用ファイルの明るさ))
    End Function
    '***********************************************************************
    Friend Function aa描画用_pctBoxs_セットImage(ByRef f As frmMain, ByVal rNewファイル As String) As Boolean
        Static Old使用画像名 As String = "" : Static OldWD As Integer : Static OldHT As Integer
        '2022/05/01
        'ウインドウサイズが１ピクセルでもずれると、描画エラーになる
        'かすかな背景のずれは、ここの　Ⅹサイズ計算_受けに合わせて_送りをトリミング　呼び出しでで発生する
        If DoeventCall Then Return False
        With f
            If mImg現在のゲーム用 Is Nothing Then Return False
            Dim YY As Integer = .mMenuHight
            Dim WD As Integer = Math.Max(100, .ClientSize.Width)
            Dim HT As Integer = Math.Max(100, .ClientSize.Height - .mMenuHight)
            Dim ファイル As String = IIf(rNewファイル = "", DlgFileゲーム用.p画像ファイル現在使用, rNewファイル)
            If (Old使用画像名 <> ファイル) Or OldWD <> WD Or OldHT <> HT Then
                .pctメイン.SetBounds(0, YY, WD, HT)
                .pctBmp.SetBounds(0, YY, WD, HT)
                If Not ⅩImage_新規作成_再作成(.pctメイン.Image, WD, HT) Then Return False
                If Not ⅩImage_新規作成_再作成(.pctBmp.Image, WD, HT) Then Return False
                If Not ⅩImage_新規作成_再作成(mImg現在サイズGray, WD, HT) Then Return False
                Dim 送り幅 As Integer = mImg現在のゲーム用.Width
                Dim 送り高 As Integer = mImg現在のゲーム用.Height
                Dim wLeft, wTop, wWidth, wHeight As Integer
                gggbol = Ⅹサイズ計算_受けに合わせて_送りをトリミング(WD, HT, 送り幅, 送り高, wLeft, wTop, wWidth, wHeight)
                gggbol = Ⅹ受けImage全域に_送Imageの選択領域を_Copy(.pctメイン.Image, mImg現在のゲーム用Gray, wLeft, wTop, wWidth, wHeight)
                gggbol = Ⅹ受けImage全域に_送Imageの選択領域を_Copy(.pctBmp.Image, mImg現在のゲーム用, wLeft, wTop, wWidth, wHeight)
                gggbol = Ⅹ受けImage全域に_送Imageの選択領域を_Copy(mImg現在サイズGray, mImg現在のゲーム用Gray, wLeft, wTop, wWidth, wHeight)
                OldWD = WD : OldHT = HT
                If ファイル <> "" Then Old使用画像名 = ファイル
                'qqqqq("aa描画用_pctBoxs_セットImage()  " + ファイル)
                DoeventCall = True : System.Windows.Forms.Application.DoEvents() : DoeventCall = False
            End If
        End With
        Return True
    End Function
    '***********************************************************************
    Friend Function aa背景の明るさを変更する(ByRef lst背景の明るさ As ListBox) As Boolean
        Call pゲーム用ファイルの明るさListBoxから読出し(lst背景の明るさ)
        If zz描画用グレー_pctCurFileGray_Make(mImg現在のゲーム用, mImg現在のゲーム用Gray) Then
            Return aa描画用_pctBoxs_セットImage(frmMain, CStr(CInt(Rnd() * 100000))) '2022/0819   aa描画用_pctBoxs_セットImage() を強制的に実行　　描画レベルでは　mImg現在サイズGray　の新規設定はしていないから、、、
        End If
        Return False
    End Function
    '***********************************************************************
    Friend Function aaファイル画像ゲーム用DlgShow(ByVal rOwner As Form) As Boolean
        Return DlgFileゲーム用.aaファイル画像DlgShow(rOwner)
    End Function
    '***********************************************************************
    Friend Function aaプロパティ初期化_INI読出し書込みsub(ByRef プロパコマンド As Integer, ByRef ini配列() As String, ByRef CurIDX As Integer) As Boolean
        Dim AryMax As Integer = UBound(ini配列)
        Dim ssss As String

        Select Case プロパコマンド
            Case gcoプロパ初期化
                Call pヒント表示_RW(プロパコマンド)
                Call pゲーム用ファイルの切り替え時間間隔_RW(プロパコマンド)
                Call p現在のカード枚数_RW(プロパコマンド)
                Call pゲーム配色外枠_RW(プロパコマンド)
                Call pゲーム配色外枠ドラッグ_RW(プロパコマンド)
                Call pゲーム配色抜け背景_RW(プロパコマンド)
                Call pカード一致で反転する_RW(プロパコマンド)
                Call pカード移動の軌跡を残す_RW(プロパコマンド)
                Call pゲーム用ファイルの明るさ_RW(プロパコマンド)
                Call pカードサイズ枠の太さ_RW(プロパコマンド)
                Call pカードスピード_RW(プロパコマンド)
                Call pサウンドファイルの配列_RW(プロパコマンド, gggstrary, "")
                Call pサウンドファイル_RW(プロパコマンド)
                Call pサウンドを鳴らす_RW(プロパコマンド)
                Call pサウンドファイルを順次変更する_RW(プロパコマンド)

            Case gcoプロパiniRD
                Const ads As String = "="
                Dim Hedpヒント表示_RW As String = pヒント表示_RW(gcoプロパ名) + ads '2022/0525  重要　Instr() で検索するので、前方から同じ部分を一部分として持つものでは、混同する可能性がある。"=" を追加する。
                Dim Hedpゲーム用ファイルの切り替え時間間隔_RW As String = pゲーム用ファイルの切り替え時間間隔_RW(gcoプロパ名) + ads
                Dim Hedp現在のカード枚数_RW As String = p現在のカード枚数_RW(gcoプロパ名) + ads
                Dim Hedpゲーム配色外枠_RW As String = pゲーム配色外枠_RW(gcoプロパ名) + ads
                Dim Hedpゲーム配色外枠ドラッグ_RW As String = pゲーム配色外枠ドラッグ_RW(gcoプロパ名) + ads
                Dim Hedpゲーム配色抜け背景_RW As String = pゲーム配色抜け背景_RW(gcoプロパ名) + ads
                Dim Hedpカード一致で反転する_RW As String = pカード一致で反転する_RW(gcoプロパ名) + ads
                Dim Hedpカード移動の軌跡を残す_RW As String = pカード移動の軌跡を残す_RW(gcoプロパ名) + ads
                Dim Hedpゲーム用ファイルの明るさ_RW As String = pゲーム用ファイルの明るさ_RW(gcoプロパ名) + ads
                Dim Hedpカードサイズ枠の太さ_RW As String = pカードサイズ枠の太さ_RW(gcoプロパ名) + ads
                Dim Hedpカードスピード_RW As String = pカードスピード_RW(gcoプロパ名) + ads
                Dim Hedpサウンドファイルの配列_RW As String = pサウンドファイルの配列_RW(gcoプロパ名, gggstrary, "") + ads
                Dim Hedpサウンドファイル_RW As String = pサウンドファイル_RW(gcoプロパ名) + ads
                Dim Hedpサウンドを鳴らす_RW As String = pサウンドを鳴らす_RW(gcoプロパ名) + ads
                Dim Hedpサウンドファイルを順次変更する_RW As String = pサウンドファイルを順次変更する_RW(gcoプロパ名) + ads
                For CurIDX = 1 To UBound(ini配列)
                    ssss = ini配列(CurIDX)
                    If InStr(ssss, Hedpヒント表示_RW) = 1 Then
                        Call pヒント表示_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpゲーム用ファイルの切り替え時間間隔_RW) = 1 Then
                        Call pゲーム用ファイルの切り替え時間間隔_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedp現在のカード枚数_RW) = 1 Then
                        Call p現在のカード枚数_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpゲーム配色外枠_RW) = 1 Then
                        Call pゲーム配色外枠_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpゲーム配色外枠ドラッグ_RW) = 1 Then
                        Call pゲーム配色外枠ドラッグ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpゲーム配色抜け背景_RW) = 1 Then
                        Call pゲーム配色抜け背景_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpカード一致で反転する_RW) = 1 Then
                        Call pカード一致で反転する_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpカード移動の軌跡を残す_RW) = 1 Then
                        Call pカード移動の軌跡を残す_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpゲーム用ファイルの明るさ_RW) = 1 Then
                        Call pゲーム用ファイルの明るさ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpカードサイズ枠の太さ_RW) = 1 Then
                        Call pカードサイズ枠の太さ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpカードスピード_RW) = 1 Then
                        Call pカードスピード_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpサウンドファイルの配列_RW) = 1 Then
                        Call pサウンドファイルの配列_RW(プロパコマンド, gggstrary, ssss)
                    ElseIf InStr(ssss, Hedpサウンドファイル_RW) = 1 Then
                        Call pサウンドファイル_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpサウンドを鳴らす_RW) = 1 Then
                        Call pサウンドを鳴らす_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpサウンドファイルを順次変更する_RW) = 1 Then
                        Call pサウンドファイルを順次変更する_RW(プロパコマンド, ssss)
                    End If
                Next

            Case gcoプロパiniWR
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pヒント表示_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pゲーム用ファイルの切り替え時間間隔_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = p現在のカード枚数_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pゲーム配色外枠_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pゲーム配色外枠ドラッグ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pゲーム配色抜け背景_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pカード一致で反転する_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pカード移動の軌跡を残す_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pゲーム用ファイルの明るさ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pカードサイズ枠の太さ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pカードスピード_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pサウンドファイルの配列_RW(プロパコマンド, gggstrary, "") Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pサウンドファイル_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pサウンドを鳴らす_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pサウンドファイルを順次変更する_RW(プロパコマンド) Else Return True

        End Select
        gggbol = DlgFileゲーム用.aaプロパティ初期化_INI読出し書込みsub(プロパコマンド, ini配列, CurIDX)
        Return True
    End Function
    '***********************************************************************
#End Region

#Region "タイマーでの画像自動切り替え"
    '***********************************************************************
    Friend Function aa_mn1gameゲーム用ファイルの切り替え時間間隔Do_Click(ByRef Index As Short) As String
        Return pゲーム用ファイルの切り替え時間間隔_RW(gcoプロパMenuClick, CStr(Index))
    End Function
    Friend Function pタイマーでの画像自動切り替え_次の画像に切り替え() As Boolean
        pゲーム用ファイルの切り替え_カレントカウント = 10000000
        Call DlgFileゲーム用.tim切り替えタイマー_Tick(Nothing, Nothing)
        Return True
    End Function
    '***********************************************************************
    Friend Function pタイマーでの画像自動切り替え間隔_is_無し間隔() As Boolean
        Return CBool(pゲーム用ファイルの切り替え時間間隔_RW(67021))
    End Function
    Friend Property pゲーム用ファイルの切り替え_カレントカウント_満期() As Boolean
        Get
            Return CBool(pゲーム用ファイルの切り替え時間間隔_RW(20050, ""))
        End Get
        Set(ByVal Value As Boolean)
            Call pゲーム用ファイルの切り替え時間間隔_RW(200100, CStr(Value))
        End Set
    End Property
    Friend Property pゲーム用ファイルの切り替え_カレントカウント() As Integer
        Get
            Return CInt(pゲーム用ファイルの切り替え時間間隔_RW(123400, ""))
        End Get
        Set(ByVal Value As Integer)
            Call pゲーム用ファイルの切り替え時間間隔_RW(123500, CStr(Value))
        End Set
    End Property
    Friend Property pゲーム用ファイルの切り替え時間間隔() As Integer
        Get
            Return CInt(pゲーム用ファイルの切り替え時間間隔_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pゲーム用ファイルの切り替え時間間隔_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pゲーム用ファイルの切り替え時間間隔_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pゲーム用ファイルの切り替え時間間隔" : Const 値DEF As Integer = 60 : Static 値 As Integer : Dim 値old As Integer
        Static 下, 上 As Integer : Static メヌ() As ToolStripMenuItem
        '--------------------------------------------------------------------------------------------
        Static 切替カウント秒数現在 As Integer = 0
        '--------------------------------------------------------------------------------------------
        '実際の使用データー　20 - 300　秒単位
        Const m1 As String = "20" : Const m2 As String = "60" : Const m3 As String = "120" : Const m4 As String = "300" : Const 無し間隔 As String = "1000000"
        ''--------------------------------------------------------------------------------------------
        ''テストにのみ使用するデーター
        'Const m1 = "3", m2 = "6", m3 = "10", m4 = "20", 無し間隔 = "1000000"
        '--------------------------------------------------------------------------------------------
        値old = 値
        '--------------------------------------------------------------------------------------------
        Select Case プロパコマンド
            Case 67021  'pタイマーでの画像自動切り替え間隔_is_無し間隔() 
                Return CStr(値 > 1000)
                '-----------------------------------------------------
            Case 123400 'GET   pゲーム用ファイルの切り替え_カレントカウント 
                Return CStr(切替カウント秒数現在)
            Case 123500 'SET   pゲーム用ファイルの切り替え_カレントカウント 
                切替カウント秒数現在 = CInt(s)
                '-----------------------------------------------------
            Case 20050 'GET  pゲーム用ファイルの切り替え_カレントカウント_満期() As Boolean
                切替カウント秒数現在 = 切替カウント秒数現在 + 1
                Dim bol As Boolean = (切替カウント秒数現在 >= 値)
                If bol Then 切替カウント秒数現在 = 0
                Return CStr(bol)
            Case 200100 'SET  pゲーム用ファイルの切り替え_カレントカウント_満期() As Boolean
                切替カウント秒数現在 = 値 + 10
                '-----------------------------------------------------
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF
                Call frmMain.aaメニューオブジェ設定(PropName, メヌ, 下, 上) : メヌ(1).Tag = m1 : メヌ(2).Tag = m2 : メヌ(3).Tag = m3 : メヌ(4).Tag = m4 : メヌ(5).Tag = 無し間隔
                切替カウント秒数現在 = 0
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet
                値 = Ⅹ数値範囲Int(Val(m1), Val(無し間隔), Val(s))
            Case gcoプロパMenuClick
                Select Case Val(s) : Case 1 : 値 = Val(m1) : Case 2 : 値 = Val(m2) : Case 3 : 値 = Val(m3) : Case 4 : 値 = Val(m4) : Case Else : 値 = Val(無し間隔) : End Select
                値 = Ⅹ数値範囲Int(Val(m1), Val(無し間隔), 値)
                切替カウント秒数現在 = 0
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                値 = Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick
                Try
                    Dim a As Integer : Dim cap As String = ""
                    For a = 下 To 上
                        メヌ(a).Checked = (値 = Val(メヌ(a).Tag))
                        If メヌ(a).Checked Then cap = メヌ(a).Text
                    Next
                Catch
                End Try
        End Select
        '--------------------------------------------------------------------------------------------
        Select Case プロパコマンド
            Case gcoプロパLet, gcoプロパMenuClick 'pタイマーでの画像自動切り替え_ChkStart_On_AppStart
                If 値old <> 値 Then
                    Dim ret As Boolean = False
                    gggbol = イベントgAppEventMaker.MakeEvent画像切り替えタイマーのオンオフ(gmDlgFileゲーム用, (値 < Val(無し間隔)), ret)
                End If
        End Select
        '--------------------------------------------------------------------------------------------
        Return CStr(値)
    End Function
    '***********************************************************************
#End Region

#Region "プロパティ"
    '***********************************************************************
    Friend Function pカード枚数_現在の残り枚数() As Integer
        Return aa残りカード枚数()
    End Function
    Friend Function mn1gameカード枚数指定Do_Enabled設定() As String
        Return p現在のカード枚数_RW(371)
    End Function
    Friend Function mn1gameカード枚数指定DoNextUp() As String
        Return p現在のカード枚数_RW(10)
    End Function
    Friend ReadOnly Property p現在のカード枚数MenuIndex() As Integer
        Get
            p現在のカード枚数MenuIndex = CInt(p現在のカード枚数_RW(1010365))
        End Get
    End Property
    Friend Property p現在のカード枚数() As Integer
        Get
            p現在のカード枚数 = CInt(p現在のカード枚数_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call p現在のカード枚数_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function p現在のカード枚数_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "p現在のカード枚数" : Const 値DEF As Integer = 81 : Static 値 As Integer
        Static 下, 上 As Integer : Static メヌ() As ToolStripMenuItem
        Dim a, b, c As Integer : Dim e As Boolean
        'With frmMain
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF : Call frmMain.aaメニューオブジェ設定(PropName, メヌ, 下, 上)
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet 's = 枚数の実数値
                c = Ⅹ数値範囲Int(app最小カード枚数, app最大カード枚数, Val(s))
                値 = c
                For a = 下 To 上
                    b = Val(メヌ(a).Tag)
                    If c <= b Then
                        値 = b : Exit For
                    End If
                Next
            Case gcoプロパMenuClick '.mn1gameカード枚数指定Do_Click()　    s = メニューのインデックス
                '2019/09/24  現在の選択枚数でカードを配る
                If Val(s) = -1 Then
                    For a = 下 To 上
                        If メヌ(a).Checked Then
                            s = CStr(a) : Exit For
                        End If
                    Next
                    If Val(s) = -1 Then s = CStr(1)
                End If
                p現在のカード枚数 = Val(メヌ(Ⅹ数値範囲Int(下, 上, Val(s))).Tag)

                '***********************************************************************
                'ゲーム開始のスタートポイント
                e = aaフォームサイズセットとカードの配置と再描画(1)
                'ゲーム開始のスタートポイント
                '***********************************************************************
                Dim ttt As String = Ⅹタイム経過チェック文字列_時間_分_秒(0, "ms")
                '***********************************************************************

            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                p現在のカード枚数 = Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))

            Case 1010365 'p現在のカード枚数MenuIndex   add 2022/05/07
                Try
                    For a = 下 To 上
                        If メヌ(a).Checked Then
                            Return CStr(a) : Exit For
                        End If
                    Next
                Catch
                    Return "2"
                End Try

        End Select
        'End With
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, 10
                Try
                    For a = 下 To 上 : メヌ(a).Checked = (値 = Val(メヌ(a).Tag)) : Next
                Catch : End Try
        End Select
        Return CStr(値)
    End Function
    '***********************************************************************
    Friend Property pヒント表示() As Integer
        Get
            pヒント表示 = CInt(pヒント表示_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pヒント表示_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pヒント表示_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pヒント表示" : Const 値DEF As Integer = 20 : Static 値 As Integer : Dim 旧値 As Integer
        Static 下, 上 As Integer : Static メヌ() As ToolStripMenuItem
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF : Call frmMain.aaメニューオブジェ設定(PropName, メヌ, 下, 上)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = Ⅹ数値範囲Int(0, 20, Val(s))
            Case gcoプロパMenuClick : pヒント表示 = Val(s)
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = Ⅹ数値範囲Int(0, 20, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD
                Try
                    For a As Integer = 下 To 上 : メヌ(a).Checked = (値 = Val(メヌ(a).Tag)) : Next
                Catch : End Try
        End Select
        Select Case プロパコマンド
            Case gcoプロパLet
                Try
                    If (Not frmMain.mmLoading) And ppゲーム実行中 Then Call aaカードの配置と再描画(1)
                Catch : End Try
        End Select
        Return CStr(値)
    End Function
    '***********************************************************************
    Friend ReadOnly Property pゲーム配色外枠DEF() As Integer
        Get
            Return CInt(pゲーム配色外枠_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pゲーム配色外枠() As Integer
        Get
            Return CInt(pゲーム配色外枠_RW(gcoプロパGet))
        End Get
        Set(ByVal value As Integer)
            Call pゲーム配色外枠_RW(gcoプロパLet, CStr(value))
        End Set
    End Property
    Friend Function pゲーム配色外枠_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pゲーム配色外枠" : Const 値DEF As Integer = &HFF0060& : Static 値 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CInt(Ⅹ色の値の検査修正値(Val(s)))
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Select Case プロパコマンド
            Case gcoプロパLet
                If Not zz残りカードがない() Then Call aaカードの配置と再描画(3)
        End Select
        Return ""
    End Function
    '***********************************************************************
    Friend ReadOnly Property pゲーム配色外枠ドラッグDEF() As Integer
        Get
            Return CInt(pゲーム配色外枠ドラッグ_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pゲーム配色外枠ドラッグ() As Integer
        Get
            Return CInt(pゲーム配色外枠ドラッグ_RW(gcoプロパGet))
        End Get
        Set(ByVal value As Integer)
            Call pゲーム配色外枠ドラッグ_RW(gcoプロパLet, CStr(value))
        End Set
    End Property
    Friend Function pゲーム配色外枠ドラッグ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pゲーム配色外枠ドラッグ" : Const 値DEF As Integer = &HFFE0& : Static 値 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CInt(Ⅹ色の値の検査修正値(Val(s)))
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Return ""
    End Function
    '***********************************************************************
    Friend ReadOnly Property pゲーム配色抜け背景DEF() As Integer
        Get
            Return CInt(pゲーム配色抜け背景_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pゲーム配色抜け背景() As Integer
        Get
            Return CInt(pゲーム配色抜け背景_RW(gcoプロパGet))
        End Get
        Set(ByVal value As Integer)
            Call pゲーム配色抜け背景_RW(gcoプロパLet, CStr(value))
        End Set
    End Property
    Friend Function pゲーム配色抜け背景_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pゲーム配色抜け背景" : Const 値DEF As Integer = &H408020& : Static 値 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CInt(Ⅹ色の値の検査修正値(Val(s)))
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパiniRD, gcoプロパLet
                If frmMain.pnl仮表示 IsNot Nothing Then
                    frmMain.pnl仮表示.BackColor = ⅩColor構造体_from_色値(値)
                End If
        End Select
        Return ""
    End Function
    '***********************************************************************
    Friend Function pカード一致で反転する_ListBox初期化(ByRef lst As ListBox) As Boolean
        Dim a As Integer
        With lst
            .Items.Clear() : For a = 0 To 1 : .Items.Add(pカード一致で反転する_RW(100 + a)) : Next
            .SelectedIndex = pカード一致で反転する
        End With
        Return True
    End Function
    Friend ReadOnly Property pカード一致で反転するDEF() As Integer
        Get
            Return CInt(pカード一致で反転する_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pカード一致で反転するBOOL() As Boolean
        Get
            Return (0 = CInt(pカード一致で反転する_RW(gcoプロパGet)))
        End Get
        Set(ByVal value As Boolean)
            Call pカード一致で反転する_RW(gcoプロパLet, IIf(value, "0", "1"))
        End Set
    End Property
    Friend Property pカード一致で反転する() As Integer
        Get
            Return CInt(pカード一致で反転する_RW(gcoプロパGet))
        End Get
        Set(ByVal value As Integer)
            Call pカード一致で反転する_RW(gcoプロパLet, CStr(value))
        End Set
    End Property
    Private Function pカード一致で反転する_RW(ByVal プロパコマンド As Integer, Optional ByVal s As String = "") As String
        Const PropName As String = "pカード一致で反転する" : Const 値DEF As Integer = 0 : Const 下 As Integer = 0 : Const 上 As Integer = 1   '0, 1
        Static ListItemText() As String = {"する", "しない"}
        Static 値 As Integer : Dim 旧値 As Integer, a As Integer
        旧値 = 値
        Select Case プロパコマンド
            Case 100 To 101 : a = プロパコマンド - 100 : Return ListItemText(a)
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick : 値 = Ⅹ数値範囲Int(下, 上, Val(s))
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = Ⅹ数値範囲Int(下, 上, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
        End Select
        Return CStr(値)
    End Function
    '***********************************************************************
    Friend Function pカード移動の軌跡を残す_ListBox初期化(ByRef lst As ListBox) As Boolean
        Dim a As Integer
        With lst
            .Items.Clear() : For a = 0 To 1 : .Items.Add(pカード移動の軌跡を残す_RW(100 + a)) : Next
            .SelectedIndex = pカード移動の軌跡を残す
        End With
        Return True
    End Function
    Friend ReadOnly Property pカード移動の軌跡を残すDEF() As Integer
        Get
            Return CInt(pカード移動の軌跡を残す_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pカード移動の軌跡を残すBOOL() As Boolean
        Get
            Return (0 = CInt(pカード移動の軌跡を残す_RW(gcoプロパGet)))
        End Get
        Set(ByVal value As Boolean)
            Call pカード移動の軌跡を残す_RW(gcoプロパLet, IIf(value, "0", "1"))
        End Set
    End Property
    Friend Property pカード移動の軌跡を残す() As Integer
        Get
            Return CInt(pカード移動の軌跡を残す_RW(gcoプロパGet))
        End Get
        Set(ByVal value As Integer)
            Call pカード移動の軌跡を残す_RW(gcoプロパLet, CStr(value))
        End Set
    End Property
    Private Function pカード移動の軌跡を残す_RW(ByVal プロパコマンド As Integer, Optional ByVal s As String = "") As String
        Const PropName As String = "pカード移動の軌跡を残す" : Const 値DEF As Integer = 0 : Const 下 As Integer = 0 : Const 上 As Integer = 1   '0, 1
        Static ListItemText() As String = {"する", "しない"}
        Static 値 As Integer : Dim 旧値 As Integer, a As Integer
        旧値 = 値
        Select Case プロパコマンド
            Case 100 To 101 : a = プロパコマンド - 100 : Return ListItemText(a)
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick : 値 = Ⅹ数値範囲Int(下, 上, Val(s))
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = Ⅹ数値範囲Int(下, 上, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
        End Select
        Return CStr(値)
    End Function
    '***********************************************************************
    Friend Sub pゲーム用ファイルの明るさListBoxに設定(ByRef box As ListBox)
        If box IsNot Nothing Then box.SelectedIndex = Ⅹ数値範囲Int(-1, box.Items.Count - 1, pゲーム用ファイルの明るさ)
    End Sub
    Friend Sub pゲーム用ファイルの明るさListBoxから読出し(ByRef box As ListBox)
        If box IsNot Nothing Then pゲーム用ファイルの明るさ = box.SelectedIndex
    End Sub
    Friend Function pゲーム用ファイルの明るさ実効値(ByVal Idx As Integer) As Single 'インデックス 0 - 5 から実際の値  Single 0.6 - 1.6 を返す。
        Return CSng(pゲーム用ファイルの明るさ_RW(gcoプロパGet現在の実効値を, CStr(Idx)))
    End Function
    Friend ReadOnly Property pゲーム用ファイルの明るさDEF() As Integer
        Get
            Return CInt(pゲーム用ファイルの明るさ_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pゲーム用ファイルの明るさ() As Integer  'index 0 to 5
        Get
            Return CInt(pゲーム用ファイルの明るさ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pゲーム用ファイルの明るさ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pゲーム用ファイルの明るさ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pゲーム用ファイルの明るさ" : Const idxMAX = 5 : Const idxDEF = 3 : Static 値(idxMAX) As Single : Static idx現在 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値(0) = 0.6 : 値(1) = 0.8 : 値(2) = 1.0 : 値(3) = 1.2 : 値(4) = 1.4 : 値(5) = 1.6 : idx現在 = idxDEF
            Case gcoプロパ規定値 : Return CStr(idxDEF)
            Case gcoプロパGet : Return CStr(Ⅹ数値範囲Int(0, idxMAX, idx現在))
            Case gcoプロパLet : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(s)) '0 - idxMAX
            Case gcoプロパMenuClick : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(s)) '0 - idxMAX
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(idx現在))
            Case gcoプロパiniRD : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))) '0 - idxMAX
            Case gcoプロパGet現在の実効値を : Return CStr(値(Ⅹ数値範囲Int(0, idxMAX, Val(s))))  'インデックスから実際の値  Single 0.6 - 1.6 を返す。
        End Select
        Return CStr(Ⅹ数値範囲Int(0, idxMAX, idx現在))
    End Function
    '***********************************************************************
    Friend Sub pカードサイズ枠の太さListBoxに設定(ByRef box As ListBox)
        If box IsNot Nothing Then box.SelectedIndex = Ⅹ数値範囲Int(-1, box.Items.Count - 1, pカードサイズ枠の太さ)
    End Sub
    Friend Sub pカードサイズ枠の太さListBoxから読出し(ByRef box As ListBox)
        If box IsNot Nothing Then pカードサイズ枠の太さ = box.SelectedIndex
    End Sub
    Friend Function pカードサイズ枠の太さ実効値(ByVal Idx As Integer) As Single 'インデックス 0 - 5 から実際の値  Single 0.6 - 1.6 を返す。
        Return CSng(pカードサイズ枠の太さ_RW(gcoプロパGet現在の実効値を, CStr(Idx)))
    End Function
    Friend ReadOnly Property pカードサイズ枠の太さDEF() As Integer
        Get
            Return CInt(pカードサイズ枠の太さ_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pカードサイズ枠の太さ() As Integer
        Get
            Return CInt(pカードサイズ枠の太さ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pカードサイズ枠の太さ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pカードサイズ枠の太さ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        'val 0.02 - 0.06  Index 0 - 4
        Const PropName As String = "pカードサイズ枠の太さ" : Const idxMAX = 4 : Const idxDEF = 2 : Static 値(idxMAX) As Single : Static idx現在 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値(0) = 0.02 : 値(1) = 0.03 : 値(2) = 0.04 : 値(3) = 0.05 : 値(4) = 0.06 : idx現在 = idxDEF
            Case gcoプロパ規定値 : Return CStr(idxDEF)
            Case gcoプロパGet : Return CStr(Ⅹ数値範囲Int(0, idxMAX, idx現在))
            Case gcoプロパLet : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(s)) '0 - idxMAX 
            Case gcoプロパMenuClick : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(s)) '0 - idxMAX  
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(idx現在))
            Case gcoプロパiniRD : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))) '0 - idxMAX 
            Case gcoプロパGet現在の実効値を : Return CStr(値(Ⅹ数値範囲Int(0, idxMAX, Val(s)))) 'インデックスから実際の値  Integer 0.02 - 0.06 を返す。
        End Select
        Return CStr(Ⅹ数値範囲Int(0, idxMAX, idx現在))
    End Function
    '***********************************************************************
    Friend Sub pカードスピードListBoxに設定(ByRef box As ListBox)
        If box IsNot Nothing Then box.SelectedIndex = Ⅹ数値範囲Int(-1, box.Items.Count - 1, pカードスピード)
    End Sub
    Friend Sub pカードスピードListBoxから読出し(ByRef box As ListBox)
        If box IsNot Nothing Then pカードスピード = box.SelectedIndex
    End Sub
    Friend Function pカードスピード実効値(ByVal Idx As Integer) As Integer 'インデックス 0 - 4 から実際の値  Integer 50 - 10 を返す。
        Return CInt(pカードスピード_RW(gcoプロパGet現在の実効値を, CStr(Idx)))
    End Function
    Friend ReadOnly Property pカードスピードDEF() As Integer
        Get
            Return CInt(pカードスピード_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pカードスピード() As Integer
        Get
            Return CInt(pカードスピード_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pカードスピード_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pカードスピード_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pカードスピード" : Const idxMAX = 4 : Const idxDEF = 2 : Static 値(idxMAX) As Integer : Static idx現在 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値(0) = 50 : 値(1) = 40 : 値(2) = 30 : 値(3) = 20 : 値(4) = 10 : idx現在 = idxDEF
            Case gcoプロパ規定値 : Return CStr(idxDEF)
            Case gcoプロパGet : Return CStr(Ⅹ数値範囲Int(0, idxMAX, idx現在))
            Case gcoプロパLet : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(s)) '0 - idxMAX  
            Case gcoプロパMenuClick : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(s)) '0 - idxMAX 
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(idx現在))
            Case gcoプロパiniRD : idx現在 = Ⅹ数値範囲Int(0, idxMAX, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))) '0 - idxMAX 
            Case gcoプロパGet現在の実効値を : Return CStr(値(Ⅹ数値範囲Int(0, idxMAX, Val(s)))) 'インデックスから実際の値  Integer 50 - 10 を返す。
        End Select
        Return CStr(Ⅹ数値範囲Int(0, idxMAX, idx現在))
    End Function
    '***********************************************************************
    Friend Sub pサウンドファイルを順次変更するCheckBoxに設定(ByRef box As CheckBox)
        If box IsNot Nothing Then box.Checked = pサウンドファイルを順次変更する
    End Sub
    Friend Sub pサウンドファイルを順次変更するCheckBoxから読出し(ByRef box As CheckBox)
        If box IsNot Nothing Then pサウンドファイルを順次変更する = box.Checked
    End Sub
    Friend Property pサウンドファイルを順次変更する() As Boolean
        Get
            Return CBool(pサウンドファイルを順次変更する_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pサウンドファイルを順次変更する_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pサウンドファイルを順次変更する_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pサウンドファイルを順次変更する" : Const 値DEF As Boolean = True : Static 値 As Boolean
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CBool(s)
            Case gcoプロパMenuClick : 値 = Not 値
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CBool(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Return CStr(値)
    End Function
    '***********************************************************************
    Private Function pサウンドファイルの配列_NEXT() As String
        Dim Ary() As String = {""}, sss As String = ""
        Return pサウンドファイルの配列_RW(102030, Ary, sss)
    End Function
    Friend Function pサウンドファイルの配列_RW(ByVal プロパコマンド As Integer, ByRef rwAry() As String, ByVal rAryDataStr As String) As String
        Const PropName As String = "pサウンドファイルの配列" : Const cut = "|**|"
        Static 値() As String = {""}     'Use  値( 1 to ubound )
        Static CurIDX As Integer = 0      '( 1 to ubound )
        Select Case プロパコマンド
            Case gcoプロパGetARY
                If Not Ⅹ文配列のコピー(rwAry, 値) Then Return ""
                Return CStr(UBound(値))
            Case gcoプロパLetARY
                If Not Ⅹ文配列のコピー(値, rwAry) Then Return ""
                Return CStr(UBound(値))
            Case gcoプロパconvARYtoSTR
                Dim sss As String = Ⅹ文を配列から作成(値, cut)
                Return sss
            Case gcoプロパconvSTRtoARY
                Dim max As Integer = Ⅹ文をカットして配列にする(rAryDataStr, cut, rwAry)
                Return CStr(max)
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                ReDim 値(1) : 値(1) = pサウンドファイル
            Case gcoプロパiniWR
                Dim w As String = pサウンドファイルの配列_RW(gcoプロパconvARYtoSTR, 値, "")
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, w)

                '*************************************************************************************
                '2023/03/03/  エラー修正、最初に設定されず　　値(0)　の場合に致命的エラーになっていた。
            Case gcoプロパiniRD
                Dim w As String = ⅩIniデーター文_RW(gcoプロパiniRD, PropName, rAryDataStr)
                If InStr(w, ":\") = 0 Then
                    w = pサウンドファイルDEF
                End If
                Return pサウンドファイルの配列_RW(gcoプロパconvSTRtoARY, 値, w)

            Case 102030  'pサウンドファイルの配列_NEXT()
                If UBound(値) < 1 Then
                    Call pサウンドファイルの配列_RW(gcoプロパ初期化, gggstrary, "")
                End If
                CurIDX = CurIDX + 1
                If CurIDX > UBound(値) Then CurIDX = 1
                Return 値(CurIDX)
                '*************************************************************************************
        End Select
        Return ""
    End Function
    '***********************************************************************
    Friend ReadOnly Property pサウンドファイルDEF() As String
        Get
            Return pサウンドファイル_RW(gcoプロパ規定値)
        End Get
    End Property
    Friend Property pサウンドファイル() As String
        Get
            Return pサウンドファイル_RW(gcoプロパGet)
        End Get
        Set(ByVal value As String)
            Call pサウンドファイル_RW(gcoプロパLet, CStr(value))
        End Set
    End Property
    Friend Function pサウンドファイル_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pサウンドファイル" : Static 値 As String
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = gmサウンドあたり
            Case gcoプロパ規定値
                Return gmサウンドあたり
            Case gcoプロパGet
                If 値 = "" Then 値 = gmサウンドあたり
                Return 値
            Case gcoプロパLet
                値 = s
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, 値)
            Case gcoプロパiniRD
                値 = ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)
        End Select
        If Not Ⅹファイルは存在(値) Then
            値 = gmサウンドあたり
        End If
        Return CStr(値)
    End Function
    '***********************************************************************
    Friend Sub pサウンドを鳴らすCheckBoxに設定(ByRef box As CheckBox)
        If box IsNot Nothing Then box.Checked = pサウンドを鳴らす
    End Sub
    Friend Sub pサウンドを鳴らすCheckBoxから読出し(ByRef box As CheckBox)
        If box IsNot Nothing Then pサウンドを鳴らす = box.Checked
    End Sub
    Friend ReadOnly Property pサウンドを鳴らすDEF() As Boolean
        Get
            Return CBool(pサウンドを鳴らす_RW(gcoプロパ規定値))
        End Get
    End Property
    Friend Property pサウンドを鳴らす() As Boolean
        Get
            Return CBool(pサウンドを鳴らす_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pサウンドを鳴らす_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pサウンドを鳴らす_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pサウンドを鳴らす" : Const 値DEF As Boolean = True : Static 値 As Boolean
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CBool(s)
            Case gcoプロパMenuClick : 値 = Not 値
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CBool(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Return CStr(値)
    End Function
    '***********************************************************************
#End Region

#Region "zzローカルヘルパー"
    '***********************************************************************
    Private Function zzカード描画(Optional ByRef オールクリアでも描画 As Boolean = False) As Boolean
        Dim gCur As Graphics = Nothing : Dim ここで描画した枚数 As Integer = 0
        If ppスイスイフラフラ_いずれかあるいは両方_を実行中 Then
            Return True 'True を返す
        ElseIf frmMain.WindowState = FormWindowState.Minimized Then
            Return True 'True を返す
        Else
            ppゲーム実行中 = Not zz残りカードがない() 'カードが１枚以上残っているかチェックする。
            Try
                gCur = Graphics.FromImage(frmMain.pctメイン.Image)
                If gCur IsNot Nothing Then
                    gCur.PageUnit = GraphicsUnit.Pixel
                    Dim 田 As Rectangle
                    If Not ppゲーム実行中 Then
                        田.X = 0 : 田.Y = 0 : 田.Width = frmMain.ClientRectangle.Right : 田.Height = frmMain.ClientRectangle.Bottom
                        '-------------------------------------------------------------------------------------------
                        '2022/0701  *****.ico 画像では、透明部分が描画されずに、カード枠の残像が残るので、この処理が必要。
                        gCur.Clear(Color.White)
                        '-------------------------------------------------------------------------------------------
                        gCur.DrawImage(frmMain.pctBmp.Image, 田, 田.X, 田.Y, 田.Width, 田.Height, GraphicsUnit.Pixel)
                        'qqqqq("frmMain.pctメイン.Image HT = " + CStr(frmMain.pctメイン.Image.Height))
                        'qqqqq("frmMain.pctBmp.Image HT = " + CStr(frmMain.pctBmp.Image.Height))
                    Else
                        Dim www As Integer = mカード配列(1).カード枠幅 : Dim offwww As Integer = www \ 2
                        ' Create pen.
                        Dim ccc As Color = ⅩColor構造体_from_色値(pゲーム配色外枠)
                        Dim curPen As New Pen(ccc, www)
                        Dim PenLine1 As New Pen(Color.Black, 1)
                        Dim a, n As Integer
                        For a = 1 To p現在のカード枚数
                            With mカード配列(a)
                                If .DoDraw Then
                                    田.Width = .内側WD + 1 : 田.Height = .内側HT + 1
                                    With .内側領域
                                        田.X = .lll : 田.Y = .ttt
                                    End With
                                    If .当り削除ずみ Then
                                        gCur.DrawImage(mImg現在サイズGray, 田, 田.X, 田.Y, 田.Width, 田.Height, GraphicsUnit.Pixel)
                                        'qqqqq("frmMain.pctメイン.Image HT = " + CStr(frmMain.pctメイン.Image.Height))
                                        'qqqqq("frmMain.pctGray.Image HT = " + CStr(frmMain.pctGray.Image.Height))
                                    Else
                                        n = .画素カードID
                                        gCur.DrawImage(frmMain.pctBmp.Image, 田, mカード配列(n).内側領域.lll, mカード配列(n).内側領域.ttt, 田.Width, 田.Height, GraphicsUnit.Pixel)
                                        gggbol = zzカードの枠を描画(gCur, 田, curPen, 0, www)
                                    End If
                                    田.Width = .内側WD + 2 : 田.Height = .内側HT + 2 : With .実寸領域 : 田.X = .lll : 田.Y = .ttt : End With
                                    gCur.DrawRectangle(PenLine1, 田)
                                    ここで描画した枚数 = ここで描画した枚数 + 1
                                End If
                            End With
                        Next
                        'ウインドウの右端と下の再描画をする
                        a = a - 1 '最後のカード
                        With mカード配列(a)
                            Dim rr As Integer = frmMain.ClientRectangle.Right
                            Dim bb As Integer = frmMain.ClientRectangle.Bottom
                            Dim X余り As Integer = rr - (.実寸領域.rrr + 1)
                            Dim Y余り As Integer = bb - (.実寸領域.bbb + 1)
                            If X余り > 0 Then
                                田.X = .実寸領域.rrr + 1 : 田.Y = mカード配列(1).実寸領域.ttt : 田.Width = rr - .実寸領域.rrr : 田.Height = bb - 田.Y
                                If 田.Width > 0 Then gCur.DrawImage(mImg現在サイズGray, 田, 田.X, 田.Y, 田.Width, 田.Height, GraphicsUnit.Pixel)
                            End If
                            If Y余り > 0 Then
                                田.X = 0 : 田.Y = .実寸領域.bbb + 1 : 田.Width = rr : 田.Height = bb - .実寸領域.bbb
                                If 田.Height > 0 Then gCur.DrawImage(mImg現在サイズGray, 田, 田.X, 田.Y, 田.Width, 田.Height, GraphicsUnit.Pixel)
                            End If
                        End With
                    End If
                    '------------------------------
                    gCur.Dispose()
                    gCur = Nothing
                End If
                'qqqqq("zzカード描画() 描画数=" + CStr(ここで描画した枚数) + vbCrLf)
                Return True
            Catch ex As Exception
                If gCur IsNot Nothing Then gCur.Dispose()
                MsgBox("ERROR in zzカード描画() " & vbCrLf & ex.Message)
            End Try
            Return False
        End If
    End Function
    '***********************************************************************
    Private Function zzカードの枠を描画(ByVal g As Graphics, ByVal 田 As Rectangle, ByVal penobj As Pen, ByVal colorval As Integer, ByVal カード枠幅 As Integer) As Boolean
        Dim pn As Pen
        Dim www As Integer = カード枠幅
        Dim offwww = www \ 2
        If penobj Is Nothing Then
            pn = New Pen(ⅩColor構造体_from_色値(colorval), www)
        Else
            pn = penobj
        End If
        田.X = 田.X + offwww : 田.Y = 田.Y + offwww : 田.Width = 田.Width - www : 田.Height = 田.Height - www
        g.DrawRectangle(pn, 田)
        Return True
    End Function
    '***********************************************************************
    Private Function zz残りカードがない() As Boolean
        Return (aa残りカード枚数() = 0)
    End Function
    '***********************************************************************
    Friend Function aa残りカード枚数() As Integer
        Dim a, ccc As Integer
        ccc = 0
        For a = 1 To p現在のカード枚数
            If mカード配列(a).当り削除ずみ = False Then ccc = ccc + 1
        Next
        Return ccc
    End Function
    '***********************************************************************
#End Region

#Region "DlgFileゲーム用　のイベント関数群"
    '***********************************************************************
    Private Sub DlgFileゲーム用_画像ファイルの切替タイマー(ByVal rCurファイル As String, ByVal rNextファイル As String, ByRef wChangeDone As Boolean) Handles DlgFileゲーム用.画像ファイルの切替タイマー
        'qqqqq("DlgFileゲーム用_画像ファイルの切替タイマー()")
        'qqqqq("rCurファイル   " & rCurファイル)
        'qqqqq("rNextファイル  " & rNextファイル)
        gggstr = zzゲーム描画用ファイル新規設定(frmMain, rNextファイル)
        gggbol = aa描画用_pctBoxs_セットImage(frmMain, rNextファイル)
        gggbol = aaカードの配置と再描画(3)
        wChangeDone = True
    End Sub
    '***********************************************************************
    Private Sub DlgFileゲーム用_画像ファイルの切替タイマー一秒ごとの通知(ByRef wIs満期 As Boolean) Handles DlgFileゲーム用.画像ファイルの切替タイマー一秒ごとの通知
        wIs満期 = pゲーム用ファイルの切り替え_カレントカウント_満期
    End Sub
    '***********************************************************************
    Private Sub DlgFileゲーム用_画像ファイルの選択が実行された(ByVal rNewファイル As String, ByRef wChangeDone As Boolean) Handles DlgFileゲーム用.画像ファイルの選択が実行された
        '2022/10/18 ************************************************************ 
        'ゲーム実行中なら、カードの状態は変更しない。
        If ppゲーム実行中 Then
            Call DlgFileゲーム用_画像ファイルの切替タイマー("", rNewファイル, wChangeDone)
            Exit Sub
        End If
        '2022/10/18 ************************************************************ 
        gggstr = zzゲーム描画用ファイル新規設定(frmMain, rNewファイル)
        gggbol = aa描画用_pctBoxs_セットImage(frmMain, rNewファイル)
        Call frmMain.mn1gameカード枚数指定Do_ClickCOM(p現在のカード枚数MenuIndex)
        wChangeDone = True
    End Sub
    '***********************************************************************
#End Region

#Region "イベントgAppEventMaker用　のイベント関数群"
    '***********************************************************************
    Private Sub イベントgAppEventMaker_タイマーのオンオフonスイスイonff(ByRef rEventOwner As Integer, ByRef rTimerオン As Boolean) Handles イベントgAppEventMaker.タイマーのオンオフonスイスイonff
        If rEventOwner = gmDlgFileゲーム用 Then
            If DlgFileゲーム用 Is Nothing Then Return
            Dim eee As Boolean = (Not DlgFileゲーム用.Visible)
            If rTimerオン Then
                eee = eee And (Not pタイマーでの画像自動切り替え間隔_is_無し間隔())
            Else
                eee = False
            End If
            DlgFileゲーム用.tim切り替えタイマー.Enabled = eee
        Else

        End If
    End Sub
    '***********************************************************************
#End Region

#Region "イベント四frmDlgSound_標準サウンド設定Dlg"
    '***********************************************************************
    Friend Sub mn3optサウンド設定Dlg_Load_1_Disposed_2(ByVal op As Integer, ByVal rOwner As Form)
        Select Case op
            Case 1 'New Load
                If gmアプリ終了する Then Return
                If 1 = GMCOM_ダイアログモードレス表示チェック(標準サウンド設定Dlg) Then
                    標準サウンド設定Dlg = New 四frmDlgSound : 標準サウンド設定Dlg.Show(rOwner)
                End If
            Case 2 'after Disposed
                標準サウンド設定Dlg = Nothing
        End Select
    End Sub
    '***********************************************************************
    Private Sub 標準サウンド設定Dlg_標準サウンド設定Dlgの初期化をしてください(ByRef wIsOK As Boolean, ByRef wMe_gmDlgID As Integer) Handles 標準サウンド設定Dlg.標準サウンド設定Dlgの初期化をしてください
        wIsOK = True
        wMe_gmDlgID = gmDlgサウンド設定
    End Sub
    '***********************************************************************
    Private Sub 標準サウンド設定Dlg_他のウインドウが表示あるいは非表示になりました(ByVal rMe_gmDlgID As Integer, ByVal r表示変更ウインドウID As Integer, ByVal r表示True消去False As Boolean, ByRef wRet_rMe_gmDlgIDウインドウを消去しなさい As Boolean) Handles 標準サウンド設定Dlg.他のウインドウが表示あるいは非表示になりました
        wRet_rMe_gmDlgIDウインドウを消去しなさい = GMCOM_Dlgs他のウインドウの表示_非表示イベントで_rMe_ウインドウを消去しなさい(rMe_gmDlgID, r表示変更ウインドウID, r表示True消去False)
    End Sub
    '***********************************************************************
#End Region

#Region "イベント四frmDlgOptionSTD_標準オプション設定Dlg"
    '***********************************************************************
    Friend Sub mn3optオプション設定Dlg_Load_1_Disposed_2(ByVal op As Integer, ByVal rOwner As Form)
        Select Case op
            Case 1 'New Load
                If gmアプリ終了する Then Return
                If 1 = GMCOM_ダイアログモードレス表示チェック(標準オプション設定Dlg) Then
                    標準オプション設定Dlg = New 四frmDlgOptionSTD : 標準オプション設定Dlg.Show(rOwner)
                End If
            Case 2 'after Disposed
                標準オプション設定Dlg = Nothing
        End Select
    End Sub
    '***********************************************************************
    Private Sub 標準オプション設定Dlg_カラーデーターをください(ByRef wmp配色枠標準 As Integer, ByRef wmp配色枠ドラッグ As Integer, ByRef wmp配色背景 As Integer) Handles 標準オプション設定Dlg.カラーデーターをください
        wmp配色枠標準 = pゲーム配色外枠
        wmp配色枠ドラッグ = pゲーム配色外枠ドラッグ
        wmp配色背景 = pゲーム配色抜け背景
    End Sub
    '***********************************************************************
    Private Sub 標準オプション設定Dlg_標準オプション設定Dlgの初期化をしてください(ByRef wIsOK As Boolean, ByRef wMe_gmDlgID As Integer, ByRef wlstカード一致で反転表示 As ListBox, ByRef wlstカード移動の軌跡を残す As ListBox, ByRef wlst背景の明るさ As ListBox, ByRef wlst枠の太さ As ListBox, ByRef wlstカードスピード As ListBox) Handles 標準オプション設定Dlg.標準オプション設定Dlgの初期化をしてください
        wIsOK = True
        wMe_gmDlgID = gmDlgオプション設定
        wlstカード一致で反転表示.SelectedIndex = pカード一致で反転する
        wlstカード移動の軌跡を残す.SelectedIndex = pカード移動の軌跡を残す
        Call pゲーム用ファイルの明るさListBoxに設定(wlst背景の明るさ)
        Call pカードサイズ枠の太さListBoxに設定(wlst枠の太さ)
        Call pカードスピードListBoxに設定(wlstカードスピード)
    End Sub
    '***********************************************************************
    Private Sub 標準オプション設定Dlg_他のウインドウが表示あるいは非表示になりました(ByVal rMe_gmDlgID As Integer, ByVal r表示変更ウインドウID As Integer, ByVal r表示True消去False As Boolean, ByRef wRet_rMe_gmDlgIDウインドウを消去しなさい As Boolean) Handles 標準オプション設定Dlg.他のウインドウが表示あるいは非表示になりました
        wRet_rMe_gmDlgIDウインドウを消去しなさい = GMCOM_Dlgs他のウインドウの表示_非表示イベントで_rMe_ウインドウを消去しなさい(rMe_gmDlgID, r表示変更ウインドウID, r表示True消去False)
    End Sub
    '***********************************************************************
#End Region

#Region "■■ 五clsスイスイ  共用クラスを使用するためのダミー関数"
    '***********************************************************************
    Friend Function aaスイスイ_ショーカード_イメージ操作(ByVal op As Integer, ByVal スイスイ_カードショー_カードイメージタイプ As Integer, ByRef 正方形にする As Boolean, ByRef 枠幅実寸用の倍数 As Single, ByRef 特別な倍数 As Single, _
            ByVal curindex As Integer, ByRef Brsh線 As Integer, ByRef Brsh四本() As Integer, _
            ByRef 外枠幅実寸 As Integer, ByRef 枠幅実寸 As Integer, ByRef 画幅 As Integer, ByRef 画高 As Integer, ByRef Rgn画 As Integer, ByRef Rgn枠 As Integer, ByVal bmp受け As Integer) As Boolean
        '0 = ミックス
        '1 = 文字
        '2 = もよう
        '3 = 画像
        Return True
    End Function
    '***********************************************************************
    Friend Property pゲーム配色ひらがな() As Integer
        Get
            Return 0
        End Get
        Set(ByVal value As Integer)
            'no op
        End Set
    End Property
    '***********************************************************************
    Friend Property pゲーム配色カタカナ() As Integer
        Get
            Return 0
        End Get
        Set(ByVal value As Integer)
            'no op
        End Set
    End Property
    '***********************************************************************
#End Region

End Class











