乱数でいくつかの弾を同時に落としたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 乱数でいくつかの弾を同時に落としたい

Re: 乱数でいくつかの弾を同時に落としたい

#5

by みけCAT » 2年前

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。

複数の弾を落とすには、複数の弾の情報を管理しないといけません。
例えばこんな感じでしょうか? (ノーチェックなのでもしかしたら間違っているかもしれません)

コード:

#include <stdio.h>
#include <stdlib.h> 
#include <handy.h>

#define NUM_TAMA 5

int main()
{
    int i;
    int x[NUM_TAMA];
    int y[NUM_TAMA];
    int v[NUM_TAMA];

    HgOpen(600, 600);

    for (;;)
    {
        for (i=0; i < NUM_TAMA; i++)
        {
            v[i] = rand() % 9 + 1;
            x[i] = rand() % 600;
            y[i] = 650;
        }
        for (;;)
        {
            int alive_exists = 0;
            HgClear();
            for (i=0; i < NUM_TAMA; i++)
            {
                if (0 <= y[i])
                {
                    HgCircle( x[i], y[i], 15);
                    y[i] -= v[i];
                    if (0 <= y[i]) alive_exists = 1;
                }
            }
            HgSleep(0.05);
            if (!alive_exists) break;
        }
    }
    HgGetChar();
    HgClose();
    return 0;
}

Re: 乱数でいくつかの弾を同時に落としたい

#4

by あたっしゅ » 2年前

> rand()の使い方について、当方の稚拙な知識では、乱数の種を初期化してから
> rand()を呼ぶ、というやり方しか知りません。

疑似乱数の種を初期化しないと、毎回、同じ疑似乱数が発生します。
よって、DeBUG しやすくなります。
疑似乱数の種を初期化するのは、BUG が取れてからでいい、と考えます。

Re: 乱数でいくつかの弾を同時に落としたい

#3

by box » 2年前

rand()の使い方について、
当方の稚拙な知識では、
乱数の種を初期化してから
rand()を呼ぶ、
というやり方しか知りません。

質問者さんの今のコードには
初期化の部分が見当たらないように
思えますが、そこはそれで
いいんですね?

Re: 乱数でいくつかの弾を同時に落としたい

#2

by kenzou » 2年前

ちなみに、この上に書いたプログラムでは、1つずつしか落ちてきません

乱数でいくつかの弾を同時に落としたい

#1

by kenzou » 2年前

#include <stdio.h>
#include <stdlib.h>
#include <handy.h>

int main()
{
int i;
int x;
int y;
int v;


HgOpen(600, 600);

for (;;)
{
v = rand() % 9;
x = rand() % 600;
for (i= 1 ; i <= 5 ; i++)
{

for (y=650; 0 <= y; y -= v)
{


HgClear();
HgCircle( x, y, 15);
HgSleep(0.05);


}

}
}
HgGetChar();
HgClose();
return 0;
}
自分は、ある簡単なゲームを作ろうと思いまして、パーツ事に作っているんですが、弾を同時に異なった速さで落とす場合の書き方を教えて頂きたいのです。
環境は VS Codeを使っており、handygraphicのライブラリを使っています。

ページトップ