C言語のゲーム
[Home]

 C言語のゲーム

 最初に

他の所でも書いているのですが、C言語を覚えるには「Hello World!」と何百回表示させても覚えられません。(少なくとも私には)
今なら私にも分かるのですが、「Hello World!」と表示させるのは、初めて小学校の門をくぐったので記念撮影をしているだけなのですが、それが日本人にはC言語を覚える第一歩なのだと錯覚をしているようです。 記念撮影などはしてもしなくても、全く関係はありません。そんなどうでも良い事から始めるので、圧倒的大多数の日本人は、幼稚園のレベルから抜け出せず、一生もがいているのでしょう。C# なら簡単に覚えられるだろうと寄り道をするのですが、C(C++)言語を覚えられない人が C#を覚えられる訳がありまません。

ゲーム画面1 私はC言語はいまだに理解できておりませんが、幸いにも幼稚園レベルからは抜け出す事が出来ました。 どうやったら幼稚園レベルから抜け出せるのかですが、俗な言い方になりますが、「習うよりは慣れろ」が最も近いだろうと思っています。

日本の教育は適当に暗記するだけでなんとかなりますが、C言語を取得するには暗記だけでは到底理解出来ません。
ひたすらC言語に浸って(没頭して)、暗記と言う意識を持たなくても頭の中に入ってくるようでなければ取得は難しいでしょう。兎に角、(私のように)出来るだけ早く幼稚園や小学校レベルを卒業できるように努力しましょう。

ここでは、 Programing Pages 様のサイトを利用させていただきました。
Johannes Wallroth さんと言うドイツのベルリンにお住まいの方ですが、C言語(Borland Turbo C++ 4.5, Microsoft Visual C++, Borland C++Builder)のプログラミングについて詳しく解説されております。

記載のプログラムは、プログラミングの解説ですので(実用性は低いですが)簡潔にまとめられており、内容を理解するのが容易です。 リンクを張るだけで良いのですが、掲載時期が古い点と、C++6 でプログラミングされておりますので、VS2005 で再コンパイルさせていただきました。
ライセンスは不明ですが、教育的な目的の掲載とお見受けしましたので、問題は無いと考えておりますが、クレームがあれば削除致します。


上記の画像は、ビットマップ画像を透過させてアニメーションを行うプログラムですが、このプログラム自体はゲームではありませんが、ゲーム作成には応用できるでしょう。
特にC言語の幼稚園レベルの方は 作者様のサイト の「learn it!」ページから bitmanim_mfc.zip をダウンロードしてコンパイルができれば、幼稚園の「ひよこ組」から「はと組」ぐらいまではレベルアップが出来ます。

どうしてもひよこ組から抜け出せない方は、私が VS2005 で再コンパイルした BitmapAnimationMFC.zip をダウンロードしていただければ、ソースと実行ファイルをダウンロードできます。 但し、私も小学校低学年のレベルですので、エラーが出る部分を平気でコメントアウトしたりしておりますので、問題が出る可能性は高いです。
以降も全て同様ですが、御使用は 自己責任 でお願い致します。 尚、サイトに掲載するために、プログラムの画面構成を変更している場合が多いです。

こちらも、同じページに記載されているアニメーションの動作画面の一部です。
ゲーム画面2

一応、私が VS2005 で再コンパイルした LineAnimationMFC.zip もダウンロードできるように致しますが、こんな物に直ぐに飛びつくようではレベルアップは出来ません。
C言語を理解するには、とにかく汗を掻かないと無理です。ゲームや基本動作は実用性がないからと軽視する方は、プログラムを組む適性が無いと言っても過言ではありません。


 Concentration Game

「C言語のゲーム」のタイトルなのにゲームが無いと騒ぐ人が、日本人の中には必ず一人や二人はおりますので、掲載致します。
上記と同じ作者様のサイトの My Programs の中の Concentration Game です。

ゲーム画面3
幼児向けのゲームですが、大人がやっても罰は当たりません。
それどころか、私のようなボケが始まった老人には向いているかも知れません。

ゲームのやり方も画像を見れば一目瞭然ですね。(分からない人も居るのかな)
実行ファイルと VS2005 用のソース一式を置いておきます。
ConcentrationGame.zip です。


 CardGame2

こちらも、同じ作者様のサイトの My Programs の中の Card Game: 1001 です。
見た感じでは本格的なカードゲームのようですが、実は私はコンパイル出来るようにしただけで、遊び方も分かりません。

