最近、ゲームがどのようにプログラムされているのかきになるようになりました。
そこで、C++ のソースコード付 2D(出来ればマリオやゼルダ風のアドベンチャー)ゲームを探しています。自分で探してもなかなか見つからないので、お勧めのがある方よろしくお願いします。

なければ、2Dゲームのアルゴリズムを説明しているサイトなどがありましたらURLの方よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

本を買われた方が早いです。

「アクションゲームアルゴリズムマニアックス」
http://cgi32.plala.or.jp/higpen/book/action/acti …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフランス語のsouについて

フランス語のsouについて、英語での解説です。

Un sou is an ancient French coin, which no longer exists. Interstingly, the Latin root of sou ― solidus ― is the same word that gave the English their “solidi” in the predecimal currency system (£.s.d). Today, le sou is used in familiar langauge to mean “money”. Il est pres de ses sous.― He is close to his money(i.e. miserly). Je n'ai pas un sou.― I haven't a penny.
Another way of saying je ne sais pas un sou would be je suis fauche, meaning “I'm broke”(from the verb faucher, to reap).

そこで質問です。

(1)ラテン語のsolidusの元の意味は何でしょう?
(2)英語のsolidiはどのくらい昔に使われていたんでしょうか? また、predecimal currency systemとはどんな数え方をしていたんでしょうか?
(3)英語で"be close to one's money"という表現は一般的なんでしょうか?
(4)brokeというのは breakから派生していると思うんですが、breakの過去分詞はbrokenですよね。それとも breakとは無関係なんでしょうか?

フランス語のsouについて、英語での解説です。

Un sou is an ancient French coin, which no longer exists. Interstingly, the Latin root of sou ― solidus ― is the same word that gave the English their “solidi” in the predecimal currency system (£.s.d). Today, le sou is used in familiar langauge to mean “money”. Il est pres de ses sous.― He is close to his money(i.e. miserly). Je n'ai pas un sou.― I haven't a penny.
Another way of saying je ne sais pas un sou would be je sui...続きを読む

Aベストアンサー

(1)金貨
(2)英語の、という意味がわかりませんが、ソリディ通貨は14世紀からフランス革命前、細かくは1793年の10進法度量衡採用までじゃないでしょうか。
predecimal currency systemは、12進法です。重量の計測法です。ただし、国や時代によって釣り合う重さの単位は違うようです。
1solidus =12denarii  
(3)それは、フランス語で、けちという意味です。英訳はあくまで字並びどおりに訳してみせただけと思われます。
(4)breakの古語の過去分詞ですね。意味は「文無し」、
フランス語の部分、「文無し」は je ne sais pas un sou ではなく、je n'ai pas un sou でしょうね。なぜ違って書かれているのか理由がわかりませんが。

Qゲームプログラミングのアルゴリズムについて

今ゲームプログラミングで画面のスクロールを勉強しているのですが、
なかなか理解が出来ません。このアルゴリズムに関して具体的な理屈を説明できる方がいれば教えていただきたいです

Aベストアンサー

ゲームに特化したアルゴリズム集として「改定第2版ゲームプログラミング『遊びのレシピ』」をお勧めします。
(ISBN 4-7973-1653-5)
DirectXのバージョンが古かったり、VisualC++じゃ無くてBorland C++Builder&Delphiをターゲット環境にしていたりで「そのまま使える」というわけじゃないんですけど、「ゲームでよく使うアルゴリズム」と「アルゴリズムの実装方法」が解説されています。

参考URL:http://www.cmagazine.jp/books/recipe/

Qフランス語 en と sous 

前置詞の勉強をしてます。

1.La plupart des economistes ont passe le phenomene de l'inflation (sous) silence.

2.Nous regardions les tableaux (en) silence.

1. sous silence 言及しない
2. en silence  無言で

上記の2つの例の使い分けがはっきりしません。
例題1の場合は (en) silence でも正解なのではないでしょうか?

Aベストアンサー

passer qch sous silence「~を見逃す・に気づかない・を黙殺する」という成句をなすので sous を他のものに変えることはできません。*passer qch en silence「無言で~を passer する」とは考えられないかと思うかもしれませんが、今度は「インフレの現象を」と上手く結びつく passer の意味が見つかりません。

sous silence はほぼこの成句だけで使われると言ってもよく、成句というものは文法的にどうのというより変えられないものと考えてください。類例:réduire/ condamner qn au silence「(人)の発言を封じる」au silence もこの成句だけです。

en silence も成句ですがこの2語だけなのでいろいろなところで使えます。

