第2講 はじめてのゲーム画面起動
第6話 ゲーム画面を起動したコード(プログラムの文章)の1行1行の意味その2
コード再掲
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
  ChangeWindowMode(TRUE); //ウィンドウモードの切り替え
  SetGraphMode(800, 600, 32); //ウインドウサイズの変更
  if(DxLib_Init()==-1)return(-1); // DXライブラリ初期化処理
  WaitKey(); // キー入力待ち
  DxLib_End(); // DXライブラリ終了処理
  return 0;
}
また、上のように戻してF5を押しましょう。
ゲーム画面が
  SetGraphMode(800, 600, 32); //ウインドウサイズの変更
がないときより一回り大きくなりました。
800, 600は横のサイズと縦のサイズを示しています。
最後の32はカラービット数といい、
これを指定すると1667万色のフルカラーになります。
32を16にすると、65536色になります。
DXライブラリでは、32か16しか指定できません。
1667万色のフルカラーなら32の方がいいじゃないかとお思いになるでしょうが、
データ量が大きくなりコンピュータの負担(ふたん)は大きくなります。
さしものコンピュータでも3Dゲームになると苦戦することになりますので、
動きが遅くなってしまう場合には16を指定します。

5行目の
  if(DxLib_Init()==-1)return(-1); // DXライブラリ初期化処理

  DxLib_Init(); // DXライブラリ初期化処理
と記述しても問題ありません。
初期化というのは、コンピュータやプログラムの世界ではよく使われる言葉です。
最初の状態に戻すというような意味ですが、
DXライブラリを使うときには、最初にDxLib_Init();を入れなければならないと、
思えばよいでしょう。
この場合は、DXライブラリを使えるような状態にする(環境を設定する)という意味です。
尚、DxLib_Init()==-1の==は算数や数学の=に相当するものです。
DxLib_Init(); はDXライブラリの初期化を行ったときに、
何かの異常が発生した場合、-1の値を報告してくることになっています。
return(-1);のところはreturn(0);でもよいのです。
異常があったときには、int WINAPI WinMain自体を終了するという意味です。
intがついている場合整数の値を返さなければならない決まりになっています。
ですが、その値を使うことがC言語プログラムではありませんので、
何の値でもよいのです。

6行目は
  WaitKey(); // キー入力待ち
はキーボードからの入力を待っているという意味です。
何がキーが入力するまでプログラムを進めずに待機させる役割があります。
試しに、6行目を削って
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
  ChangeWindowMode(TRUE); //ウィンドウモードの切り替え
  SetGraphMode(800, 600, 32); //ウインドウサイズの変更
  if(DxLib_Init()==-1)return(-1); // DXライブラリ初期化処理
  DxLib_End(); // DXライブラリ終了処理
  return 0;
}
でデバッグの開始をすると、一瞬ゲーム画面が立ち上がりますがすぐに消えてしまいますね。
理由は簡単です。
プログラムは上から下に流れます。
つまり、
ChangeWindowMode(TRUE); →SetGraphMode(800, 600, 32);→
SetGraphMode(800, 600, 32);→DxLib_End(); →DxLib_End();→return 0;→}
と流れていきます。
  WaitKey(); // キー入力待ち
でプログラムを止めておかないとプログラムはあっという間に終わってしまうわけです。

さて、7行目
  DxLib_End(); // DXライブラリ終了処理
は注釈文(//のついている文または/*と*/で挟まれた文)に書いてあるとおりに、
DXライブラリを使ったときに最後にやらなければならない処理です。

8行目
  return 0;
についてはすでに説明してあります。
プログラムを終了するときのおまじないと思えばよいということでした。
本当の意味は、関数について説明する話で説明します。
何でもそうですが、物事を一気に理解しようとする姿勢は禁物です。
わからなくても我慢して授業を聞き続ける必要があります。
我慢して聞いていると、
そのときには全く理解できなかったのに、
授業が進むとストンと落ちるように理解できるものです。
そして、1度理解してしまうとなぜ理解できなかったのかがわからなくなるものです。
どうしてこんなに簡単なことを理解できなかったのかと。

さて、念願のゲーム画面が立ち上がりました。
001
後の講で、ゲームのメニュー画面を作ってから、
右クリック→コピー→右クリック→貼り付け→右クリック→名前の変更で、
例えば、テトリスというフォルダを作ります。
このフォルダを利用すれば、
第2講第1話から第4話までの作業は不要で、
いきなりゲーム開発ができます。

しかし、メニュー画面を作るのには、
C言語の基礎に戻って、
C言語の基本を学ばなければなりません。
どうしても先を急ぎたい方は、
本講義の 姉妹編小学生からエンジニアまでのC言語ゲームプログラミン入門
をお読みください。
開発環境は異なっていますが、
プロジェクト開発作業で異なる部分は、第2講の第1話から第4話までの一部にすぎず、
それ以降のプログラミングについては、違いは全くありませんので、
姉妹編でも勉強することができるのです。
学習するのに開発環境は何でもよいです。
であれば、動きが軽いvc++ 2010の方がゲーム開発に向いた開発環境といえるでしょう。
ですが、焦らないことです。
急がば回れです!
初心者の方は絶対です。
最初に扱うゲームはテトリスですが、
本講義の方が3倍以上詳しく解説されます。


第5話へ   第3講第1話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