[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
686: 名前は開発中のものです。 [sage] 2007/07/30(月) 11:28:11 ID:6LwwN6qr(1) AAS
夢がひろがりんぐ
すたれたなこれも・・・
687: 名前は開発中のものです。 [sage] 2007/07/31(火) 02:25:43 ID:DUqyrB+j(1) AAS
ぷよぷよはくっつきまで表示できるようになれば合格かなぁ
688: 名前は開発中のものです。 [sage] 2007/07/31(火) 14:07:18 ID:OcT/rTQJ(1) AAS
ぷよの場合は、何個くっついてるか?の判定ができれば合格じゃね?
689: 名前は開発中のものです。 [sage] 2007/08/22(水) 21:17:36 ID:ZVS3wfyE(1) AAS
はっきり言ってくっつくとかさっぱり分からないまま放置。
ライフゲームまではやったんだがなぁ。
690: 名前は開発中のものです。 [sage] 2007/11/26(月) 00:11:38 ID:0u+2SUoR(1) AAS
過疎ってるので使わせてもらおうかな・・。
とりあえず
外部リンク:gamdev.org
段階的学習!
を参考にしてテトリスを作ってみようかと思います。
691(1): 名前は開発中のものです。 [sage] 2008/03/31(月) 01:57:42 ID:gUB5EALr(1) AAS
プログラミングの知識ほぼゼロですがC言語に挑戦してみようと思います。
690の「段階的学習!」のコメント欄によると
>一番の最初には数当てゲーム。その次にマスターマインドとか。この辺から始めないとな -- 2005-11-25 (金) 02:10:27
とあるので、まず数当てゲームの作成に取り組んでみます。
692: 名前は開発中のものです。 [] 2008/03/31(月) 06:10:02 ID:6Xmv80aV(1) AAS
雑魚晒しage
693(1): 名前は開発中のものです。 [] 2008/04/06(日) 03:23:16 ID:3FIXnopP(1) AAS
>>691じゃないけど数当てゲーム作った
scnafで%cを使うと無限ループになるけどなんで?
//数当てゲーム
#include <stdio.h>
#include <stdlib.h>
int main()
{
int gameover = 0;
int seikai = 0;
int kaitou = 0;
char replay = 'y';
char buf[2];
while(replay=='y')
{
printf("1-9の数を直感で当てます。\n");
seikai = rand() % 9 + 1;
while(kaitou != seikai)
{
printf("1-9の値を入力して[ENTER]を入力:");
scanf("%d", &kaitou);
}
printf("正解です!!\nもう一度プレイしますか?[y/n]\n");
scanf("%s", &buf);
replay=buf[0];
}
return 0;
}
694: 名前は開発中のものです。 [sage] 2008/04/06(日) 04:47:09 ID:6iQTQxIz(1) AAS
>>693
とりあえず、
・srand()を使わないと答えのパターンが毎回同じになること
・rand()のような線形合同法が用いられている(と推測できる)関数の
返り値の余りを採るやり方は、数値が偏りやすくなる可能性があること
を覚えるべき。2番目はわからなければ今は無視してもいいけど
1番目だけは絶対に理解しておくべき。
695: 名前は開発中のものです。 [sage] 2008/04/06(日) 05:32:21 ID:pZ63dDRm(1) AAS
%cで1〜9を入力すると数字の'1'(0x30)〜'9'(0x39)になる。
%dで1〜9を入力すると数値の1(0x0)〜9(0x9)になる。
この場合欲しいのは数値なので%dで正解だと思う。
696(2): 名前は開発中のものです。 [sage] 2008/04/12(土) 16:41:42 ID:wUyPJZn0(1/2) AAS
>数値が偏りやすくなる可能性があること
気になったので実験。
下記プログラムにて偏りを目視で確認してみた。
(実行結果:外部リンク[phps]:gamdev.org)
67と68を境に出現頻度が変わってる。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
long int hit[100]={0};
long int i;
srand((unsigned)time(NULL));
for (i=0 ; i<1000000000 ; i++)
{
hit[rand()%100]++;
}
for (i=0 ; i<100 ; i++)
{
printf("%d\t%d\n", i, hit[i]);
}
return 0;
}
697(1): 名前は開発中のものです。 [sage] 2008/04/12(土) 16:46:13 ID:u1ebOeKL(1/2) AAS
>>696
(整数演算で)「乱数範囲÷100×100」以上は再試行しないと…
698: 名前は開発中のものです。 [sage] 2008/04/12(土) 16:56:10 ID:wUyPJZn0(2/2) AAS
仮説をたててみた
乱数の元になる数が0-9の10種類で出現する可能性は同じ
乱数の元:0 1 2 3 4 5 6 7 8 9
0〜2の乱数出力時の式
式:rand() % 3
乱数の元から0〜9が1回ずつ登場した場合
出力数:乱数の元
0 : 0 3 6 9
1 : 1 4 7
2 : 2 5 8
だから、>>696の実行結果はある値を境に出力頻度が変わった
これで正解?ちょっとググってくる
>>697
「乱数範囲÷100×100」って「乱数範囲」では?
乱数範囲%100を100セットってことかな
699: 名前は開発中のものです。 [sage] 2008/04/12(土) 17:04:10 ID:u1ebOeKL(2/2) AAS
例えば乱数範囲が0〜65535なら
65535÷100×100=65500になる。
65500〜65535は%100すると
結果のバラツキに繋がるので捨てるのが基本。
700: 名前は開発中のものです。 [sage] 2008/04/12(土) 17:37:14 ID:VRvbtz8m(1) AAS
乱数範囲による偏りに加えて、
線形合同法による乱数の下位nビットの周期が
高々2^nという点にも気をつけないといけない。
つまり、下位1ビットの周期は高々2^1 = 2。
偶数しか生成しないか、奇数しか生成しないか、
偶数と奇数が交互に生成されるかの3パターンしかない。
よって、線形合同法による疑似乱数生成関数randでサイコロを作ろうとして
rand()%6+1とかやっちゃうと、2人で遊んだ時に
片方のプレイヤーが偶数の目だけ、もう片方が奇数だけという状況が生まれる
(これをやっちゃった有名な例がカルドセプトサーガ)。
今でもCのrand関数は線形合同法のような形で実装されていることが多いけど、
下位kビットを捨て、k+1ビット目からを1ビット目と見なすことで
周期性の問題を解決しているものもある。
701: 名前は開発中のものです。 [sage] 2008/04/17(木) 23:00:01 ID:xfcPWlW/(1) AAS
1〜100までの数が書かれた玉が1個ずつ入った箱から、玉を取り出す場合は、どの数が出てくる確率も同じだけど、
1〜100までの数が書かれた玉が1個ずつ入っていて、さらに1〜10の玉を箱の中に追加したら確率が変わる。
そういうことだな。
で、余分に入れちゃった1〜10を取り除く処理が必要というわけだ。
rand()から得られる乱数範囲 : 0〜65535
取得したい乱数範囲 : 0〜99
の場合、0〜99が同じ確率で得られるように
65535 - (65535 % 100) = 65500
を超えた部分は捨てる
つまり、rand()の戻り値が65500より大きかった場合は、無効な範囲から取得したとして
rand()による乱数取得をもう一度やりなおす。
プログラムの流れをまとめてみた
1. rand()を実行
2. もし、rand()の戻り値が65500より大きいなら1.へもどる
3. rand()の戻り値を100で割った余りを得る
4. おわり
702(1): 名前は開発中のものです。 [sage] 2008/06/04(水) 08:04:37 ID:PZn8j6Ch(1) AAS
新Gamedevできたのでかきかき
TopPage - game-develop.com wiki
外部リンク:wiki.game-develop.com
GameDevWikiを何とかするスレ
2chスレ:gamedev
703: 名前は開発中のものです。 [] 2008/06/14(土) 23:31:21 ID:nnavq8hB(1) AAS
数当てゲームはこんなので良いですかね
1.ウィンドウを表示する
2.ランダムに1〜10までの数字を一つ表示する
3.数字を入力して、その数字を表示する
4.2の数字と3の数字を比べて、入力された数よりも大きかったらBig
小さかったらSmallと表示させる
5.3と4を3回繰り返させる
もし正解したらそこでゲームを終わりにする
704: 名前は開発中のものです。 [sage] 2008/11/06(木) 02:05:29 ID:5LSMjBOf(1) AAS
>>702
間違っています。
以上。
↓次の方どうぞ
705: 名前は開発中のものです。 [sage] 2008/11/06(木) 23:24:20 ID:oz8drcUW(1) AAS
はい、次の人です。
お前の安価が間違ってるぞ、と。
706: 名前は開発中のものです。 [sage] 2008/11/24(月) 20:57:35 ID:qPCWYPAF(1/3) AAS
過疎ってるけれどお邪魔しますよっと
いきなりパックマン作ろうと思って挫折したので、
一からこちらで勉強しにきました
数当てゲームから挑戦していきたいと思います
707: 706 ◆Jg2hMRjtc. [sage] 2008/11/24(月) 21:26:57 ID:qPCWYPAF(2/3) AAS
1.数当てゲーム
Level1 ウィンドウを表示する
外部リンク:www.geocities.jp
708: 706 ◆Jg2hMRjtc. [sage] 2008/11/24(月) 21:55:12 ID:qPCWYPAF(3/3) AAS
1.数当てゲーム
Level2 ランダムに1〜10までの数字を一つ発生させ、表示する
外部リンク:www.geocities.jp
709: 706 ◆Jg2hMRjtc. [sage] 2008/11/25(火) 21:39:13 ID:GdvnSEyE(1) AAS
1.数当てゲーム
level3 数字を入力して、その数字を表示する
外部リンク:www.geocities.jp
710: 706 ◆Jg2hMRjtc. [sage] 2008/11/26(水) 21:45:19 ID:Wb2d5d5f(1) AAS
1.数当てゲーム
Level4 Level2の数字とLevel3の数字を比べて入力された数よりも大きかったらBig。小さかったらSmall。同じならHitと表示させる。
外部リンク:www.geocities.jp
上下前次1-新書関写板覧索設栞歴
あと 77 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.012s