ExcelVBAゲームプログラミング?

初心者でもきっとできる!
Excelさえ持っていれば特別なソフトは不要!
すぐにでも始められる簡単ゲームプログラミング!
今すぐ始めよう!

サンプルやゲームのダウンロードができる別館も好評運営中です。
ご意見やご質問、ゲームの感想等は掲示板までお気軽に。是非、皆さんの声を聞かせてください。運営、開発の励みになります。



各種ダウンロードはコチラ ↓ 意見・感想・質問はコチラ ↓
影倉庫 Shadow warehouse サポート掲示板
ブログの全体像はコチラ ↓ リンクのページはコチラ ↓
サイトマップ 自分本位なリンク


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。






Chapter.94 [ タイピングゲーム9:正打数の表示 ]

■拡張してみる

前回の講座では、タイピングゲームの雛形が完成しました。

一応、普通にタイピングゲームとして遊ぶことができるようになったはずです。今回からは、前回までのタイピングゲームを拡張して、完成度を高めていきましょう。様々な工夫をすることによって、ゲームはどんどん面白くなります。

今回拡張する機能は、次のようなものにします。

・正しくタイプした数を表示
・間違ったタイプ数も表示
・正しくタイプできた比率を表示

このみっつを実装してみましょう。

ちょっとしたことなのですが、正しくタイピングできた比率を表示すると、なんか一生懸命になってしまったりします。間違っていることが明確に表示されるので、なんとなく気になって正しくタイプしようとしてしまうのですね。こういった何気ないことの積み重ねによって、面白いゲームができるのです。


■コントロールの追加

さて、まずは各種表示を行うための、ラベルコントロールを追加します。

531.gif
ここでポイントとなるのは、コントロールの名前をしっかりと変更しておくことです。
『正打数』などの、単なる言葉を表示しているコントロールは、ゲームのプログラムが動作している間に内容を変更しません。ですから、言い方は悪いですが、名前は何でもいいわけです。
ただし、数字が表示されているほうのラベルは、ゲームの処理中に常に内容を書き換えなくてはいけません。名前をしっかりとわかりやすく定義しておくことで、コードの記述がしやすくなります。適当な名前をつけるのではなく、自分がイメージしやすい名前をつけるようにしましょう。

ちなみに、今回のサンプルでは、文字の大きさ、太さ、フォントなどを変更して、見やすくしています。


■変数などを追加する

さて、これらの処理を実現するために、コードも修正していきます。

まずは変数です。追加する変数は、みっつ。正打数(正しくタイプした数)、誤打数(間違ってタイプした数)、正打率(正しくタイプした比率)、これらの情報を保持するために変数を使います。

Public True_Type As Long '正しくタイプした数
Public Bad_Type As Long '間違ってタイプした数
Public True_Ratio As Long '正しくタイプした比率


この変数を、標準モジュールの宣言セクションに追加しておきましょう。
さて、変数は追加しただけではいけません。キチンとゲームの初期化にも組み込んでおきます。

今回のタイピングゲームでは、ゲームの初期化を行う関数が準備してありましたね。この初期化の関数のなかで、しっかりと追加した変数が初期化されるようにしておきます。同じような理由から、ユーザーフォーム上に設置したラベルのキャプションプロパティも、同時に初期化しています。

True_Type = 0
Bad_Type = 0
True_Ratio = 0
With UserForm1 'フォーム上ラベルの初期化
    .Lab_seida.Caption = 0
    .Lab_goda.Caption = 0
    .Lab_seidaritu.Caption = 0 & "%"
End With

これで、下準備は完了です。


■処理を修正する

最後に実際のゲーム中の処理を修正します。

考え方としては、正しくタイプできたときと、間違ったタイプをしたとき、それぞれのときに変数をプラス 1 して、カウントしていきます。

正打率を求める際には、全てのタイプ数の合計値で、正しくタイプした数を割って、100倍すればいいですね。これは普通に比率を求める算数をすればいいだけです。

修正した箇所は、コードの色を変えています。これを参考にして、前回のコードから修正をしてみてください。

'フォームモジュールのコード

Option Explicit

Private Sub UserForm_Initialize()
    
    Lab_mondai.Caption = "PRESS ENTER"
    Lab_seikai.Caption = "PRESS ENTER"
    
