DXライブラリをつかって ディスプレイ画面に白い点を表示してみましょう(DXライブラリの作者 山田 巧さんに感謝します)

マックス「やったか」


ソーラー「さあ


DXライブラリを使用する準備は整いました


これで


C言語を使ってゲーム開発ができるようになりました


もう後はゲームを作っていくだけです」




solarplexuss「一区切りついたね」


ソーラー「せっかくDXライブラリを使えるようになったんだから


なにか


DXライブラリを使ったプログラムを組んでみたいね


どうしよっかな~


まずは・・・


そうだね


DXライブラリ置き場においてあるサンプルプログラムを実行してみよう


DXライブラリの開発者である山田 巧さんが用意してくれたサンプルプログラムなんだよ


ほんとに親切な方だね



(ここでは


お試しで


DXライブラリを使ったプログラムを組んで実行することになりますが


基本的な使い方は次のエピソードから解説されますので


ご安心ください


まずは


お試し💖からです)






今回


お試しサンプルとして実行するプログラムは次のようになります。」

👇


#include "DxLib.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)


{

if( DxLib_Init() == -1 ) // DXライブラリ初期化処理

{

return -1 ; // エラーが起きたら直ちに終了

}


DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ


WaitKey() ; // キー入力待ち


DxLib_End() ; // DXライブラリ使用の終了処理


return 0 ; // ソフトの終了

}


ソーラー「ふふ


まだプログラムを実行しません


なにやら


エディタ画面の下側に

警告 C28251 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。

表示されています・・・



ビルドエラーになりそうな警告文は表示されていません


このプログラムの実行、できそうですね」


マックス「おお そうか」


ソーラー「というわけで


プログラムを実行してみましょう


Visual Studioの画面上部のメニュー一覧から


デバッグ


を選択してクリック


次に表示される


メニュー一覧から


デバッグなしで開始をクリックします


このプログラムの実行方法は今までのC言語学習の時と一緒だね


それでは


プログラムを実行してみま~す💖」




プログラムの実行結果・・・



真っ黒いディスプレイ画面があらわれ


白い点がディスプレイ画面の真ん中に表示されます


なにかボタンが押されると


この画面は消えます



マックス「な、なんだ


なにがおこった?


バグったか?」



