#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のライブラリを使っています。
乱数でいくつかの弾を同時に落としたい
Re: 乱数でいくつかの弾を同時に落としたい
rand()の使い方について、
当方の稚拙な知識では、
乱数の種を初期化してから
rand()を呼ぶ、
というやり方しか知りません。
質問者さんの今のコードには
初期化の部分が見当たらないように
思えますが、そこはそれで
いいんですね?
当方の稚拙な知識では、
乱数の種を初期化してから
rand()を呼ぶ、
というやり方しか知りません。
質問者さんの今のコードには
初期化の部分が見当たらないように
思えますが、そこはそれで
いいんですね?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 乱数でいくつかの弾を同時に落としたい
> rand()の使い方について、当方の稚拙な知識では、乱数の種を初期化してから
> rand()を呼ぶ、というやり方しか知りません。
疑似乱数の種を初期化しないと、毎回、同じ疑似乱数が発生します。
よって、DeBUG しやすくなります。
疑似乱数の種を初期化するのは、BUG が取れてからでいい、と考えます。
> rand()を呼ぶ、というやり方しか知りません。
疑似乱数の種を初期化しないと、毎回、同じ疑似乱数が発生します。
よって、DeBUG しやすくなります。
疑似乱数の種を初期化するのは、BUG が取れてからでいい、と考えます。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
Re: 乱数でいくつかの弾を同時に落としたい
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
複数の弾を落とすには、複数の弾の情報を管理しないといけません。
例えばこんな感じでしょうか? (ノーチェックなのでもしかしたら間違っているかもしれません)
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;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)