End Sub

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
                             ByVal Shift As Integer)

    Dim Clear_Flag As Boolean
    
    Clear_Flag = False
    
    If Not Game_Flag Then
        If KeyCode = vbKeyReturn Then
            Lab_seikai.Caption = ""
            Game_Init
            Lab_mondai.Caption = "READY?"
            DoEvents
            Sleep 2000
            Lab_mondai.Caption = "GO!"
            DoEvents
            Sleep 2000
            Game_Flag = True
            Game_Time = GetTickCount
        End If
    Else
        If Not Clear_Flag Then
            If Str_Comparison(Problem(Problem_Number), _
                              Problem_Str_Count, _
                              Chr(KeyCode)) Then
                True_Type = True_Type + 1
                Lab_seida.Caption = True_Type

                Problem_Str_Count = Problem_Str_Count + 1
                If Len(Problem(Problem_Number)) < Problem_Str_Count Then
                    Problem_Number = Problem_Number + 1
                    Problem_Str_Count = 1
                    If Problem_Count < Problem_Number Then
                        Clear_Flag = True
                    End If
                End If
            Else
                Bad_Type = Bad_Type + 1
                Lab_goda.Caption = Bad_Type

            End If
            True_Ratio = Int(True_Type / (True_Type + Bad_Type) * 100)
            Lab_seidaritu = True_Ratio & "%"
        End If

    End If
    
    If Clear_Flag Then
        Game_Time = (GetTickCount - Game_Time) / 1000
        Lab_mondai.Caption = "!! Clear !!"
        Lab_seikai.Caption = "!! Clear !!"
        DoEvents
        Sleep 2000
        Lab_mondai.Caption = "Time:" & Game_Time & " Second"
        Lab_seikai.Caption = "Time:" & Game_Time & " Second"
        DoEvents
        Sleep 3000
        Lab_mondai.Caption = "PRESS ENTER"
        Lab_seikai.Caption = "PRESS ENTER"
        DoEvents
        Game_Flag = False
    Else
        Lab_mondai.Caption = Problem(Problem_Number)
        Lab_seikai.Caption = Left(Problem(Problem_Number), Problem_Str_Count - 1)
    End If
    
    DoEvents
    
End Sub

'標準モジュールのコード

Option Explicit

Declare Function GetTickCount Lib "kernel32" () As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)

Public Problem() As String
Public Problem_Count As Long
Public Problem_Number As Long
Public Problem_Str_Count As Long
Public Game_Flag As Boolean
Public Game_Time As Long

Public True_Type As Long
Public Bad_Type As Long
Public True_Ratio As Long


Sub Game_Init()

    Dim L As Long
    
    Problem_Count = 10
    ReDim Problem(1 To Problem_Count)
    Problem_Number = 1
    Problem_Str_Count = 1
    Game_Flag = False
    
    True_Type = 0
    Bad_Type = 0
    True_Ratio = 0
    With UserForm1
        .Lab_seida.Caption = 0
        .Lab_goda.Caption = 0
        .Lab_seidaritu.Caption = 0 & "%"
    End With

    
    Problem_Sort
    
    For L = 1 To Problem_Count
        Problem(L) = Cells(L, 1).Value
    Next

End Sub

Function Str_Comparison(mStr As String, _
                        Number As Long, _
                        kStr As String) As Boolean

    Dim S As String
    
    S = Mid(mStr, Number, 1)
    
    S = StrConv(S, vbUpperCase)
    
    Str_Comparison = S Like kStr
        
End Function

Sub Problem_Sort()

    Dim L As Long
    Dim LastCell As Long
    
    Randomize
    
    LastCell = Cells(65536, 1).End(xlUp).Row
    
    For L = 1 To LastCell
        Cells(L, 2).Value = Rnd
    Next
    
    Range(Columns(1), Columns(2)).Sort key1:=Cells(1, 2), _
                                       order1:=xlAscending
    
End Sub


これで、タイピングをしながら、リアルタイムに正打数などが表示されるようになります。

やってみるとわかりますが、思わずミスをしないように、一生懸命になってしまうと思います。始めにも書きましたが、こういった小さなことの積み重ねが、面白いゲームを作っていきます。さりげないことですが、結構大きな意味があるのですね。

532.gif

今回も、別館にサンプルをアップしておきます。実際に動かしてみたいという方は、まずそちらをやってみてください。前回との違いがわかると思います。


サンプルダウンロード ⇒ コチラよりダウンロードできます。(別館)



