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

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

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



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


スポンサーサイト

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






Chapter.73 [ オブジェクトってなんだ ]

■オブジェクトに関する前置き

前回まで、3回にわたってデバッグに関するテクニックを解説しました。知っているのといないのとでは、開発に掛かる労力がまるで変わってきます。

必須のテクニックではないだけに、あまり知られていない便利な機能などもあったりしますので、何かの参考になったとしたらうれしいのですが。


さて、今回のテーマは『オブジェクト』です。内容としては少し難しい話になるかと思います。プログラミングでオブジェクトと言うと、『オブジェクト指向』とか、『オブジェクトとクラス』とか、何かと難しいイメージがあるのではないかと思います。

当講座は、初心者でもわかるように、理屈よりもわかりやすさを重視しています。本当はパソコンの中で何が起こっているのか、知っていたほうが良いこともあるのは確かです。
しかし、ゲームの作成に限らず、プログラミングという作業は得てして単調で、挫折を伴いやすい分野です。それだけに、まずは『できた! という新鮮な感動』、であったり『思い通りに動作した! という達成感』であったり、とにかく自分自身が納得のいく成果がなくてはいけないのだと私は思っています。

パソコンの最深部で行われている難しい理屈より、こうして理解すれば簡単だ! という成果の上がりやすい情報を、皆さんにお届けしたいと考えて、いつもテキストを書いています。ですから、今回の講座の内容も、わかりやすさ重視です。

本当はこうなっているのだよ、という意見を持たれる方もいるかもしれませんし、実際私の認識が間違っていることもあるかもしれません。そんなときは、こっそりメールフォームなどから教えてやってください。

なんだか始めから言い訳みたいになってしまいましたが、頭をやわらかくして、オブジェクトについて考えてみましょう。


■オブジェクトの何たるか

そもそも、プログラミングにおけるオブジェクトって、一体何なのでしょうか。

オブジェクト(object)をそのまま直訳すると、『物・物体』となります。

私達の生きている現実世界では、全てのモノは目で見ることができ、また、触れることができますね。目で見たり、触ったり、そういったことを五感で感じたとき、我々はそこにモノがあると認識することができます。これが現実世界でのオブジェクトです。

それでは、プログラミングにおけるオブジェクトはどうでしょうか。

プログラミングは当然パソコンを使って行う作業です。
パソコンは、それ本体は現実世界でいうオブジェクトですが、その中身は、電子的なデータの集合に過ぎません。
人間がその電子的な情報を、直接その目で見ることはできませんし(ディスプレイを介してしか見ることができない)、当然ですが触れることもできません。パソコンの中では何かしらの意味を持つデータであっても、それを人は直接理解したり、または、直接操作したりはできないのですね。電気を操るミュータントじゃあるまいし、パソコンの中を覗いてそこにどんな電子情報が蓄積されているのか、わかる人なんていないのです。

では、その目には見えない電子情報を、目に見える形に変えてくれるのは誰でしょうか。

これは、OSと呼ばれるプログラムの仕事です。Windows や Mac などが知られていますね。
OS(オペレーティングシステム)は、パソコンの中にある電子データの集合を解析し、それを目に見える情報としてディスプレイに映し出してくれます。我々が今、インターネットを楽しんだりゲームを楽しんだりできるのは、OSがせっせと働いてくれているおかげなのです。

このように、皆さんが今、パソコンを使って様々なことを実現できるのは、目に見えない電子データの集合から、目に見える画像や映像へとOSがデータを変換してくれるおかげです。

そして、もうひとつ重要なのが、今回のテーマである『オブジェクト』です。


例えば、皆さんは次のように促されたらどうしますか?

開いているウィンドウをとじてください。

きっと、迷うことなくウィンドウを閉じることができる方がほとんどでしょう。

では次のように促されたらどうですか?

ボタンを押して次に進んでください。

きっと表示されているボタンを押しますよね。


さぁ、考えてみてください。

皆さんが、ウィンドウを閉じたり、あるいはボタンを押したりできるのはどうしてですか? 

……なんか少し変な質問に聞こえますね。頭がおかしい人だと思われてしまいそうです。
しかしこの質問の意味を理解することこそ、オブジェクトを理解することへの第一歩となるのです。


なぜウィンドウを閉じれるのか? それは、ウィンドウがどういう見た目のモノで、どういう動作をするモノなのか、それを皆さんがあらかじめ知っているからですよね。
本来であれば電子的なデータの集合に過ぎない情報が、ウィンドウというモノとして存在しているからこそ、ウィンドウを閉じるなどの操作を行うことができるわけです。

ボタンの場合も同じですね。
ボタンがどのような形をしているモノなのか、皆さんは知っているはずです。そして、もしボタンがどのようなモノなのか知らなければ、それを押すことはできないはずです。


本当は、パソコンの中にあるのは単なる電子的な情報です。しかし、それを目に見えるモノとして扱うことで、私達はそれを直感的に理解し、操作することができるようになります。

ウィンドウというモノ、ボタンというモノ、視覚的に捉えることができ、そして何らかの操作を受け付けるモノ……。これこそがオブジェクトなのです。


■ちょっと精査してみる