QC,C++未経験でcocos2d-xをやってみたのですがどうもコードの意味を理解できません、そこで

C,C++未経験でcocos2d-xをやってみたのですがどうもコードの意味を理解できません、
そこでcの絵本を買ってみました、その後c++の書籍を買って勉強したいのですがc++の絵本のような簡単なものではなく独習c++程の知識が必要なのでしょうか?
また独習c++を読むのにcの絵本の知識で足りるのでしょうか?
Javaもやってます、
文法はほぼわかります

Aベストアンサー

絵本シリーズ、独習シリーズは、中級者向けの本です。
「やさしいC++」などの入門書をしっかり読み直しましょう。
単にコードの意味が分からないのなら、インターネットで検索しましょう。
アマゾンには読者の書評も載っているので読んでみましょう。

QAulnay-sous-BoisとGerard Gaudronの読み方、訳し方。フランス語?

こんばんは。
タイトル通りですが、「Aulnay-sous-Bois」と「Gerard Gaudron」の読み方、訳し方を教えて下さい。いちよ英字新聞に載っていたのですが、フランス語?だと思うんです。「Gerard Gaudron」=「ジェラルドさん」というのは分かりますが、苗字が読めません・・・。フランス名ですか?
「Gerard Gaudron」さんは「Aulnay-sous-Bois」の市長だと思います。

よろしくお願いしますm(_ _)m

Aベストアンサー

これらは地名と人名ですので、訳をしません。

Aulnay-sous-Bois オルネー・スー・ボワ
Gerard Gaudron ジェラール・ゴードロン

英字新聞を読んでないので分かりませんが、先のフランスでの暴動の際に、この市長が何か発言をしたのでしょうね。フランス語では末尾の子音は例外を除いては発音をしないので、「ジェラルド」ではなく「ジェラール」となります。

Qゲームのアルゴリズム

VC++.net(DirectX)でゲームを格闘ゲームを制作しようとしています。
一つ判らない事があり悩んでおります。
格闘ゲームの敵キャラ(CPU)の動きは、どのようにしてコードを書いているのでしょうか?
思い浮かんだのが、いくつかのパターンを持たせる…?
だったのですが、コードレベルでどう書けば良いのか判らなくて・・・

知っている方いましたらご教授お願い致します。

Aベストアンサー

AIについてですね。

やり方ということであれば方法はたくさんあります。
ゲームAIに特化した書籍も多く出版されていますので、そういった書籍を読んでみるとよいとおもいます。

コードレベルでどう書けばよいかわからないということは、どういう行動をさせたいかが具体的に見えていない状態であるとおもいます。

質問者さんが言っているようにパターンを持たせて特定の条件下に発動させるという方法もあります。

格闘ゲームであれば、できる行動というのは決まっている(限られている)はずです。
例えば、弱攻撃・強攻撃・ジャンプ・移動・ガードなど。

まず攻撃に関しては、パターンによる方法であれば、
複数ある攻撃をどうつなげたら有効かということからいくつかパターンをつくる。
そのパターンがどういう状況下で発動したら有効か(どういう条件で発動させたいか)を考える。

例えばPCとの距離が一定以内になった場合、一定確率で弱攻撃をだす。
弱攻撃がヒットした場合は、弱→弱→強など弱から続くパターンを再生させる。
2回目の攻撃があたらなかったらその場でやめ、ガード含めて一応あたったら続けるなど。

初めからパターンで定義されているものを行うようにするというのも方法のひとつでしょう。

質問者さんは、コードレベルでの実装方法で躓いているわけではなく、AI(COMキャラ)がどういう風に行動してほしいか、どう反応して欲しいかなど、どういう思考をさせたいかというところがまだ決まっていないようにおもいます。

自分ならどういう風に行動させる(操作する)かとか、どういうときにガードしたい(させたい)かなどAIの具体的な行動を考えてみてください、
そして、その行動が連続行動(弱→弱→強とか)など連続する行動であるなら、どういう条件なら続け、どういう条件になったら中断するかなどを考えてみてください。
そしてそれらの行動がどういう条件のときに発動したらよいのかを考えてみてください。

ウマくいけば無限ともいえるほど行動を思いつくかもしれません。
其の中から有効性が高いものを検討し、どれを実際に実装するかの取捨選択をし、どれを行うかとか発生確率などの優先順位をつけてみてください。

それらが具体的に決まれば、どのようにコードレベルで実装すればよいかはいろいろとアイデアが浮かぶとおもいます。