■格言

ゲームの面白さは小さなことの積み重ねによって生まれる
変数を追加したら初期化を忘れずに


次回はいよいよタイピングゲーム最終回です。


スポンサーサイト






Chapter.95 [ タイピングゲーム10:タイムの表示 ]

■リアルタイムに経過時間を表示

さて、今回のタイピングゲーム作成も、いよいよ大詰めです。ここまで順番に進めてきた方、もう一息です。がんばってください。

さて、今回は、タイピングゲームをしている間、経過時間をリアルタイムに表示することができるようにしてみます。今のところ、ゲームが終わったあとに、タイピングにかかった時間が表示されるようになっていますが、この機能の拡張版、といった感じでしょうか。


実は、今回の機能を実装させるためには、結構特殊な処理が必要です。
それはなぜでしょうか。

今回のタイピングゲームは、『イベントドリブン型』の処理をしているタイピングゲームでした。覚えていますか?
キーの入力検知を、ユーザーフォームのキーダウンイベントによって行っていましたよね。このような、イベントに依存した処理のことを、イベントドリブン型の処理と呼んでいます。

プログラムは、イベントが発生したとき(今回で言えばキーの入力が検知された瞬間)を合図に動き出します。それ以外のところでは、基本的にプログラムが止まっているわけです。極端なことを言うと、キーの入力を行わなければ、その間なんの処理も行われません。

リアルタイムに経過時間を表示するとなると、これでは困ってしまいます。最低でも、ユーザーフォーム上の表示を書き換える処理が必要だからです。例え、キーの入力が全く無い状態だったとしても、時間を表示する処理だけは常に行わなくてはならないわけですね。


リアルタイムに経過時間を表示することと、タイピングゲームの基本の処理とは、全く切り離して考えなくてはいけません。

経過時間表示は、常に動き続ける処理として実装します。そして、タイピングゲームの処理自体は、イベントドリブンで処理します。この合わせ技で今回は行きたいと思います。


■コントロールの追加

まずはコントロールの追加から行いましょう。

タイムを表示するために、ラベルコントロールを追加します。今回も、名前の変更を忘れずに行っておきましょう。

540.gif

今回追加するコントロールはこれだけです。


■経過時間表示処理

経過時間の表示処理には、専用のプロシージャをひとつ用意します。
フォームが表示されると同時に、このプロシージャを呼び出すようにします。そして、ユーザーフォームが閉じられると同時に、こちらのプロシージャも停止するようにします。

これを言われただけでは、ちょっとイメージしにくいですね。
具体的には、ユーザーフォームが表示されると実行されるイベントである、アクティベイトイベント(Activate)を利用してプロシージャを呼び出します。

ここで呼び出された、経過時間表示用プロシージャは、ユーザーフォームが表示されている間、バックグラウンドで常に動き続けます。プロシージャの中で、現在のゲームの進行状況を見ながら処理の内容を変えます。


'フォームモジュールのコード

Option Explicit

Private Sub UserForm_Activate()

    Time_Count
    
    End
    
End Sub


Private Sub UserForm_Initialize()
    
    Lab_mondai.Caption = "PRESS ENTER"
    Lab_seikai.Caption = "PRESS ENTER"
    
End Sub

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
                             ByVal Shift As Integer)

    Dim Clear_Flag As Boolean
    
    Clear_Flag = False
    
    If Not Game_Flag Then
        If KeyCode = vbKeyReturn Then
            Lab_seikai.Caption = ""
            Game_Init
            Lab_mondai.Caption = "READY?"
            DoEvents
            Sleep 2000
            Lab_mondai.Caption = "GO!"
            DoEvents
            Sleep 2000
            Game_Flag = True
            Game_Time = GetTickCount
        End If
    Else
        If Not Clear_Flag Then
            If Str_Comparison(Problem(Problem_Number), _
                              Problem_Str_Count, _
                              Chr(KeyCode)) Then
                True_Type = True_Type + 1
                Lab_seida.Caption = True_Type
                Problem_Str_Count = Problem_Str_Count + 1
                If Len(Problem(Problem_Number)) < Problem_Str_Count Then
                    Problem_Number = Problem_Number + 1
                    Problem_Str_Count = 1
                    If Problem_Count < Problem_Number Then
                        Clear_Flag = True
                    End If
                End If
            Else
                Bad_Type = Bad_Type + 1
                Lab_goda.Caption = Bad_Type
            End If
            True_Ratio = Int(True_Type / (True_Type + Bad_Type) * 100)
            Lab_seidaritu = True_Ratio & "%"
        End If
    End If
    
    If Clear_Flag Then
        Game_Time = (GetTickCount - Game_Time) / 1000
        Lab_mondai.Caption = "!! Clear !!"
        Lab_seikai.Caption = "!! Clear !!"
        DoEvents
        Sleep 2000
        Lab_mondai.Caption = "Time:" & Game_Time & " Second"
        Lab_seikai.Caption = "Time:" & Game_Time & " Second"
        DoEvents
        Sleep 3000
        Lab_mondai.Caption = "PRESS ENTER"
        Lab_seikai.Caption = "PRESS ENTER"
        DoEvents
        Game_Flag = False
    Else
        Lab_mondai.Caption = Problem(Problem_Number)
        Lab_seikai.Caption = Left(Problem(Problem_Number), Problem_Str_Count - 1)
    End If
    
    DoEvents
    
