ポンクソフト

C/C++言語とDXライブラリでゲーム作成入門

C/C++言語とDXライブラリでゲーム作成入門 TOP 次ページ

目次

  1. C/C++言語とDXライブラリでゲーム作成入門
  2. シューティングゲームの作成(チュートリアル)
  3. ドットイートゲームの作成(チュートリアル)
  4. 15パズルの作成
  5. 神経衰弱の作成
  6. オセロの作成
  7. オブジェクト指向を活用したシューティングゲーム

はじめに

この講座の目的

C/C++言語とDXライブラリによる様々なゲーム作りを通してゲームプログラミングの手法を学ぶ。

対象

基本的なC言語の構文を理解している人。

DXライブラリとは

http://homepage2.nifty.com/natupaji/DxLib/
山田 巧 様が作成された、Windowsでゲームを作成するためのライブラリです。DirectXをラップ(包み隠す)し、とても簡単に本格的なゲームを作成することができます。

開発環境のインストール・設定

http://homepage2.nifty.com/natupaji/DxLib/dxuse.html こちらのページに導入方法が詳しく記述されています。以下、かいつまんで説明します。

Visual Studioのインストール

製品版のVisual Studioをお持ちでなければ、http://www.microsoft.com/ja-jp/dev/express/ こちらから無償版のVisual Studio Expressをダウンロードしてインストールしてください。Windows XPの方は、http://www.microsoft.com/visualstudio/jpn/products/visual-studio-2010-express こちらからVisual C++ 2010 Expressをインストールしてください。

DXライブラリのインストール

http://homepage2.nifty.com/natupaji/DxLib/dxdload.html こちらからVisual C++用のDXライブラリをダウンロード・インストールします。

プロパティシートの導入

DXライブラリを使用するには、プロジェクトを作るたびに毎回少し手間のかかる設定をしなければならないのですが、それらを一度に行ってくれるプロパティシートを導入します。ISLeのビデオゲーム工房(http://isle.cocolog-nifty.com/blog/2011/06/dx-7be4.html)様よりDxLib_VC.props.zipをダウンロード・解凍し、DxLib_VC.propsを適当な場所に置きます(プロジェクトの近くが良いでしょう。例えばC:\srcで各プロジェクトを作成しているのならば、C:\srcに置くなど)。DxLib_VC.propsをテキストエディタで開き、IncludePathとLibraryPathをDXライブラリを導入したフォルダに合わせてください。

プロジェクトのセットアップ

以下の作業は、新しいプロジェクトを作成するたびに必要となります。

新規プロジェクトの生成

メニューの「ファイル」→「新規作成」→「プロジェクト」を選び、「Win32」の「Win32 プロジェクト」を選択します。プロジェクト名に適当な名前(ゲームをまとめるフォルダになります)を入力し(下図の例では「dxtest」)、OKを押します。
index_img/new_project.gif
「Win32 アプリケーション ウィザード」の画面で「次へ」ボタンを押し、「アプリケーションの種類」は「Windows アプリケーション」、「追加のオプション」で「空のプロジェクト」にチェックを入れ「完了」ボタンを押します。
index_img/app_wizard.gif

プロパティシートの追加

プロパティマネージャを開きます。プロパティマネージャが無ければ、メニューの「ツール」→「設定」→「上級者用の設定」をチェックし、メニューの「表示」→「プロパティマネージャ」を選んで表示してください。「既存のプロパティシート追加」アイコンをクリックし、上で用意したDxLib_VC.propsを追加します。プロパティマネージャのDebugフォルダとReleaseフォルダにDxLib_VCが追加されていることを確認してください。
index_img/property_sheet.gif

確認用プログラムの作成・実行

実際にDXライブラリを使ったプログラムを作成し、導入が成功しているか確認してみます。
メニューの「プロジェクト」→「新しい項目の追加」から「C++ ファイル」を選び、「名前」に適当なファイル名を書き追加ボタンを押します。そこに以下のソースファイルを入力してください。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
  DxLib_Init();
  WaitKey();
  DxLib_End();
  return 0;
}
メニューの「デバッグ」→「デバッグなしで開始」を押して実行します。黒い画面が全画面表示されれば導入が成功しています。何かキーを押すと元に戻ります。
C/C++言語とDXライブラリでゲーム作成入門 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


kuv
このプログラムでは、連結判定の時はつながっているぷよごとに結合番号をつけ、消せる場合はelist配列の結合番号と同じ要素番号のところにフラグを立てる、という方法をとっています。
ですが、例えばぷよをわざとつながらないように置いていった場合、結合番号の最大数がelist配列の要素数をオーバーしてしまうのではないでしょうか?
それに対応するにはelist配列の要素数をフィールドの大きさと同じ6*13=78にしなければいけないと思うのですが、30にしているのには何か意図があるのでしょうか?
2017/07/11 14:52

しお
vectorではなくlistを使っているのはなぜなのでしょうか?
2017/05/07 19:06

surach
なぜ弾のX座標が sx = px + 24;で時機の中央になるんですか?
2017/05/05 11:09

何度やってもできないー^^
ファイルが見つかりませんとなるのですが・・・
どうすれば?
2017/01/20 17:23

