【北海道大戦】マップデータを作成

そもそも、北海道大戦って何?

北海道の全市町村179ありますが、それらが全道統一を目指してバトルしたらどうだろう?って思い付きで考えたゲームです。

とりあえず、Excelで北海道マップを作成しました。

Excel方眼紙はこうやって使う。

でも、このままではデータとして使用できないので、番号に置き換えます。

ちゃんと179市町村ありました。

右に市町村の一覧があり、それらに番号が振られており、マップ上の市町村に番号を設置しました。

これをさらにExcelマクロで加工します。

イメージとしては、Json形式となるようにマップを検索し、X座標とY座標をまとめます。

Sub output()
    Dim TownArea As Object
    Dim Rows As Integer
    Set TownArea = Worksheets("Sheet1").Range("AU1", Range("AU1").End(xlDown).End(xlToRight))
    Rows = TownArea.Rows.Count
    
    Dim Area As Object
    Dim RightLength As Integer
    Dim DownLength As Integer
    Set Area = Worksheets("Sheet1").Range("B2:AS36")
    RightLength = Area.Columns.Count
    DownLength = Area.Rows.Count
    
    Dim WS2 As Object
    Set WS2 = Worksheets("Sheet2")
    Dim WriteLine As Integer
    WriteLine = 1
    WS2.Cells(WriteLine, 1).Value = "{""list"":["
    WriteLine = WriteLine + 1
    
    For R = 1 To Rows
        Dim number As Integer
        Dim name As String
        number = TownArea.Cells(R, 1).Value
        name = TownArea.Cells(R, 2).Value
        
        WS2.Cells(WriteLine, 2).Value = "{""name"" :"""
        WS2.Cells(WriteLine, 3).Value = name
        WS2.Cells(WriteLine, 4).Value = """, ""point"" :["
        
        For RL = 1 To RightLength
            For DL = 1 To DownLength
                If Area.Cells(RL, DL).Value = number Then
                    WS2.Cells(WriteLine, 5).Value = "{""x"" :"
                    WS2.Cells(WriteLine, 6).Value = RL - 1
                    WS2.Cells(WriteLine, 7).Value = ", ""y"" :"
                    WS2.Cells(WriteLine, 8).Value = DL - 1
                    WS2.Cells(WriteLine, 9).Value = "}"
                    WS2.Cells(WriteLine, 10).Value = ","
                    WriteLine = WriteLine + 1
                End If
            Next
        Next
        WS2.Cells(WriteLine - 1, 10).Value = "]},"
    Next
    WS2.Cells(WriteLine - 1, 10).Value = "]}"
    WS2.Cells(WriteLine, 1).Value = "]}"
End Sub

これをテキストにコピーして、セル間のタブを置換処理で削除すれば、Jsonとして完成します。

整形したらこんな感じになりました。

これでようやくマップデータとして使用できそうです。