End Sub


'標準モジュールのコード

Option Explicit

Declare Function GetTickCount Lib "kernel32" () As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)

Public Problem() As String
Public Problem_Count As Long
Public Problem_Number As Long
Public Problem_Str_Count As Long
Public Game_Flag As Boolean
Public Game_Time As Long

Public True_Type As Long
Public Bad_Type As Long
Public True_Ratio As Long


Sub Time_Count()

    Dim Now_Time As Long
    Dim Minutes As Long
    Dim Seconds As Long
    Dim MilliSeconds As Long
    
    Do
    
        If Game_Flag Then
            Now_Time = GetTickCount - Game_Time '①
            
            Minutes = Now_Time \ 60000 '②
            Seconds = Int((Now_Time Mod 60000) / 1000) '③
            MilliSeconds = Int(Now_Time Mod 1000) / 10 '④
            
            UserForm1.Lab_keika.Caption = Format(Minutes, "00") & ":" & _
                                          Format(Seconds, "00") & ":" & _
                                          Format(MilliSeconds, "00") '⑤
        End If
        
        Sleep 1
        DoEvents
        
    Loop Until Not UserForm1.Visible
    
End Sub


Sub Game_Init()

    Dim L As Long
    
    Problem_Count = 10
    ReDim Problem(1 To Problem_Count)
    Problem_Number = 1
    Problem_Str_Count = 1
    Game_Flag = False
    
    True_Type = 0
    Bad_Type = 0
    True_Ratio = 0
    With UserForm1
        .Lab_seida.Caption = 0
        .Lab_goda.Caption = 0
        .Lab_seidaritu.Caption = 0 & "%"
        .Lab_keika = "00:00:00"
    End With
    
    Problem_Sort
    
    For L = 1 To Problem_Count
        Problem(L) = Cells(L, 1).Value
    Next

End Sub

Function Str_Comparison(mStr As String, _
                        Number As Long, _
                        kStr As String) As Boolean

    Dim S As String
    
    S = Mid(mStr, Number, 1)
    
    S = StrConv(S, vbUpperCase)
    
    Str_Comparison = S Like kStr
        
End Function

Sub Problem_Sort()

    Dim L As Long
    Dim LastCell As Long
    
    Randomize
    
    LastCell = Cells(65536, 1).End(xlUp).Row
    
    For L = 1 To LastCell
        Cells(L, 2).Value = Rnd
    Next
    
    Range(Columns(1), Columns(2)).Sort key1:=Cells(1, 2), _
                                       order1:=xlAscending
    
End Sub

Sub FormLoad()

    UserForm1.Show
    
End Sub


色が付いている部分が、前回から追加された部分です。

ユーザーフォームが表示されようとするとき、まず呼び出されるのは『 Initialize イベント 』です。今回のゲームでは、ここで初期化などを行っていましたよね。
そして、Initialize イベントが完了すると、ユーザーフォームが表示され、同時に『 Activate イベント』が発生します。

今回追加した時間表示のプロシージャを呼び出しているのが、ここですね。

そして、実際に呼び出されている時間表示プロシージャが『 Time_Count 』です。このプロシージャは、ゲームの開始時間を元に、現在までの経過時間を計算します。