ゲーム画面4
まともに動かなかったらごめんなさいの状況ですが、取り敢えず掲載をさせていただきます。
実行ファイルと VS2005 用のソース一式は、 CardGame1001.zip です。



同じ作者様の所には、パックマンなど面白そうなゲームもありますが、ファイルが不足してコンパイルできませんでした。
時間が取れればファイルを探してみますが、ゲーム供給サイトではありませんので、これっきりになるかも知れません。


 DirectXを使ったゲーム

C言語で作成したパックマンゲームを探しておりましたら、 ポンクソフト(PonkSoft) と言うサイトが見つかりました。
そのサイトでは、色々なゲームソフトの作り方の解説をされているのですが、その中に 「パックマン的ゲーム」というゲームソフトがあって、パックマンもどきのゲームを作成する事が出来ます。 このページには、C++6 で作成したプロジェクトファイル(pacman.zip)も置いてありますので、C言語を使った事のある方ならコンパイルが出来るのですが、ちょっと特殊なライブラリィを使用しておりますので、初心者にはコンパイルが難しいかも知れません。

ゲーム画面5
例によって、実行ファイルとVS2005 で再コンパイルした pacman2005.zip も置いておきますが、作者様からクレームがあった場合は削除します。

クレームが無くても著作権侵害だろうと騒ぐ日本人もおるでしょうが、どうしましょうか。 いずれにしても、このゲームページの内容は、作者様のサイトでは「旧コンテンツ」扱いで、今時に使用される方は時代に取り残されている(私のような)方だけでしょう。
作者様は、現在は「DXライブラリ」の使用をメインにされているようです。

それから、このゲームは DirectX を使用しておりますので、私は Microsoft DirectX SDK (February 2010) をインストールしております。
御提供のソースは、その前提で作成しておりますので、異なる環境の場合は修正する必要があります。
そのため、幼稚園「ひよこ組」の方には、コンパイルは無理かも知れません。


 オセロゲーム

オセロゲームもコンピュータゲームの定番で、それこそ数えきれない程の制作例がサイト上に溢れております。
この作者様も オセロの作成 として解説されております。

ゲーム画面6
「オセロゲーム」と銘打っておりましたが、オセロの盤も変でしたし、オセロの駒も兎の絵なので変だなとは思いましが、コンパイルして動かしてみましたら、理由が分かりました。 コンピュータ側が弱すぎてゲームになりません。

考えてみれば、このサイトはゲームの造り方の解説をされておられるので、ゲームとしての実用性は追及されておりません。 「将棋」でもそうですが、人間と互角に戦えるレベルのゲームに仕上げるには、数行のプログラムで出来る訳がなく、数万行のプログラムになるのは常識です。

従って、このゲームが楽しめるのは、幼稚園から小学校の2,3年生ぐらいまでがせいぜいでしょう。 小学校の高学年になっても勝てないようであれば、知能の発育が心配になるぐらいですが、そんな方は皆無に近いゲームのレベルだと思います。

高度な思考を持つオセロのプログラムの解説も数多くありますので、それを取り入れようと思いましたが、私は数日で作成できるようなレベルではありませんので、そのままの状態で掲載します。
せめて外観だけでもオセロゲームらしくしたいと思って、画面を少し大きくして、盤と駒を本物らしいように変更致しました。

例によって、実行ファイルとVS2005 で再コンパイルした othello.zip も置いておきます。 強力な思考エンジンを搭載して、どんなに頑張っても勝てないオセロに仕上げてください。



 15puzzle

15パズルも、サイト上では数多く見かけるゲームです。
この作者様のサイトにも 15パズルのゲーム がありましたが、全体に画像を表示させるプログラムでしたので、一般的な15までの数字を表示させるタイプにしました。

ゲーム画面7
15パズルには、並べ替えが出来ない組み合わせもあるので、ランダムに数字を配置することは出来ないようです。
それから、 15パズルを解くプログラム を作成されておられる方も居て、試してみたら1秒も掛からないで解法が導きだされました。 中には探索に3時間以上掛かる配置もあるそうですが、普通は数秒で解析できるようです。
それと、最長手数の組み合わせは80手なのが証明されているそうです。

例によって、実行ファイルとVS2005 で再コンパイルした 15puzzle.zip も置いておきます。
人様が作成したプログラムばかり掲載していても、自分の実にならないので、似たような「箱入り娘」ゲームを作成したいと思ったのですが、私のレベルでは難しいです。


[Home]