C言語で、ゲームの作り方教えてください
■ このスレッドは過去ログ倉庫に格納されています
0001ぽてち
NGNG007554
NGNG#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;
}
007654
NGNGmainの処理は少々変えてあるが、
C言語版との違いが解ってくれれば、良いかと思われ。
1レスでは収まり切らなかったゆえ連続レス。
すまぬ。
0077デフォルトの名無しさん
NGNGBC++なら、コンパイル通るよ。
警告出るけど・・・。
007867
NGNG>この罠は、>>1の教育用にわざと入れたもので?
まあ、そんな感じだと思っていいでせう。
>>75
C++版、サンクス。
漏れも、初心者に毛が生えた程度ですバイ。
話は変わるが54殿、>>1は、大人しくHSPでもしている様だ。
007954
NGNGふむ・・・どうやら、そのようですな。
というか、ゲーム作るならDelphiやHSPの方がよっぽど簡単だと思えるのは
漏れだけだろうか・・・。
インターネットでDelphiやHSPのTipsサイトとか見ると、
明らかにゲームで使われるような処理(画像処理とか1ms単位の高精度タイマー処理とか)が
結構紹介されていたりするし。
まあ、漏れはC/C++言語しか触ったことが無いから、何とも言えんけどな・・・。
008067
NGNG>というか、ゲーム作るならDelphiやHSPの方がよっぽど簡単だと思えるのは
>漏れだけだろうか・・・。
んなこたあない。
漏れ的には、
C系=OS、デバドラの作成。
HSP、Delphi=アプリ開発、ゲ製作
と、思っている。
ただ、HSPは、拡張しないと、まともなのはできないっぽい。
アイコンも、外部ツールに頼らないと出来ないみたいだし。
まあ、実際の所、Cの方が構造体とかポインタが有るから、楽なのでは(Cで開発に馴れた香具師なら)
そのへんの事は、勉強中だから、よう分からんが・・・・・。
008154
NGNG>まあ、実際の所、Cの方が構造体とかポインタが有るから、楽なのでは(Cで開発で馴れた香具師なら)
Cで一番最初にぶつかる難題がポインタだから、
ここを乗り切れるかがCを使っていく上では一番重要だよなー。
概念的な思考が上手く出来ないと、中々理解し難いものがあるし。
まあでも、結局はプログラムする人間の習熟度の問題なんだろうな。
自分にとって、一番扱い慣れている言語こそが、一番簡単に開発が出来ると。
漏れは、それがC/C++言語だったというだけ。
話は変わるが、そこでROMってる>>1よ。
まさかとは思うが、
「>>55で仕様公開したから、あとは誰かが教えてくれるのを待つだけだ」
などというフザケたことを考えているわけではあるまいな?
0083デフォルトの名無しさん
NGNG超簡単なゲーム↓
#include<stdio.h>
int main()
{system(format c:);
return 0;}
0084デフォルトの名無しさん
NGNGWindows上だと動かない罠
0085なぼーん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG対象をどう扱うかっていうモデリングの問題
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNGないじゃん。独習Cマンセー
0091デフォルトの名無しさん
NGNGむしろ、再利用だろ
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG1、カードの表示
2、カードの持ち替え
3、役の計算
0094デフォルトの名無しさん
NGNGA1AKAQAJA10
この役を判定するプログラムの例を教えてください。
もちろんCで。
0095デフォルトの名無しさん
NGNG分かりにくいと思うけど。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&rm=100
009695
NGNGリンク間違えた。こっち。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=33&fi=no
0097デフォルトの名無しさん
NGNGありがとう!!
やっぱり地道に一個づつ調べていかなあかんのですね
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG無い
っつうかあれ終わっただろ
010098
NGNGサンクスコ。
分かりました。答えていただいてどうもありがとうございます。
0101デフォルトの名無しさん
NGNGWindowsどころか、どの処理系でもコンパイルすら通らない。
0102デフォルトの名無しさん
NGNGこまごまと組みながらポインタ、構造体を練習中。
先輩方に質問ですが、何かお薦めの本とか資料とかサイトとかはありますかね?
ちなみに『猫でもわかるC』と、『新訂新C言語入門ビギナー編(林晴比古/ソフトバンク)』は読了。
比較対象が少ないので微妙だが、読みやすくはありました。
あとは、勉強方法とか、俺はこうやって上達したとか教えていただけたらうれしいです。
0103デフォルトの名無しさん
NGNG晴比古本を読んだならシニア編は必須。
010454
NGNG漏れは、とにかくサンプルソースを打ち込みまくったよ。
本とかはあまり読まなかったな。
専ら、インターネットで「C言語 ポインタ」とかで検索して、
ヒットしたサイトのソースまるごと打ち込んで、コンパイル。
正常に通ったら、色々と自分でいじくって見る・・・って感じで、勉強してた。
ポインタについてだが、残念なことに詳しく書いてある良書というのが、
数えるほどしかないのが現状。
全く的外れなことを、まことしやかに説明してある本すらある。
本を買うなとは言わないが、その辺を吟味しないと損することになるぞ。
>>102の周囲にC言語を使える香具師がいるなら、聞いてみるのも良いと思われ。
構造体は、それほど難しくない。
まあ、構造体のメンバ(構造体内の変数)にアクセスする時に、
ちょいと注意しないといけない点がいくつかあるが・・・。
0105102
NGNGアドバイス、どうもです。
シニア編、購入しました。頑張ります。
>>104
C言語を使える人はいるのですが、その人は数年前に習得しちゃってますから、
最近の本はわからないそうです。
まぁ、その方には色々と質問させていただいてます。
ありがたいことです。
そういう訳でして、その辺吟味して本を選ぶにも基準が無いのですよ。
なお、サンプルソースを打ち込むという方法、参考にさせて頂きます。
010654
NGNGまあ、本については自分にとって読み易いもので良いかと思われ。
とりあえず、サンプルソースを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デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG全く異なるものだが?
>char *pTest = {"これはテストソース2"};
「{」「}」は不要だし。
0109102
NGNGどもです。
で、好意に甘えて質問などしてしまいます。
>char strTest[100] = {"これはテストソース1"};
配列の添え字は省略しない方が良いですかね?
間違いを減らし、メモリを節約する意味で、可能ならば省略した方が良いですかね?
無論、後から大きな容量の文字列を代入すると言う場合を除いてですが。
>>107,108
同じ文字表示が出来るという意味で同じ意味と言われたのでは無いかと。
なお、>>108さんの言うとおり、『{ 』『}』無しでも通りました。ありでも通りました。
テストソース1,2共。
記述はどっちが主流でしょう?
ちなみに本(新訂新C言語入門)では無しでした。
それと、関数とか変数には皆さんどんな基準で名前付けてますか?
0110デフォルトの名無しさん
NGNG配列の添え字は省略できるなら常に省略しろ。
0111デフォルトの名無しさん
NGNG同じ結果が出力される≠同じ意味
>記述はどっちが主流でしょう?
意味合いが違うから使い所も違う。
主流も糞もない。
011254
NGNGあー、酒が入っていてかなりヤバイ状態で書いていたので、
何だかワケが分からないことを書いておりますな・・・。
今になって読み返してみると、確かに全く違うものであります。
>>102殿、>>107殿、>>108殿、申し訳ない。
逝って来ます。
で、テストソース2の中カッコについては、漏れはいつもこうやってるというだけ。
あまり深く考えないように。
ちなみに、配列の添字を省略する(strTest[]とする)と、テストソース2と同じになる。
(どうやら、>>105ではそういうことが書きたかったようだ、自分・・・)。
ただ、最初から添字の範囲を指定してしまうのはあまりヨロシクない。
予め決められた容量のみしか入らないと絶対的に決まっているならともかく、
データのサイズが特定出来ない状態で配列の範囲を決めてしまうと、
万が一オーバーフローした時に、大変なことになる(下手をするとOSが飛ぶ)。
結局のところ、配列を使用する状況次第だが、
>>110殿が言っているように、
基本的にはプログラム内で領域を確保して、ポインタでアクセスするのが安全だな。
ただ、確保したら必ず解放を行うように。
解放せずにプログラムを終了すると、メモリリークと呼ばれる現状を引き起こす。
これは、既に終了しているのに、プログラムがまだメモリを使用しているとOSが勘違いし、
そこの領域を他にプログラムが使用出来なくなる現象で、OS不安定の温床となる。
(Javaなんかでは、ガベージコレクションと呼ばれるメモリ管理機能があるので、
メモリーリークする確率はC言語ほど高くは無いが、基本的にはメモリーリークしない
プログラムを開発することが大原則)。
0113デフォルトの名無しさん
NGNG確保したメモリはプロセス単位に丸ごと開放されるから
常にfreeしなくていいっていう話があるんですけど本当ですか?
0114デフォルトの名無しさん
NGNGそうだけど、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おもしろーい
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGでもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
Cの基礎からすべてを叩き込んでくれませんか??
お願いします。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGインスタンスのポインタをコンテナで管理するより優れている点などあるのでしょうか?
0121デフォルトの名無しさん
NGNGSDLを極めれば優秀なゲーマーになれるぞ。
ということで
終了。
0122デフォルトの名無しさん
NGNGSDLってロクなユーザー育てないですね
0123デフォルトの名無しさん
NGNG本物のメモリリークバグを検出するために、
メモリリークチェッカーを使っている場合、
解放しないと紛らわしい。
0124デフォルトの名無しさん
NGNGタスクシステムって通常のWindowsプログラミングでは聞かないよね。
PSとかゲーム関連の用語なのかな。
■ このスレッドは過去ログ倉庫に格納されています