どのようにコードを書くかというのは、どのような行動をさせるか、どのように思考させるかが決まっていれば、ある程度は必然的にどのようにコードを書いたら実現できるかというふうに絞り込まれてきます。

ある程度経験をつめば、どのような仕組みで思考するようにコードを書いておけば汎用性が高いかというのが解るようになるでしょう。

AIについてですね。

やり方ということであれば方法はたくさんあります。
ゲームAIに特化した書籍も多く出版されていますので、そういった書籍を読んでみるとよいとおもいます。

コードレベルでどう書けばよいかわからないということは、どういう行動をさせたいかが具体的に見えていない状態であるとおもいます。

質問者さんが言っているようにパターンを持たせて特定の条件下に発動させるという方法もあります。

格闘ゲームであれば、できる行動というのは決まっている(限られている)はずです。
...続きを読む

Qフランス語の「Sous-titres」の表記について

お世話になります。
フランス語はまったくわかりませんので、質問させてください。
ネット翻訳によると、フランス語で字幕は「Sous-titres」と言うようですが、
これを、翻訳文の文頭や文末に(s-t)、(st)、(-st)などと書いてしまっても一般的に通じるのでしょうか。
おそらく通じないと思いますが、念のためご回答いただければと思います。

Aベストアンサー

通じないです。誰もがわかる略記はリストにまとめられております。
映画会社だとか、番組制作会社だとかの身内で
メモになさるのでしたら、かまわないと思いますが。

Q教えて下さい。C言語printf("%d-%dは%dです。")でのコンパイル結果について

はじめまして。最近趣味でプログラムを始めました。

参考書を見ながら、printfを使って「3-2は1です。」と表示しようとしました。
見ながら打ち込んで行ったのですが、

printf("%d-%dは%dです。", 3, 2, 3-2 ); を
printf("%d-%dは%dです。")のまま、コンパイルしてしまったのですが
計算結果は
「1638280-4198563は1です。」との結果がでました。
これは何が表示されたのでしょうか?

「%d-%dは%dです。」と同じ書式設定の物を打ち込んでいるのになぜ違う
数字の羅列が出たのでしょうか?

参考書のプログラムは下記の通りでした。
#include <stdio.h>

int main(void)
{
printf("%d-%dは%dです。", 3, 2, 3-2 );
return 0;
}

どうぞご回答よろしくお願いします。

Aベストアンサー

ちょっと専門的な話になります。

関数を呼び出すとき、内部では
引数1: XXXX
引数2: YYYY
引数3: ZZZZ
....
という引数を渡すための領域を用意して、関数を呼び出します。
関数側では、この領域から引数を得ます。
int func(int a,int b)
という関数だったら、引数は2個なので
z=func(101,102)
とあったら
引数1: 101
引数2: 102
という領域を用意して、関数側では
a←引数1(101)
b←引数2(102)
となります。


ところが、printf の様に引数の数が一定でない関数の場合、引数がいくつ渡されたかが「わかりません」
というのがC言語の仕様です。

引数の数は、何か別の方法で知らせる必要があります。
 引数に「引数の数」を入れる
  func( 3,101,102,103) /* 最初の3は引数の数 */
 特定の引数を「これが最後」という意味に使う
  func( 101,102,103, -1) /* -1 が来たら終わり */

printfの場合は、「書式文字列を解析する」ことで、必要な引数を知ります。

printf("%d-%dは%dです。", 3, 2, 3-2 );
だと
引数1: "%d-%dは%dです。" (へのポインタ)
引数2: 3
引数3: 2
引数4: 1 (3-2の計算は、関数に渡す前に計算される)
となります。

このとき、printf側では
・引数1の書式文字列を得る
・書式文字列を解析する
 → %d が3つあるから、 intが3つ必要
・1つ目のintとして 引数2 を得る
・2つ目のintとして 引数3 を得る
・3つ目のintとして 引数4 を得る
と動作します。

では
printf("%d-%dは%dです。" );
だとどうなるか?

引数1: "%d-%dは%dです。" (へのポインタ)
はいいでしょう。
このとき、printf側では
・引数1の書式文字列を得る
・書式文字列を解析する
 → %d が3つあるから、 intが3つ必要
・1つ目のintとして 引数2(!?) を得る
・2つ目のintとして 引数3(!?) を得る
・3つ目のintとして 引数4(!?) を得る
と動作します。

引数2、3、4は用意されていないのに、そこから値を得ています。
用意されていない領域でも、アクセスしようとしたらエラーにならずにアクセスできる。
これもC言語の特徴です。
/* その領域がOSの保護領域等の場合は、エラーになることがあります。
 ただ、これは、OSが発生させるエラーであって、C言語としてのエラーではありません */

