さあC言語(DXライブラリ)を使って超繊細、美麗、箱庭シューティングゲームを作ってみましょう 超初心者向けです 0.367
DXライブラリをつかって ディスプレイ画面に白い点を表示してみましょう(DXライブラリの作者 山田 巧さんに感謝します)
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ライブラリ関数リファレンスのページ
に掲載されています
なにかわからないことがあったときに
非常に役立ってくれるんだ」
マックス「なんと
そこまで用意してくれるとは・・・
まさに親切設計
山田 巧さんは
親切な方だな」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます