今日から必死で1から全て学んでゲーム作成します
■ このスレッドは過去ログ倉庫に格納されています
0001松田 ◆cobo4pcvHY
03/02/06 21:28ID:+Sp/g0d7言語の難しさから逃げていては駄目だ!お前はゲームを作りたいのだろ!?
という悟りを開き、今日からプログラム言語を覚え、そして
プログラムツールで作ります!今持ってるものは・・・。
6才年下の弟の持ってる技術(厨2)の教科書。
アクティブベーシック。(vectorより入手)
・・・作れるのだろうか!?もちろん古本屋で買いあさってくるが
(作れ次第、いずれうpします・・・。いつまでかか(ry))
0820名前は開発中のものです。
03/08/13 13:08ID:uaCfrcx30821名前は開発中のものです。
03/08/13 14:31ID:X8v9vu4U0822名前は開発中のものです。
03/08/13 15:05ID:dYK/yQDiボーランドのフリーコンパイラでも使ってみなさい。
無駄な出費になるやもしれんし。
0823名前は開発中のものです。
03/08/14 09:11ID:jQ1mC7W5エンタープライズ版を買った。
0824名前は開発中のものです。
03/08/14 09:31ID:ARy9MgF00825名前は開発中のものです。
03/08/14 10:34ID:t4c+MZZr守だな。
0826山崎 渉
03/08/15 07:58ID:Q998ZG7G│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0827名前は開発中のものです。
03/08/16 21:53ID:IPxqEa3WC言語、ムズカシイです。
変なこといっぱいやってると思いますが、とりあえず動くんで、試してみてください。
ご指摘の方お待ちしております。
0828以下ソースです
03/08/16 21:53ID:IPxqEa3W#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{
int random,answer;
srand((unsigned int)time(NULL));
random=rand()%100;
printf("数当てゲームを開始します。\n0〜99を入力してください。\n");
0829以下ソースです
03/08/16 21:54ID:IPxqEa3Wscanf("%d",&answer);
if(answer>=100||answer<0){
printf("0〜99の数字でお願いします。\n");
printf("Press any key\n");
getch();
exit(1);
}
while(1){
if(answer==random){
printf("正解です。\n");
printf("Press any key\n");
getch();
return 0;
}
else if(answer<random){
printf("答えはもう少し大きな値です。\n");
break;
}
else if(answer>random){
printf("答えはもう少し小さな値です\n");
break;
}
}
}
}
0830名前は開発中のものです。
03/08/19 02:56ID:8T/5ayFDちょっとコメントする時間がないんで、自分好みに書き換えてみた。
比べてみ。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
void main( void )
{
int random,answer;
srand((unsigned int)time(NULL));
random=rand()%100;
printf("数当てゲームを開始します。\n");
0831続き
03/08/19 02:57ID:8T/5ayFDprintf("0〜99を入力してください。\n");
scanf("%d",&answer);
if(answer>=100||answer<0){
printf("0〜99の数字でお願いします。\n");
}
else if(answer==random){
printf("正解です。\n");
printf("Press any key\n");
getch();
break;
}
else if(answer<random){
printf("答えはそれより大きな値です。\n");
}
else if(answer>random){
printf("答えはそれより小さな値です。\n");
}
}
return 0;
}
0832521
03/08/19 10:42ID:TxUwJEa1なるほど、0〜99以外を入力されたときも続けろということですね。
しかしそのコードだと数字以外を入力されると無限ループに入りますよね?
いえ、当然私が書いたif(answer>=100||answer<0)の部分がいけないのですが…
実は最初は>>830さんが手直されたようなコードだったんです。
ですが数字以外が入力された場合の判定のやり方がよく分からなくて、無限ループしないよう、その場で終了させることにしたのですが…
純粋に0〜99だけを受け付けるようにする場合(その他のアルファベットや改行や記号などを省く場合)どのように書いたら良いでしょうか…
0833名前は開発中のものです。
03/08/19 22:41ID:Qq+BHjHC0834名前は開発中のものです。
03/08/19 22:46ID:d9fQejakscanfの返り値について調べてみるなんてどうよ。
0835521
03/08/20 06:53ID:9SL4zmeG…申し訳ありません。
未熟故、もう少し具体的にヒント頂けませんでしょうか。
scanf()は代入された入力項目の数を返すんですよね…
ん。わからないです…そもそも戻り値について調べるってどうやって…
もう一回同じ入門書読んで出直してきますです。
0836833
03/08/20 12:21ID:TWQmsxwQごめんな、プロバイダがアクセス規制されちゃってて携帯からしか書き込めないのよ。
この場合、scanfが1以外を返してきたら入力は間違ってるってことね。その場合は入力ストリームstdinをクリアしてやればいい。
0837名前は開発中のものです。
03/08/20 13:54ID:wW23h0o7#include<conio.h>
class keisan
{
int a;
int b;
int ans;
public:
void input();
void tasu();
void hiku();
};
void keisan::input()
{
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
}
void keisan::tasu()
{
ans = a + b;
cout<<"a + b = "<<ans<<endl;
}
0838名前は開発中のものです。
03/08/20 13:55ID:wW23h0o7void keisan::hiku()
{
ans = a - b;
cout<<"a - b = "<<ans<<endl;
}
int main(void)
{
keisan cla;
cla.input();
cla.tasu();
cla.hiku();
getch();
return 0;
}
こんな感じにクラスって奴を使うんですか?
あと、オブジェクト指向になってますか?
0839名前は開発中のものです。
03/08/21 00:49ID:2IFCdjlOとりあえず、クラスの設計で気がついた点を並べてみる。
・コンストラクタが無い
このせいで、メンバ変数a,b,ansの初期値が不定になる。
例えば、Keisan::input()を行わずにkeisan::tasu()やkeisan::hiku()を実行
すると、謎の数字が表示されてしまう。
・デストラクタが無い
現状では無くても構わない。が、個人的には常に書くほうが良いと思う。
・cin、coutはクラスの外に出したほうが良い
一概にはいえないが、「計算」と「出力」のような異なる処理は分離したほ
うが柔軟なクラスになる。
・メンバ変数ansは必要ない
cout << "a + b = " << ( a + b) << endl;
cout << "a - b = " << ( a - b) << endl;
で十分だろうと。でもこれは、上の三つほどは重要じゃないな。
0840名前は開発中のものです。
03/08/21 01:38ID:2IFCdjlOchar s[ 256];
scanf("%s", s);
のように文字列で受け取って、strtol()関数などで数値に変換。
ところで、「特定のキーのみを受け付ける」のは、C/C++の標準関数では
無理なので、プラットフォーム固有の機能を使わなければならない。
windowsな人は、DirectXにたよっちゃうのが楽だと思う。
■ このスレッドは過去ログ倉庫に格納されています