このとき、引数2、3、4には何が入っているかわかりません(不定)
前に別な関数を使ったときの残りかもしれないし、何かの変数が使っている領域かもしれません。
今回はたまたま
引数2: 1638280
引数3: 4198563
引数4: 1 (これはたまたま1だった、というだけで、3-2が入っていたわけではない)
だった、ということです。

これを完全に防ぐ方法は「ありません」。
プログラマが気をつける以外に方法はありません。
一部Cコンパイラには、書式文字列と引数の数を比較して、数や型に不一致があると「警告」を出すものもあります。
/* gcc に -Wall オプションを付けるとか */
ですが、これも printf(s,1,2,3) 等と変数を使われたら対応できません。



余談ですが。
printf("%d-%dは%dです。", 3.0, 2.0, 3.0-2.0 );
も期待する出力にはならないでしょう。
実は、数だけではなく、引数の型もわかりません。
そのため、%d→int と決め付けて値を得ます。
このとき 3.0→3と変換されるのではなく、「 3.0の内部のビット表現→それと同じビット表現のint 」と変換されるため、「3」とはまったく別の値になります。

ちょっと専門的な話になります。

関数を呼び出すとき、内部では
引数1: XXXX
引数2: YYYY
引数3: ZZZZ
....
という引数を渡すための領域を用意して、関数を呼び出します。
関数側では、この領域から引数を得ます。
int func(int a,int b)
という関数だったら、引数は2個なので
z=func(101,102)
とあったら
引数1: 101
引数2: 102
という領域を用意して、関数側では
a←引数1(101)
b←引数2(102)
となります。


ところが、printf の様に引数の数が一定でない関数の場合、引数がいくつ渡されたかが「わかりません」...続きを読む

QIEでのITMLソースの表示について

エクセルVBAでIEを操作したいのですが、URLにアクセスして、何もいじらず、メニューバーの

「表示→ソース」で表示されるソースと、
「右クリック→ソースの表示」で表示されるソースが別の場合があるのですが、なぜでしょうか?
フレームが3つあるのですが、最初の「表示→ソース」だと、表のフレームのソースを表示しているのでしょうか?

Aベストアンサー

フレームを利用しているページの場合

「表示→ソース」で表示されるソース=ページのソース
(URLに表示されたWEBページのソース)

「右クリック→ソースの表示」で表示されるソース=フレームのソース
(右クリックされたフレームのソース)

になります

QVisual C++ 2008 Express EditionとVisual c++.net standard version 2003

私は大学生なのですが、最近大学のPCでMicrosoft Visual C++ 2008 Express Editionを使って自分なりに真面目にプログラムに取り組むようになりました。
そんな中、家の中の引き出しを整理していると、数年前に興味本位で購入したVisual c++.net standard version 2003が見つかりました。当時はちょっといじっただけでほとんど放置状態でした。

そこで詳しい方にお伺いしたいのですが、『Microsoft Visual C++ 2008 Express Edition』と『Visual c++.net standard version 2003』、これからはどちらを使ってプログラムを組んでいく方が良いと思われますか?幾つかサイトで調べてみましたが、イマイチ違いが分かりませんでした。

恐らくプログラムの目的によって変わってくるとは思いますが、その辺りも含めて御教え頂けたら…(こういうことするならこっち、特に何も制限がないならこちらを勧める、など)
ちなみに今の所、Microsoft Visual C++ 2008 Express Editionで不便に思ったことはありません。

私は大学生なのですが、最近大学のPCでMicrosoft Visual C++ 2008 Express Editionを使って自分なりに真面目にプログラムに取り組むようになりました。
そんな中、家の中の引き出しを整理していると、数年前に興味本位で購入したVisual c++.net standard version 2003が見つかりました。当時はちょっといじっただけでほとんど放置状態でした。

そこで詳しい方にお伺いしたいのですが、『Microsoft Visual C++ 2008 Express Edition』と『Visual c++.net standard version 2003』、これからはどちらを使ってプ...続きを読む

Aベストアンサー

2003と2008の違いは大学生が趣味か学業のためにやる程度であれば差がないと思います.

2003から2008への変更点ですが,
・Vista対応
・64ビットCPUへの対応
・.NetFramework 3.5に対応
・コンパイラの最適化精度が上がっている

ExpressEditionは,使用用途や製品版と比べてWindows SDKなどが省かれています.


人気Q&Aランキング