ww
dxlibは外部から自分で導入するものです。しっかり導入しましたか?
2016/12/26 12:29

ww
IncludePathとLibraryPathはdxライブラリを導入したときのフォルダパスが間違っているため、dxlib.hがあるフォルダパスを設定しなおせば動きます。
2016/12/26 12:28

ww
MTdは、プロジェクトのプロパティの設定項目から変更できる。
Debugモードの設定が、違うようですね↓
2016/12/26 12:26

笑子
実行したところ、白い画面が出てきてしまいます。解決策は、あるのでしょうか?
2016/11/10 23:38


背景を挿入したいのですが,どこにどんな風にプログラムを加えればいいのでしょうか?
2016/09/24 21:44

華仙 学
オセロプログラムに関してです。
Visual Studio 2015を使ってます。このプログラムを打ち込んだところ、「'RuntimeLibrary'の不一致が検出されました。値'MTd_StaticDebug'がMDd_DynamicDebugの値'othello.obj'と一致しません」と出てしまいます。いろいろ調べていますがなかなか解決しません。何か解決策はあるでしょうか?
2016/08/17 21:12

あたる
さらにいいゲームを教えてほしいですね。
2016/08/11 13:00

とも
背景の挿入,自機を左右だけでなく,上下にも動かせたいです。
2016/06/30 23:44


上記のソースファイルを入力したらDxLib.hが開けないとなってます。
2016/06/22 21:47

php
 DxLib_VC.propsをテキストエディタで開き、IncludePathとLibraryPathをDXライブラリを導入したフォルダに合わせてください。とはどういう意味ですか?
2015/12/31 12:40

まま
ゲームオーバーからメッセージボックスでリスタートか終了する機能を追加する方法を教えていただきませんか?
2015/10/09 15:06

まま
ゲームオーバーからメッセージボックスでリスタートか終了する機能を追加する方法を教えていただきませんか?
2015/10/09 15:05


Chrクラスには仮想デストラクタがないので派生クラスのデストラクタが呼び出されないように見えますがこれはミスではありませんか?
2015/10/03 13:59

ssh
球を連射できるようにしたいのですがどうすればよいですか?
2015/09/15 13:40

snake
マップの表示まではできたみたいなんですけど、なぜか主人公が後ろにいってるのかわからないけど、表示されません。

どうすればいいですか?
2015/06/10 23:52


画像が表示されないのですが
2015/04/19 16:43

初心者
返信遅くなり申し訳ありません!
色々詳しくありがとうございます。早速調べに行きたいと思います!
2015/01/23 18:51


詳細はこの辺りでもどうぞ
ttp://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+201305/13050007.txt
ちなみに実態にさほど差はないです
2015/01/07 03:42


strcpyという関数は安全ではありません(悪用や暴走の可能性があります)
代わりにstrcpy_sの使用をご検討ください
この警告を出したくない場合は_CRT_SECURE_NO_WARNINGSをご利用ください
詳細はオンライン ヘルプを参照してください
(該当する関数または変数の使用箇所?)c:\el\el.h
2015/01/07 03:41

初心者
エラー  1  error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.  c:\el\el.h  858 1

すみません超初心者のものですが・・・
こんなエラーが出るんですがどうしたらいいでしょうか?
2014/12/22 08:44


勉強になりました。とてもためになります。
ありがとうございます。
2014/12/20 16:31


swith文よりif文使ったほうがいいかも
2014/12/16 16:48


↓ プロパティシートの貼り忘れでは?
2014/11/25 11:12


よくわからないエラーでた

1>LIBCMTD.lib(crt0.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
2014/11/23 22:31


1マスずつじゃなくてスピードで動かせないかな?ドットイートゲームね
2014/11/18 21:30


もっとなめらかに動かせないの
2014/11/18 16:00


winmain二回使ったらダメって出る
2014/11/18 15:21

I♡質問攻め
switch文ってどこに入れればいいんでしょうか
2014/11/11 09:42

ster
↓それどうやるんですか?
2014/11/09 16:33

s
敵に弾を打たせてみても面白い
2014/11/06 11:28


↓swith文を使うんじゃない?
2014/11/04 17:41


メニュー画面作ったんですけどメニューの項目をクリックした後オセロのプレイ画面に飛ぶようにするにはどうしたらいいのでしょうか
2014/11/04 14:56

YOU_OK
オブジェクト指向というよりクラス化なんじゃないでしょうか…
2014/07/05 22:31

c
オセロのputPiece関数がよくわからないです
2014/06/29 20:42


連射式にしようと試みてるが全然わからない
2014/06/26 12:31


コピペしてもエラーが出るのはなぜ・・・
2014/06/15 00:44

J
むずかしいな
2014/04/10 23:35

naga3
satokさん
if (rand() % 3 == 0) {
この部分の3を大きくすると簡単になるかもです。
2014/01/12 10:35

satok
3章まで終わった。モンスターが追っかけてくるアルゴリズムが、短いコードの割に強く、まだクリアできない。
2014/01/12 10:12


なかなか上手くいきませんが勉強になります
2014/01/03 01:34

yamada
テスト
2013/11/24 19:50

naga3
コメントコメント
2013/11/12 21:22