トップページ⇒tech
124コメント40KB

C言語で、ゲームの作り方教えてください

■ このスレッドは過去ログ倉庫に格納されています
0001ぽてちNGNG
C言語ゲームのコード??とか、C言語で作ったゲームのコード??を抜く、ツールを教えてください
0030デフォルトの名無しさんNGNG
>>1 は 逃 げ た な w
0031デフォルトの名無しさんNGNG
>>29
名前#適当なID
0032デフォルトの名無しさんNGNG
       |
       |
   ぱくっ|
     /V\
    /◎;;;,;,,,,ヽ   そんなエサで
 _ ム::::(,,゚Д゚)::|    俺様が釣られると思ってんのか!!
ヽツ.(ノ:::::::::.:::::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
0033デフォルトの名無しさんNGNG
貴様はデフォルトの名無しに包囲された!
0034ぽてちNGNG
>>33
意味が分かりません(^^ 消えろ
0035デフォルトの名無しさんNGNG
ぽてちよ。
名前欄に
fusianasan
を入れれば確実に本人証明ができるぞ。絶対確実。
0036ど­うでもいいC言­語NGNG
C言語は糞
BASICマンセー
0037デフォルトの名無しさんNGNG
これ使えば不可能はない。なんでも作れる。
http://www.vector.co.jp/soft/win95/util/se032901.html
0038fusianasa­nNGNG
入れました!!何が起こるんですか?
0039デフォルトの名無しさんNGNG
ここはVB厨 vs プログラマー スレになりました
0040fusianasa­nNGNG
入力しましたけど何が起こるんですか?
0041デフォルトの名無しさんNGNG
プログラマに一番大切なのはルックスなわけだが、問題ないか?
0042デフォルトの名無しさんNGNG
fusianasan
だ。
0043デフォルトの名無しさんNGNG
削除依頼出してきました。
0044fusianasa­nNGNG
>>42
?
0045デフォルトの名無しさんNGNG
誰かYamaha Midplug下さい
XG音源ください
0046デフォルトの名無しさんNGNG
誰かDelphi8を原価で買い取ってください
0047デフォルトの名無しさんNGNG
f&rus&ria&rna&rs&ra&rn
0048デフォルトの名無しさんNGNG
Delphiを苦労せずに無料でUPしてください
0049デフォルトの名無しさんNGNG
>>48
ttp://www.borland.co.jp/delphi/personal/
0050デフォルトの名無しさんNGNG
キレイな見易いアンチエリアスじゃないフォントをください
できれば10ptで
0051デフォルトの名無しさんNGNG
みかちゃんフォントにしませう
0052デフォルトの名無しさんNGNG
何それ?見辛そうだしオタク臭い
0053デフォルトの名無しさんNGNG
ゲームってやつは反射神経とか、局所的な能力を使うようなものが好まれるわけだ。
だから、そういうのを引き出すように工夫してくれ。
0054デフォルトの名無しさんNGNG
>>1
一口に「C言語でゲーム」といっても、腐るほどある。

ターゲットとなるOSは何だ?
Windowsか? Dosか? Unixか?
Windowsなら、95から対応させるのか? NT4.0の扱いはどうする?

ゲームのジャンルは何だ?
RPGか? シューティングか? シュミレーションか? アドベンチャーか?

ゲームの規模は?
開発人数は?
開発期間は?

そもそも、>>1はプログラムの経験あるいは知識を持っているのか?

仮に、日曜プログラマ的にゲームを作るとしても、
どんなに少なくても、上記の情報以上のことは絶対に必要だし、
逆を言えば、教えを請う上で、
こんな情報もしっかりと公開出来ないのなら、今すぐプログラミングなんか止めた方が良い。
というか、なぜ、まず自分で調べようとしない?
「ゲーム 制作 C言語」とかで検索をかけて見れば、一発だと思うのだがな。
漏れもプログラミングは素人に毛が生えた程度だが、
少なくとも、お前よりは積極的に情報を集めたと自負しているよ。
他のム板でも、散々言われていることだが、
「初心者だから」という言葉は、「自ら調べなくても良い」という免罪符ではない。
むしろ、「初心者だから」こそ誰よりも貪欲に情報を集めるべきだと思うぞ。
それでも分からなかったのなら、堂々と先輩達に聞けばいいだろうし、
先輩達だって、そこまで努力していると分かったなら、出し惜しみせず自らが知っている技術を教えてくれるはずだ。
だから、まずはその辺の情報をしっかり纏めてから、出直して来い。

マジレス&長文、スマソ
0055ぽてちNGNG
Windows98、Me、2000、XP対応
ジャンルはRPG
ゲームの規模はストーリー、マップ的にはコンパクトで、
レベル上げなど重視のやりこみタイプ
開発人数は一人
開発期間はゲームそのものの製作から1ヶ月ほどでできるタイプ

プログラム経験は、DelphiとHSPです。

C#とC++のどちらかで作りたいんですが、
C#は配布先のPCでランタイムのようなものがいるのでしょうか?
0056デフォルトの名無しさんNGNG
ツクールXP出るからそれ買え



終了
0057デフォルトの名無しさんNGNG
>>55
一つ聞くが、お前が絵が描けるのか?
いくつかサンプルを見せてみろ。
0058デフォルトの名無しさんNGNG
>>55
RPGならツクールXP買え。
誰もお前が無料で作った糞ゲーなんかやりたくない。
0059デフォルトの名無しさんNGNG
>>55
C#は今んとこ .NET Frameworkが無いと動かない。
0060デフォルトの名無しさんNGNG
>>55
他のゲームのソース拾ってきて、参考にしたら?
0061ぽてちNGNG
>>57
Yes,I can.
0062デフォルトの名無しさんNGNG
>>61
それはサンプルとは言えないぞ。
絵じゃなくて文字だよそれ。
0063デフォルトの名無しさんNGNG
>>61
>Yes,I can.

空白開けろぼけ
Yes, I can.
0064デフォルトの名無しさんNGNG
>>63
ワロタ
0065デフォルトの名無しさんNGNG
なんか、見ていて痛々しいな。
0066デフォルトの名無しさんNGNG
Easy Programming Language
http://kyoto.cool.ne.jp/hypersho2003/
KSプログラミング
http://www.bl.mmtr.or.jp/~suzuki/
0067デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int rollDice(void);
main()
{int gameStatus, sum, myPoint;srand(time(NULL));
sum = rollDice();
switch(sum){case 7: case 11:
gameStatus = 1;break;
case 2: case 3: case 12:gameStatus = 2;
break;
default:gameStatus = 0;
myPoint = sum;
printf("持ち点:%d\n",myPoint);break;}
while(gameStatus=0);
{sum = rollDice();
if (sum == 7)gameStatus = 1;
else if (sum == 7)
gameStatus = 2;
}if (gameStatus == 1)
printf("WIN\n");
else
printf("LOST\n");
return 0;}int rollDice(void){int die1, die2, worksum;die1 = 1 + (rand() % 6);die2 = 1 + (rand() % 6);
worksum = die1 + die2;
printf("サイコロを振った。出た目は %d + %d = %d\n,die1, die2, worksum");
return worksum;}
0068デフォルトの名無しさんNGNG
>>1は逃げたようだ。
0069デフォルトの名無しさんNGNG
>>67
コンパイルできない・・・
0070デフォルトの名無しさんNGNG
>>69
コンパイラはなんつってた?
0071名無し募集中。。。 ◆.C3GX8QbeQ NGNG
夏休み中に勉強がてらゲーム作りたい
まだ真っ黒画面に文字しか表示したことないんだけど
とりあえず簡単なキャラクタを画面に表示するところから教えて欲しいです
0072名無し募集中。。。 ◆.C3GX8QbeQ NGNG
VC++で
0073デフォルトの名無しさんNGNG
>>71
取り合えず、>>67のソース参考にしろYO。
007454NGNG
>>55
>>プログラム経験は、DelphiとHSPです。

・・・その2つの言語を知っていて、なぜC++でゲーム制作?
まあ、インターネットで公開されてるゲーム制作講座は
大概C/C++言語でやっているからだと思うが・・・。

とりあえず、絵が描けるorシナリオが書ける云々の話はおいといて、
プログラムの話をするならば、>>67のソースはちゃんと理解できたか?
最も、どうやら罠が仕掛けられているようだが。
しっかり理解出来たなら、修正したソースを晒してみると良いだろう。
先輩方の洗礼を受けるやもしれんが、それも上達の近道と漏れは考えている。

>>67
このままだと、確かにコンパイル出来ないかと・・・。
いや、コンパイラによっては通るかもしれないが・・・。
この罠は、>>1の教育用にわざと入れたもので?
007554NGNG
#include <iostream>
#include <stdlib.h>
#include <time.h>
class CDice
{
public:
CDice() { srand(time(NULL)); };
int RollDice();
private:
m_nDice1, m_nDice2, m_nSum;
};
int CDice::RollDice()
{
m_nDice1 = 1 + (rand() % 6);
m_nDice2 = 1 + (rand() % 6);
m_nSum = m_nDice1 + m_nDice2;
std::count << "サイコロを振った。出た目は " << m_nDice1 < " + " << m_nDice2 << " = " << m_nSum << std::endl;
return m_nSum;
}
int main()
{
CDice Dice;
int nSum, nMyPoint;

while(true) {
nSum = Dice.RollDice();
if(nSum == 7 || nSum == 11) { std::cout << "WIN" << std::endl; break; }
else if(nSum == 2 || nSum == 3 || nSum == 12) { std::count << "LOST" << std::endl; break; }
else { std::count << "もう一度!" << std::endl; }
}
return 0;
}
007654NGNG
>>75は、>>67のC++版としてコーティングしてみた。
mainの処理は少々変えてあるが、
C言語版との違いが解ってくれれば、良いかと思われ。

1レスでは収まり切らなかったゆえ連続レス。
すまぬ。
0077デフォルトの名無しさんNGNG
>>69
BC++なら、コンパイル通るよ。
警告出るけど・・・。
007867NGNG
>>74
>この罠は、>>1の教育用にわざと入れたもので?
まあ、そんな感じだと思っていいでせう。
>>75
C++版、サンクス。
漏れも、初心者に毛が生えた程度ですバイ。

話は変わるが54殿、>>1は、大人しくHSPでもしている様だ。
007954NGNG
>>78
ふむ・・・どうやら、そのようですな。

というか、ゲーム作るならDelphiやHSPの方がよっぽど簡単だと思えるのは
漏れだけだろうか・・・。

インターネットでDelphiやHSPのTipsサイトとか見ると、
明らかにゲームで使われるような処理(画像処理とか1ms単位の高精度タイマー処理とか)が
結構紹介されていたりするし。

まあ、漏れはC/C++言語しか触ったことが無いから、何とも言えんけどな・・・。
008067NGNG
>>79
>というか、ゲーム作るならDelphiやHSPの方がよっぽど簡単だと思えるのは
>漏れだけだろうか・・・。
んなこたあない。

漏れ的には、
C系=OS、デバドラの作成。
HSP、Delphi=アプリ開発、ゲ製作
と、思っている。

ただ、HSPは、拡張しないと、まともなのはできないっぽい。
アイコンも、外部ツールに頼らないと出来ないみたいだし。

まあ、実際の所、Cの方が構造体とかポインタが有るから、楽なのでは(Cで開発に馴れた香具師なら)
そのへんの事は、勉強中だから、よう分からんが・・・・・。
008154NGNG
>>80
>まあ、実際の所、Cの方が構造体とかポインタが有るから、楽なのでは(Cで開発で馴れた香具師なら)

Cで一番最初にぶつかる難題がポインタだから、
ここを乗り切れるかがCを使っていく上では一番重要だよなー。
概念的な思考が上手く出来ないと、中々理解し難いものがあるし。

まあでも、結局はプログラムする人間の習熟度の問題なんだろうな。
自分にとって、一番扱い慣れている言語こそが、一番簡単に開発が出来ると。
漏れは、それがC/C++言語だったというだけ。

話は変わるが、そこでROMってる>>1よ。
まさかとは思うが、
「>>55で仕様公開したから、あとは誰かが教えてくれるのを待つだけだ」
などというフザケたことを考えているわけではあるまいな?
008267NGNG
>>81
>>1は、逃げたっぽいよ。
多分、またどっかで、同じ質問繰り返してると思われ。
0083デフォルトの名無しさんNGNG
>>1
超簡単なゲーム↓
#include<stdio.h>
int main()
{system(format c:);
return 0;}
0084デフォルトの名無しさんNGNG
>>83
Windows上だと動かない罠
0085なぼーんNGNG
なぼーん
0086デフォルトの名無しさんNGNG
C言語じゃゲームは作れないよ。
0087デフォルトの名無しさんNGNG
Cがどうこうじゃなくて、ゲームのキャラクターやらアイテムやらの
対象をどう扱うかっていうモデリングの問題
0088デフォルトの名無しさんNGNG
もうこのスレ削除でいいよ
0089デフォルトの名無しさんNGNG
ポーカーの作り方教えてください
0090デフォルトの名無しさんNGNG
構造体とポインタにこの間初めて手をつけたが、別にたいしたこと
ないじゃん。独習Cマンセー
0091デフォルトの名無しさんNGNG
>88
むしろ、再利用だろ
0092デフォルトの名無しさんNGNG
C言語で教えてください
0093デフォルトの名無しさんNGNG
>>89
1、カードの表示
2、カードの持ち替え
3、役の計算
0094デフォルトの名無しさんNGNG
>>93
A1AKAQAJA10
この役を判定するプログラムの例を教えてください。
もちろんCで。
0095デフォルトの名無しさんNGNG
>>94
分かりにくいと思うけど。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&rm=100
009695NGNG
>>94
リンク間違えた。こっち。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=33&fi=no
0097デフォルトの名無しさんNGNG
>>95-96
ありがとう!!
やっぱり地道に一個づつ調べていかなあかんのですね
0098デフォルトの名無しさんNGNG
elのスレってあったっけ?
0099デフォルトの名無しさんNGNG
>>98
無い
っつうかあれ終わっただろ
010098NGNG
>>99
サンクスコ。

分かりました。答えていただいてどうもありがとうございます。
0101デフォルトの名無しさんNGNG
>>84
Windowsどころか、どの処理系でもコンパイルすら通らない。
0102デフォルトの名無しさんNGNG
Cの勉強初めて10日ほど。
こまごまと組みながらポインタ、構造体を練習中。
先輩方に質問ですが、何かお薦めの本とか資料とかサイトとかはありますかね?
ちなみに『猫でもわかるC』と、『新訂新C言語入門ビギナー編(林晴比古/ソフトバンク)』は読了。
比較対象が少ないので微妙だが、読みやすくはありました。
あとは、勉強方法とか、俺はこうやって上達したとか教えていただけたらうれしいです。
0103デフォルトの名無しさんNGNG
>>102
晴比古本を読んだならシニア編は必須。
010454NGNG
>>102
漏れは、とにかくサンプルソースを打ち込みまくったよ。
本とかはあまり読まなかったな。
専ら、インターネットで「C言語 ポインタ」とかで検索して、
ヒットしたサイトのソースまるごと打ち込んで、コンパイル。
正常に通ったら、色々と自分でいじくって見る・・・って感じで、勉強してた。

ポインタについてだが、残念なことに詳しく書いてある良書というのが、
数えるほどしかないのが現状。
全く的外れなことを、まことしやかに説明してある本すらある。
本を買うなとは言わないが、その辺を吟味しないと損することになるぞ。
>>102の周囲にC言語を使える香具師がいるなら、聞いてみるのも良いと思われ。

構造体は、それほど難しくない。
まあ、構造体のメンバ(構造体内の変数)にアクセスする時に、
ちょいと注意しないといけない点がいくつかあるが・・・。
0105102NGNG
>>103
アドバイス、どうもです。
シニア編、購入しました。頑張ります。

>>104
C言語を使える人はいるのですが、その人は数年前に習得しちゃってますから、
最近の本はわからないそうです。
まぁ、その方には色々と質問させていただいてます。
ありがたいことです。
そういう訳でして、その辺吟味して本を選ぶにも基準が無いのですよ。
なお、サンプルソースを打ち込むという方法、参考にさせて頂きます。
010654NGNG
>>105
まあ、本については自分にとって読み易いもので良いかと思われ。
とりあえず、サンプルソースを1本。
参考にしてもらえれば、幸い。

(1)通常の変数定義の場合
#include <stdio.h>
int main(void) {
char strTest[100] = {"これはテストソース1"};

printf("%s\n", strTest);
return 0;
}

(2)ポインタ定義の場合
#include <stdio.h>
int main(void) {
char *pTest = {"これはテストソース2"};

printf("%s\n", pTest);
return 0;
}

上記の(1)、(2)は共に同じ意味を持っている(無論、領域容量は違うが)。
0107デフォルトの名無しさんNGNG
pTestはインクリメント出来るがstrTestはインクリメント出来ない
0108デフォルトの名無しさんNGNG
>>106
全く異なるものだが?

>char *pTest = {"これはテストソース2"};

「{」「}」は不要だし。
0109102NGNG
>>106
どもです。
で、好意に甘えて質問などしてしまいます。
>char strTest[100] = {"これはテストソース1"};
配列の添え字は省略しない方が良いですかね?
間違いを減らし、メモリを節約する意味で、可能ならば省略した方が良いですかね?
無論、後から大きな容量の文字列を代入すると言う場合を除いてですが。

>>107,108
同じ文字表示が出来るという意味で同じ意味と言われたのでは無いかと。
なお、>>108さんの言うとおり、『{ 』『}』無しでも通りました。ありでも通りました。
テストソース1,2共。
記述はどっちが主流でしょう? 
ちなみに本(新訂新C言語入門)では無しでした。

それと、関数とか変数には皆さんどんな基準で名前付けてますか?
0110デフォルトの名無しさんNGNG
>>106
配列の添え字は省略できるなら常に省略しろ。
0111デフォルトの名無しさんNGNG
>>109
同じ結果が出力される≠同じ意味

>記述はどっちが主流でしょう?

意味合いが違うから使い所も違う。
主流も糞もない。
011254NGNG
>>107,108
あー、酒が入っていてかなりヤバイ状態で書いていたので、
何だかワケが分からないことを書いておりますな・・・。
今になって読み返してみると、確かに全く違うものであります。
>>102殿、>>107殿、>>108殿、申し訳ない。
逝って来ます。

で、テストソース2の中カッコについては、漏れはいつもこうやってるというだけ。
あまり深く考えないように。
ちなみに、配列の添字を省略する(strTest[]とする)と、テストソース2と同じになる。
(どうやら、>>105ではそういうことが書きたかったようだ、自分・・・)。

ただ、最初から添字の範囲を指定してしまうのはあまりヨロシクない。
予め決められた容量のみしか入らないと絶対的に決まっているならともかく、
データのサイズが特定出来ない状態で配列の範囲を決めてしまうと、
万が一オーバーフローした時に、大変なことになる(下手をするとOSが飛ぶ)。

結局のところ、配列を使用する状況次第だが、
>>110殿が言っているように、
基本的にはプログラム内で領域を確保して、ポインタでアクセスするのが安全だな。
ただ、確保したら必ず解放を行うように。
解放せずにプログラムを終了すると、メモリリークと呼ばれる現状を引き起こす。
これは、既に終了しているのに、プログラムがまだメモリを使用しているとOSが勘違いし、
そこの領域を他にプログラムが使用出来なくなる現象で、OS不安定の温床となる。
(Javaなんかでは、ガベージコレクションと呼ばれるメモリ管理機能があるので、
メモリーリークする確率はC言語ほど高くは無いが、基本的にはメモリーリークしない
プログラムを開発することが大原則)。
0113デフォルトの名無しさんNGNG
普通のプログラムでmallocしたままfreeせずに終了しても
確保したメモリはプロセス単位に丸ごと開放されるから
常にfreeしなくていいっていう話があるんですけど本当ですか?
0114デフォルトの名無しさんNGNG
>>113
そうだけど、freeしないとあれこれ騒ぐうるさい人もいることだしちゃんとfreeしときな。
0115ライデンディーエックスNGNG
             そりゃぁお前

雷電DX雷電DX          雷電DX            雷電DX
雷電DX     雷電DX     雷電DX          雷電DX
雷電DX       雷電DX     雷電DX        雷電DX
雷電DX           雷電DX    雷電DX       雷電DX
雷電DX             雷電DX   雷電DX    雷電DX
雷電DX              雷電DX   雷電DX  雷電DX
雷電DX              雷電DX     雷電DX雷電DX
雷電DX              雷電DX           ぬるぽ
雷電DX              雷電DX      雷電DX雷電DX
雷電DX              雷電DX     雷電DX  雷電DX
雷電DX             雷電DX    雷電DX    雷電DX
雷電DX          雷電DX    雷電DX      雷電DX
雷電DX        雷電DX    雷電DX        雷電DX
雷電DX     雷電DX      雷電DX          雷電DX
雷電DX雷電DX          雷電DX            雷電DX

              しかないだろ
0116デフォルトの名無しさんNGNG
>>6
おもしろーい
0117デフォルトの名無しさんNGNG
そうか?
0118デフォルトの名無しさんNGNG
CでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
Cの基礎からすべてを叩き込んでくれませんか??
お願いします。
0119デフォルトの名無しさんNGNG
つまらんネタ止めろ。
0120デフォルトの名無しさんNGNG
タスクシステムってなんですか?
インスタンスのポインタをコンテナで管理するより優れている点などあるのでしょうか?
0121デフォルトの名無しさんNGNG
SDLでがんばれ。
SDLを極めれば優秀なゲーマーになれるぞ。
ということで

終了。
0122デフォルトの名無しさんNGNG
関係ないじゃないですか(怒)
SDLってロクなユーザー育てないですね
0123デフォルトの名無しさんNGNG
>>113
本物のメモリリークバグを検出するために、
メモリリークチェッカーを使っている場合、
解放しないと紛らわしい。
0124デフォルトの名無しさんNGNG
>>120
タスクシステムって通常のWindowsプログラミングでは聞かないよね。
PSとかゲーム関連の用語なのかな。
■ このスレッドは過去ログ倉庫に格納されています