①で、まず現在までの経過時間を取得しています。『 Now_Time = GetTickCount - Game_Time 』この部分で、変数 Now_Time に現在までの経過時間が入ります。ただし、ここで取得できる時間の単位はミリ秒です。1秒なら、1000ミリ秒ですね。

②~④までの部分では、先ほど取得した時間を、分、秒、それ以下に分解しています。今回は小数点以下2位までの秒数を取得しています。

②の部分では、分を取得しています。『 \ 演算子』を使って計算していますね。この演算子は、割り算をした結果の整数部分だけを取得することができます。60000ミリ秒は、60秒です。経過時間を60000で割り算して整数部分だけを取り出すことで、何分経っているのかがわかるのですね。

③の部分が、秒の部分を取得している部分です。②の時には \ 演算子を使って除算後の整数部分だけを抜き出しましたが、③では、Mod 演算子を使ってその逆を行っています。除算後のあまりの部分だけを取得することによって、秒の部分を抜き出しています。

④では、同じように小数点以下の秒数部分を取得しています。ここでも Mod 演算子を使っていますね。ちょっとわかりにくいですが、ゆっくり考えてみてくださいね。

さて、②、③、④、と順番に変換した時間を使って、⑤で実際にユーザーフォーム上のラベルのキャプションプロパティを設定しています。最後に、CPUに配慮して Sleep 関数を呼び出し、フォーム上の表示を更新するための DoEvents を呼び出しています。

時間の単位を変換するところが少し難解かもしれませんが、落ち着いて考えてみてくださいね。

541.gif


■まとめ

さぁ、いかがでしたか。うまく改造できそうでしょうか。
今回は結構荒技的な内容になりましたね。実際に動かしてみるとどうということはないのですが、実装させるには結構頭を柔らかくしなくてはいけません。

常に動き続ける経過時間表示処理と、キー入力を検知して動作するイベント処理部分を、うまく共生させるにはそれなりに工夫が必要です。自分なりに今回のコードを修正したりしながら、よりよい形を模索してみてくださいね。


今回の講座で、タイピングゲームの講座は終わりになります。今回はアルファベット入力のみの対応でしたが、それでも結構難しかったですね。
タイピングゲームは日本語入力に対応しようとすると、極端にレベルが高くなります。興味のある人は、がんばって日本語入力に挑戦してみるのもいいでしょう。


今回も、講座で使用したサンプルをそのままアップしておきます。そちらも参考にしながら、自分なりのタイピングゲームを作成してみてください。


サンプルダウンロード ⇒ コチラよりダウンロードできます。(別館)



■格言

イベントドリブン型の処理と、恒常ループ型の処理を共存させる


少しわかりにくい内容になってしまいました。大丈夫かな……。








メールフォーム

影斬に物申すという方はこちら

名前 :
メール:
件名 :
本文 :

可能な限り要望には応えますが、必ず返信や回答ができることを、保障するものではありません。
ご了承ください。

Chapters

コンテンツ一覧


