[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
711: 名前は開発中のものです。 [] 2009/01/05(月) 19:13:02 ID:F8IEg8lA(1) AAS
int main()
{
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH|GLUT_ALPHA);
glutInitWindowSize(800,600);
glutInitWindowPosition(0,0);
glutCreateWindow("ロボット");
init();
glutReshapeFunc(reshape);
glutKeyboardFunc(key_press);
glutDisplayFunc(draw);
glutMainLoop();
return 0;
}
1-
あと 76 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.016s