はてなブックマークに追加
Facebookでシェア
Google+でシェア
Twitterでシェア
5.ゲーム画面の初期化
ゲームの土台となる部分を描画します。ココの例がゲーム中のイメージですが、この中の背景色や点数などの基本的な部分の描画で、手作業でセルの色を染めるのではなくマクロで行います。
Sheet1(ゲーム)のマクロ「prcScreenInit」の作成
ゲームの基礎画面の描画です。早い話が画面の初期化です。マクロを使って行います。

マクロ「prcScreenInit」では、ワークシート「キャラクタ」からのパターンのローディングと、使用する部分全体に背景色(黒)を付け、ゲーム部分と情報部分の境界線、ハイスコアとスコアを描画しています。もちろん、コピペはエクセルマクロTips5.7 セルの高速コピー(切取り)貼付けで紹介している高速コピペです。

なお、ハイスコア(HI:)とスコア(SC:)の文字は、ローディングしたパターンの中からHI:のパターンSC:のパターンをゲーム画面の必要な部分へコピペして表示しています。

点数表示の部分(①と②)は、貼り付け先の横位置を一定間隔で変化させ0のパターンを7つコピーしていますが、貼り付け先の横位置(それぞれ左上と右下)は最初が149~153、次の位置が154~158(+5)、その次が159~163(+10)のように常に5ずつ増えていくため、最初の位置(149~153)にi×5を足すことで繰り返し1回毎に貼り付け先が5ずつ横に変化させています。その結果、0~6の7回ループすると0のパターン7コ並ぶというわけです。

背景色の設定と分割線(線と言ってもセルの背景色を設定するだけ)で使っている.Interiorについては、エクセルマクロTips6.2 セルに背景色を付けるをどうぞ。

実行すると、真っ白だったワークシートがこんな画面になります。ゲーム画面ぽい雰囲気が出てきましたね!


 ★Sheet1(ゲーム)のマクロ「prcScreenInit」
Sub prcScreenInit()

    'エクセルスマイル★シューティングゲームを作ろう
    '処理概要:ゲーム画面の初期化を行う
    '記述場所:ワークシート「ゲーム」

    Dim i As Long

    'ワークシート「ゲーム」を選択し、
    '念のため表示倍率や表示部分を標準に戻す
    Sheets(1).Select
    ActiveWindow.Zoom = 20
    Sheets(1).Range("A1").Select
    Sheets(1).Range("GG1").Select

    'パターンのローディング
    Call Sheet2.prcPatternCopy

    '背景色
    With Range(Cells(1, 1), Cells(150, 187)).Interior
        .ColorIndex = 1 '黒
        .Pattern = xlSolid
    End With

    'ゲーム部分と情報部分の分割線(白)
    With Range(Cells(1, 146), Cells(150, 146)).Interior
        .ColorIndex = 2 '白
        .Pattern = xlSolid
    End With

    'ハイスコア(HI:)をコピー
    Range(Cells(225, 66), Cells(229, 80)).Copy _
        Destination:=Range(Cells(4, 149) _
                         , Cells(8, 163))

    '①ハイスコア用0(7個)をコピー
    For i = 0 To 6
        Range(Cells(225, 1), Cells(229, 5)).Copy _
            Destination:=Range(Cells(10, 149 + (i * 5)) _
                             , Cells(14, 153 + (i * 5)))
    Next

    'スコア(SC:)をコピー
    Range(Cells(225, 51), Cells(229, 65)).Copy _
        Destination:=Range(Cells(19, 149) _
                         , Cells(23, 163))

    '②スコア用0(7個)をコピー
    For i = 0 To 6
        Range(Cells(225, 1), Cells(229, 5)).Copy _
            Destination:=Range(Cells(25, 149 + (i * 5)) _
                             , Cells(29, 153 + (i * 5)))
    Next

End Sub
 ※このマクロは、ワークシート「ゲーム」へ記述してください。


Copyright(C) 1999-2015 結城圭介(Ver.3.51) All rights reserved