ソーラー「(*´▽`*)


プログラムの実行成功です


このプログラムに関しての


DXライブラリ置き場の解説は次のようになっています


読んでみましょう


👇

プログラムはこれだけです、どの部分が何をしているのか簡単に説明します。 まず最初の1行はDXライブラリを使用するために必要なファイル( DxLib.h )をインクルードしています。

次の 『int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )』 は Windows用ソフトのプログラムのスタート地点となる関数の宣言です。それぞれの単語が何を意味しているかは特に考える必要はありません。 ウインドウ環境のスタート関数はすべてこの形の宣言をとります。

中括弧関数最初の文『if( DxLib_Init() == -1 ){ return -1 ; }』はDXライブラリを初期化して使える状態にするために必要な関数『DxLib_Init』を呼んでいます。 この関数はDXライブラリを使うプログラムを組む際には例外を除いてまず最初に呼び出す必要があります。 因みに『if(...』と書かれているのは初期化が失敗したらその時点でソフトを終了させるという処理を行うための物です。

『DrawPixel』はそのまま点を描画するための関数です。

その次の『WaitKey』はキーが押されるまで処理を止める関数です。

最後の『DxLib_End() ;』は注釈にも書いてある通りDXライブラリの使用を終了する処理を行う関数を呼んでいる文です。 DXライブラリを使用しているプログラムは最後に必ずこの関数を呼ばなくてはなりません。

👆



ソーラー「


では


私たちも解説を行ってみましょう


#include "DxLib.h"



ヘッダファイル"DxLib.h"



includeしています


これで


DXライブラリに格納されている関数を使うことができるようになります


前のエピソードで


DXライブラリが使えるよう設定を行ってきたから


ヘッダファイル"DxLib.h"



includeできるようになったんだよ



次に




int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )


が表示されています


これは


WinMain関数と呼ばれるものです



()の中の


HINSTANCE hInstance

HINSTANCE hPrevInstance

LPSTR lpCmdLine

int nCmdShow


は引数となっています


これらは


いつも記述するお決まりの引数で意味が分からなくても大丈夫です


Windows APIを用いたプログラミングにおいては


WinMain関数からプログラムは実行されることになります


スタート関数とは


そのプログラムで


一番最初に実行される関数のことなんです


今まで


C言語を学んでいたときは


main関数が


スタート関数だったね


さあ


WinMain関数のブロック{}内の命令文が実行されることになります


WinMain関数のブロック{}内には


if( DxLib_Init() == -1 ) // DXライブラリ初期化処理

{

return -1 ; // エラーが起きたら直ちに終了

}


DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ


WaitKey() ; // キー入力待ち


DxLib_End() ; // DXライブラリ使用の終了処理


return 0 ; // ソフトの終了


が記述されています



色々記述されているね



まず


if( DxLib_Init() == -1 ) // DXライブラリ初期化処理

{

return -1 ; // エラーが起きたら直ちに終了

}


が実行されます」




マックス「なんだ これは?」


solarplexuss「なんで


if文なの?」



ソーラー「



DxLib_Init()に注目してほしいな



DxLib_Init()とはDXライブラリを初期化する関数なんです


InitとはInitalizeの略です


Initalizeとは初期化という意味なんです


DxLib_Init()を実行するだけで


DXライブラリが初期化されるんだよ


DXライブラリの初期化に失敗すると


DxLib_Init()関数に戻り値-1が返されます


if( DxLib_Init() == -1 )



DxLib_Init() == -1


が成立するので


return -1 ;


が実行されます


すると


WinMain関数に


戻り値-1が返されることになります


WinMain関数に


戻り値-1が返された時点で


プログラムの実行は終了となります


これ以降のプログラムは実行されません」


マックス「まあ 


DXライブラリが初期化できない


なんらかの問題があるんじゃ


DXライブラリに格納されている関数が使えない可能性がでてくる・・・


だから


この時点でプログラムの終了というわけだ



これ以降のプログラムはDXライブラリに格納されている関数ばかり


使われているんだろう?」


ソーラー「そ~いうことだね


DXライブラリの初期化に成功すると




DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ



の実行に移ります


このDrawPixel関数は


ディスプレイ画面に点を打つ関数なんだ


320

240

GetColor( 255,255,255 )



引数なんだ」


マックス「この


GetColor( 255,255,255 ) は何なんだ」


ソーラー「GetColor( 255,255,255 ) も関数で


引数を


3つもっています


(  )の中の


255

255

255


が引数です


この場合


第1引数 255

第2引数 255

第3引数 255


となっています


第1引数

第2引数

第3引数 

それぞれ


0から255までの値をとることができます


この値を変えることで


画面に表示される点の色が変わります


GetColor( 255,255,255 )は白色を



GetColor( 0,255,255 )は青色を表すんだよ




ソーラー「つまり


DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ



簡単に言うと


横320

縦240

の位置に


白色の点を打つという命令なんだ


試しに


DrawPixel(0 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ


と記述してプログラムを実行すると


青色の点が真ん中より左側に表示されます」


マックス「そういうことか


いきなり


真っ黒い画面に白い点が表示されたので


プログラムの実行に失敗したかと思ったぞ」


ソーラー「そうですね



そして


DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ


のあとに


実行されるのが


WaitKey() ; // キー入力待ち


です


WaitKey() ;


が実行されると


なにかキーボードから入力されない限り


なにも実行されませんので


ディスプレイ画面に


白い点が表示されたままの状態になります


ここで


何かキーボードから入力すると


WaitKey() ;


の次の命令文


DxLib_End() ; // DXライブラリ使用の終了処理



が実行されることになります


これは儀式のような命令文で


DXライブラリを使用した場合は


プログラムの最後に実行することになります



そして


return 0;



WinMain関数に


戻り値0が返され


プログラムの実行が終了すると


白い点が表示された真っ黒い画面は


消えることになります」



マックス「やったな


もう完全にDXライブラリの導入に成功しているようだな


これで


ゲーム作りができそうだな」


ソーラー「そうなんです


もうちょっとだけ


DXライブラリ置き場の説明を読んでみよう」


👇



画面中心に点が描画されたでしょうか?

実行するまでにかなり長かったような気がしますがその殆どが Visual Studio Community 2019 でのソフトウエア制作に必ず必要な作業ですので幾つかプログラムを組んでいけばすぐに慣れてしまう筈です。



さてできあがった実行可能ファイルですが、それはプロジェクトのフォルダの中の『Debug』フォルダか『Release』フォルダの中に作成されます。これがこれまでの作業の成果となります。

これでDXライブラリを使ってのソフト制作の方法はわかりました。後は好きにプログラムを組んでゲームを作るだけです。ですがまだDXライブラリの機能は初期化と終了とドットを描画する関数しかわかっていません。

この他の関数はDXライブラリ関数リファレンスのページで解説されていますのでそちらを参照して下さい。


ソーラー「このように


DXライブラリ置き場には


DXライブラリ関数リファレンスのページ


などの


DXライブラリの使い方に関する詳しい情報が


のっています


たとえば


DXライブラリに格納されている便利な関数



ディスプレイ画面に画像を表示したり

キャラを動かしたりする


関数の使い方は


DXライブラリ関数リファレンスのページ


に掲載されています


なにかわからないことがあったときに


非常に役立ってくれるんだ」


マックス「なんと


そこまで用意してくれるとは・・・


まさに親切設計


山田 巧さんは


親切な方だな」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る