ポンクソフト

C言語とelで様々なゲームを作ろう

C言語とelで様々なゲームを作ろう TOP 次ページ

目次

  1. C言語とelで様々なゲームを作ろう
  2. Visual C++ .NET での設定
  3. テンプレートファイルの解説
  4. シューティングゲームの作成(チュートリアル)
  5. パックマン的ゲームの作成(チュートリアル)
  6. ブロック崩しの作成
  7. 15パズルの作成
  8. 横スクロールジャンピングゲームの作成
  9. オセロの作成
  10. 神経衰弱の作成
  11. 7ならべの作成
  12. テトリスの作成
  13. ぷよぷよの作成

はじめに

対象

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

この講座の目的

C言語と Easy Link Library による様々なゲーム作りを通してゲームプログラミングの手法を学ぶ。

用意するもの

C/C++コンパイラ

この講座では Visual C++ 6.0 で開発することを前提とします。その他のコンパイラの場合は適宜読み替えてください。

DirectX SDK

ゲームを開発するための基本となる開発キットです。
雑誌のCD-ROMなどから入手するか、http://www.microsoft.com/japan/developer/directx/downloads.asp からダウンロードして入手してください。Visual C++ にも添付されていますが、古いバージョンなのでなるべく新しいものを入手してください。DirectX7 SDK 以降を推奨します。

Easy Link Library

DirectXは高度な処理ができる反面、初心者には敷居が高いものです。そこで、DirectX の機能を簡単に扱えるようにしたゲームライブラリが Botcy さん作の Easy Link Library です。閉鎖されたようなので、自サイトからダウンロードできるようにしました。

最初のセットアップ

Visual C++ .NET の場合はこちらを参照してください。

Easy Link Library のセットアップ

Botcy World さんから el本体(EL.LZH) をダウンロードし、適当なディレクトリに解凍します。

DirectX のセットアップ

まず DirectX をインストールしてください。
ランタイムの選択では、Debug を選択すると開発中のデバッグが容易になります。ただし速度が落ちるので、必要のない人は Retail を選択してください。インストール後に切り替えることもできます。

Visual C++ の設定

Visual C++ を起動し、メニューの「ツール」→「オプション」から「ディレクトリ」タブを選び、「表示するディレクトリ」の項目を「インクルードファイル」にします。新規作成アイコン(点線に光)をクリックし、右に「...」のアイコンが現れたらそれをクリックします。するとフォルダ選択画面になるので、el.h をコピーした場所を選択します。
↓D:\Src\el に Easy Link Library をコピーした場合
option_dir.gif

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

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

新規プロジェクトの生成

メニューの「ファイル」→「新規作成」より「プロジェクト」タブを選び、「Win32 Application」を選択します。プロジェクト名にゲームの名前(半角英数字)を入力し(下図の例では「game1」)、OKを押します。次に、「空のプロジェクト」を選択して終了ボタンを押します。
new_project.gif

DirectX ライブラリをプロジェクトに追加する

メニューの「プロジェクト」→「設定」より「リンク」タブをクリックし、「オブジェクト/ライブラリモジュール」の先頭に「winmm.lib ddraw.lib dsound.lib」の3つのライブラリを追加し、OKを押します。
project_link.gif

ソースファイルの作成

メニューの「ファイル」→「新規作成」から「ファイル」タブを選び、「C++ソースファイル」を選択します。「プロジェクトに追加」がチェックされていなければチェックし、適当なファイル名をつけ、OKを押します。
el ソースのひな型となるファイルがこちら (template.cpp) にあるので新規作成したソースファイルに内容をコピーする。

テスト実行

コンパイル・実行してみて、エラーが出ないことを確認する。
C言語とelで様々なゲームを作ろう TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

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

お名前:


何度やってもできないー^^
ファイルが見つかりませんとなるのですが・・・
どうすれば?
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/11/02 13:14


背景を挿入したいのですが,どこにどんな風にプログラムを加えればいいのでしょうか?
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