なんとなくオブジェクトが見えてきましたか?

要するにオブジェクトとは、人間が直感的に理解したり操作したりできるように、実際には単なるデータに過ぎない情報を、目に見える形に変換したものだと考えることができます。

DOS のような、文字だけで操作するOSが主流の頃には、ある程度の知識がないとパソコンを使いこなすことができませんでした。真っ黒な画面に、数字や英語の羅列が並んでいるのを見て、誰もがそれを理解できるわけではなかったのです。
しかも、何かの動作を要求するには、コマンドを入力して送ってやる必要がありました。コマンドを知らない人にとっては、ファイルをコピーしたり移動したりすることさえ難しかったのです。

しかし、今はウィンドウズなどのグラフィカルにデータを扱うことができるOSが主流となり、多くの人がパソコンを通じて様々なことを実現できるようになりましたね。様々なデータを目に見えるモノとして扱うことによって、文字だけの頃に比べて格段にわかりやすくなったのですね。
ファイルを移動するのなんて、マウスを使ってドラッグアンドドロップするだけですから、その簡単さとわかりやすさは以前と比べて飛躍的に進歩したわけです。


こうなってくると、必然的に我々はオブジェクトを使ってプログラミングしていかなくてはいけませんね。でもこれは既にこの講座で何度もやっています。皆さんは既に経験済みなのです。

ユーザーフォームというモノを使ってゲームを作ろう

    ▼

ユーザーフォームにボタンというモノを配置しよう

    ▼

イメージコントロールというモノを使って画像を表示しよう

どうですか。オブジェクトを使ってプログラミングしているのがわかりますね。

今まで、私が講座の中で、『コマンドボタンを配置しましょう』などと書いたことがありましたが、これは正確には『コマンドボタンオブジェクトを配置しましょう』だったわけです。


■プログラミング的視点で見るオブジェクト

それでは、オブジェクトについて大筋で理解できたところで、実際のプログラミングではオブジェクトをどのように扱っていけばいいのか、考えてみましょう。

まず知らなくてはならないのは、『オブジェクトの定義とは何か』ですね。

ためしに、VBAのヘルプにはどのように書かれているのか見に行ってみました。

オブジェクトは、ワークシート、セル、グラフ、フォーム、レポートなど、アプリケーションの要素を表します。Visual Basic コードでは、オブジェクトのメソッドの 1 つを使ったり、プロパティのいずれかの値を変更する前に、対象となるオブジェクトを識別する必要があります。

これを見て、オブジェクトが何なのか理解できる人がどのくらいいるでしょうか。少なくとも、初心者の頃の私には理解できなかったでしょうね。

しかし、まぁオブジェクトが何かということになると、上記の説明が間違っているわけではありません。わかりにくいだけで。


オブジェクトは、上記の解説にもあるとおり、アプリケーションを構築する要素のことを言います。ここで言うアプリケーションとは、スバリ Excel そのものを指します。

アプリケーション( Excel )を構築する要素と言えば、いろんなものが思いつきます。

・Excel ブック
・ブックのワークシート
・ワークシートのセル
・グラフ(グラフシート)
・図形(オートシェイプ)
・ウィンドウ
・メニューバーやツールバー
・ユーザーフォーム
・フォーム上のコントロール各種

などなど……。

とにかく沢山のモノが集まって、Excel というひとつのアプリケーションが成り立っているということがわかります。Excel でのオブジェクトとは、上で挙げたような、アプリケーションを構築する要素のことを指すわけです。

例えばブックであれば、『 Workbook オブジェクト 』です。同様に、ワークシートであれば『 Worksheet オブジェクト 』ですね。
セルを表すオブジェクトなら『 Range オブジェクト 』ですし、オートシェイプを表すのが『 Shape オブジェクト 』です。

このように、オブジェクトは、アプリケーションに欠かせない存在であり、オブジェクトをいかに扱っていくかによって、プログラムの完成度に大きな影響が出ることもわかるでしょう。


そして、オブジェクトの持つ特徴として非常に重要なのが、次の3つです。

・プロパティ
・メソッド
・イベント

これらの特徴や使い方をいかに理解しているか、それこそがオブジェクトの本質をどれだけ理解できているかの指標になります。

実は案外と、プロパティやメソッドというのは理解しにくい言葉だと個人的には思います。

私自身はその意味を理解するまでに、結構時間かかったほうだと思います。よくわからないまま、なんとなくプログラムを組んでいました。いろんな解説書を読んだりしましたが、結局その本質を理解できていなかったような気がしますし。

そんなわけで、次回は上記の3つの要素について、できる限りわかりやすく解説したいと思っています。ここを乗り越えられれば、オブジェクトについての理解が深まるだけでなく、確実に次のステップに進むことができるはずです。
これからも一緒にがんばって取り組んでいきましょう。


■格言

オブジェクトは単なる電子データを
人間が理解しやすくするための仕組み
Excelはたくさんのオブジェクトでできている


無理に理解しようとせず、直感的にイメージしてみてくださいね。


関連記事






Comment

Name
E-mail
URL
Comment
Pass  *
Secret? (管理者にだけ表示)

メールフォーム

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

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

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

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。