■Chapter 一覧■
    全てのChapterの一覧です。
    直接アクセスしたい方はこちらをご利用下さい。

    Chapter.1 [ 知っておくべき心得 ]
    Chapter.2 [ Excelってなんだろう ]
    Chapter.3 [ Excelの基本画面 ]
    Chapter.4 [ VBAとは? ]
    Chapter.5 [ モジュールについて ]
    Chapter.6 [ 変数 ]
    Chapter.7 [ 変数の型と宣言 ]
    Chapter.8 [ プロシージャとスコープ ]
    Chapter.9 [ ゲームつくる様々な手法 ]
    Chapter.10 [ ユーザーフォーム ]
    Chapter.11 [ プロパティウィンドウ ]
    Chapter.12 [ 乱数 ]
    Chapter.13 [ 条件分岐 ]
    Chapter.14 [ ゲーム画面のデザイン ]
    Chapter.15 [ コード記述の基本作法 ]
    Chapter.16 [ じゃんけんゲーム:1 名前をつける ]
    Chapter.17 [ じゃんけんゲーム:2 フォームの起動 ]
    Chapter.18 [ じゃんけんゲーム:3 乱数の種 ]
    Chapter.19 [ じゃんけんゲーム:4 イベント ]
    Chapter.20 [ じゃんけんゲーム:5 引数 ]
    Chapter.21 [ じゃんけんゲーム:6 役判定 ]
    Chapter.22 [ じゃんけんゲーム:7 予測と制限 ]
    Chapter.23 [ Withステートメント ]
    Chapter.24 [ 画像を表示させる ]
    Chapter.25 [ 画像表示の発展形 ]
    Chapter.26 [ 繰り返し処理 For文 ]
    Chapter.27 [ 繰り返し処理 Do~Loop文 ]
    Chapter.28 [ Exitステートメント ]
    Chapter.29 [ フォーム上の位置情報 ]
    Chapter.30 [ API基礎知識 ]
    Chapter.31 [ API補足知識 ]
    Chapter.32 [ メインループを考える ]
    Chapter.33 [ 同期処理の概念 ]
    Chapter.34 [ 移動処理その1:画面設定と考え方 ]
    Chapter.35 [ 移動処理その2:DoEvents ]
    Chapter.36 [ 移動処理その3:キー入力判定API ]
    Chapter.37 [ 条件分岐のさらなる探求 Select Case ]
    Chapter.38 [ アニメーション ]
    Chapter.39 [ 配列変数 ]
    Chapter.40 [ ゲームの初期化 ]
    Chapter.41 [ シューティングゲーム1:ゲーム設計 ]
    Chapter.42 [ シューティングゲーム2:メインプロセス ]
    Chapter.43 [ シューティングゲーム3:構造体 ]
    Chapter.44 [ シューティングゲーム4:定数 ]
    Chapter.45 [ シューティングゲーム5:プレイヤーキャラクター ]
    Chapter.46 [ シューティングゲーム6:ショットを撃つ① ]
    Chapter.47 [ シューティングゲーム7:ショットを撃つ② ]
    Chapter.48 [ シューティングゲーム8:Mod演算子の活用 ]
    Chapter.49 [ シューティングゲーム9:敵キャラクター登場 ]
    Chapter.50 [ シューティングゲーム10:衝突判定 ]
    Chapter.51 [ シューティングゲーム11:衝突の実体 ]
    Chapter.52 [ シューティングゲーム12:敵の攻撃 ]
    Chapter.53 [ シューティングゲーム13:爆発エフェクト ]
    Chapter.54 [ シューティングゲーム14:残機数表示① ]
    Chapter.55 [ シューティングゲーム15:残機数表示② ]
    Chapter.56 [ シューティングゲーム16:スコアの表示 ]
    Chapter.57 [ シューティングゲーム17:タイトル画面 ]
    Chapter.58 [ シューティングゲーム18:ボスキャラクター ]
    Chapter.59 [ シューティングゲーム19:最後の仕上げへ ]
    Chapter.60 [ シューティングゲーム20:いよいよ完成STG ]
    Chapter.61 [ カードゲームで使えるめくり効果 ]
    Chapter.62 [ ラジアンと角度 ]
    Chapter.63 [ ラジアンの活用:円運動 ]
    Chapter.64 [ ラジアンの活用:任意の角度へ移動する ]
    Chapter.65 [ APIによるサウンド再生:基礎 ]
    Chapter.66 [ APIによるサウンド再生:MIDIと多重再生 ]
    Chapter.67 [ APIによるサウンド再生:MCIコマンドとループ再生 ]
    Chapter.68 [ Function プロシージャ ]
    Chapter.69 [ 値渡しと参照渡し ]
    Chapter.70 [ デバッグ1:イミディエイトウィンドウ ]
    Chapter.71 [ デバッグ2:ローカルウィンドウ ]
    Chapter.72 [ デバッグ3:コード実行の中断 ]
    Chapter.73 [ オブジェクトってなんだ ]
    Chapter.74 [ プロパティ・メソッド・イベント ]
    Chapter.75 [ オブジェクト変数 ]
    Chapter.76 [ オブジェクトとコレクション ]
    Chapter.77 [ 特殊な繰り返し:For Each ]
    Chapter.78 [ エラー処理 ]
    Chapter.79 [ On Error と GoTo文 ]
    Chapter.80 [ Resumeステートメント ]
    Chapter.81 [ バイトとビット ]
    Chapter.82 [ ウィンドウメッセージとイベント ]
    Chapter.83 [ 文字列の基礎 ]
    Chapter.84 [ 文字列操作① ]
    Chapter.85 [ 文字列操作② ]
    Chapter.86 [ タイピングゲーム1:仕様を決める ]
    Chapter.87 [ タイピングゲーム2:キー入力検知 ]
    Chapter.88 [ タイピングゲーム3:文字列照合 ]
    Chapter.89 [ タイピングゲーム4:判定関数 ]
    Chapter.90 [ タイピングゲーム5:ゲーム画面設計 ]
    Chapter.91 [ タイピングゲーム6:問題文のソート ]
    Chapter.92 [ タイピングゲーム7:動的配列 ]
    Chapter.93 [ タイピングゲーム8:キーダウンイベント ]
    Chapter.94 [ タイピングゲーム9:正打数の表示 ]
    Chapter.95 [ タイピングゲーム10:タイムの表示 ]
    Chapter.96 [ クリックゲーム1:イベントの種類 ]
    Chapter.97 [ クリックゲーム2:画面設計 ]
    Chapter.98 [ クリックゲーム3:クリック座標検知 ]
    Chapter.99 [ クリックゲーム4:キャラクター準備 ]
    Chapter.100 [ クリックゲーム5:キャラクターの配置 ]
    Chapter.101 [ クリックゲーム6:キャラクター移動とNot演算子 ]
    Chapter.102 [ クリックゲーム7:クリックのヒット判定 ]
    Chapter.103 [ クリックゲーム8:ヒットマークエフェクト ]
    Chapter.104 [ クリックゲーム9:サウンド処理の実装 ]
    Chapter.105 [ クリックゲーム10:マウスカーソルの変更 ]
    Chapter.106 [ ブロック崩しゲーム1:仕様と概要を決める ]
    Chapter.107 [ ブロック崩しゲーム2:基本概念の確認 ]
    Chapter.108 [ ブロック崩しゲーム3:ベクトルとは ]
    Chapter.109 [ ブロック崩しゲーム4:変数や定数の宣言 ]
    Chapter.110 [ ブロック崩しゲーム5:初期化処理の実装 ]
    Chapter.111 [ ブロック崩しゲーム6:ブロックの配置 ]
    Chapter.112 [ ブロック崩しゲーム7:根幹処理とバーの処理 ]
    Chapter.113 [ ブロック崩しゲーム8:線分と線分の交差を判定 ]
    Chapter.114 [ ブロック崩しゲーム9:線分同士の交点 ]
    Chapter.115 [ ブロック崩しゲーム10:ボールの処理 ]
    Chapter.116 [ ブロック崩しゲーム11:最終調整して完成へ ]
    Chapter.117 [ テキストファイル操作基礎 ]
    Chapter.118 [ テキストファイル操作:読み込み編 ]
    Chapter.119 [ テキストファイル操作:CSV読み込み編 ]
    Chapter.120 [ テキストファイル操作:様々な読込編 ]
    Chapter.121 [ テキストファイル操作:バイナリ編 ]
    Chapter.122 [ テキストファイル操作:暗号化編 ]
    Chapter.123 [ テキストファイル操作:復号化編 ]
    Chapter.124 [ クラスモジュールとは ]
    Chapter.125 [ クラスモジュール:メソッド編 ]
    Chapter.126 [ クラスモジュール:プロパティ編 ]
    Chapter.127 [ クラスモジュール:イベント拡張編 ]
    Chapter.128 [ クラスモジュール:イベント自作編 ]
    Chapter.129 [ APIによる描画処理1:ハンドル ]
    Chapter.130 [ APIによる描画処理2:デバイスコンテキスト ]
    Chapter.131 [ APIによる描画処理3:ペン オブジェクト ]
    Chapter.132 [ APIによる描画処理4:ブラシ オブジェクト ]
    Chapter.133 [ APIによる描画処理5:図形描画準備編 ]
    Chapter.134 [ APIによる描画処理6:図形描画実践編 ]
    Chapter.135 [ APIによる描画処理7:画像描画の仕組み編 ]
    Chapter.136 [ APIによる描画処理8:ビットブロック転送編 ]
    Chapter.137 [ APIによる描画処理9:ラスタオペレーション ]
    Chapter.138 [ APIによる描画処理10:マスク描画 概念編 ]
    Chapter.139 [ APIによる描画処理11:マスク描画 実践編 ]


    コードやVBAに関する質問などはサポート掲示板(別館)までお気軽にどうぞ。




fc2 seotool Excel VBA ゲーム プログラミング 講座

Counter

twitter


Shadow BBS - 影掲示板

VBA 関連書籍



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。