弾幕の作り方
Re:弾幕などで
参考までに私の話を・・・・。
中学生でC言語の知識があるとは凄く驚きなのですが、代替は理解してるのでしょうか。基礎がないと、いきなりプログラムだけみても意味はさっぱりだと思います。
ちなみに私は、型宣言、porintf()などの基本的な関数、if文、for文、while文、ポインタ。程度しか知りませんでした。
そしてシューティングの館で見ててさらに必要だなと思ったのは、switch()、構造体。などでしょうか
弾幕作成は、1章~20章までを順に・・ある程度でも理解しないと難しいんじゃないかと思います。
敵と弾幕情報が親密な関係にあるので。20章まで理解できれば、後の22章以降は弾幕計算のサンプル程度だと思います。
弾幕の移動計算もsinやcosを使うのが多いいみたいなので、そういうのも章を読みながら理解していきました。私は全章を読み終えるのに、1カ月以上かかったんじゃないかと思います。
>どうすれば弾幕に使う弾の画像を変えられるのか?
EnemyShot.img=1;
この数字で
img_enemy_shot[○] に読み込んだ画像に変えれます。
>どうすれば弾幕を自分で作れるようになるのか?
とりあえず、弾幕サンプル動作を理解し、その軌道でなにができそうか考えるとか・・・w
>どうすればオリジナリティあふれる作品がつくれるか?
これは自分にどれだけアイディアがあるかで決まるんじゃないでしょうか。&それに対応できる知識とか?
>管理人さんのようなすばらしい弾幕が作れるように
>どれくらいかかりますか?
たしか四聖龍神録が製作期間6カ月だったような・・・四聖龍神録Plusは8ヶ月みたいですね・・・今みたら体験版の製作期間は1ヶ月・・・参考になるんじゃないでしょうか
プログラムを見る上での私が思うコツは1行ずつ動作を理解することだと思うので、少しずつやっていかないと身が持たないかと、私はいずれ弾幕作成ができるようになれば良いなぁ~程度で頑張ってました。ちなみに私は3、4ヶ月程度で現在にいたります。
中学生でC言語の知識があるとは凄く驚きなのですが、代替は理解してるのでしょうか。基礎がないと、いきなりプログラムだけみても意味はさっぱりだと思います。
ちなみに私は、型宣言、porintf()などの基本的な関数、if文、for文、while文、ポインタ。程度しか知りませんでした。
そしてシューティングの館で見ててさらに必要だなと思ったのは、switch()、構造体。などでしょうか
弾幕作成は、1章~20章までを順に・・ある程度でも理解しないと難しいんじゃないかと思います。
敵と弾幕情報が親密な関係にあるので。20章まで理解できれば、後の22章以降は弾幕計算のサンプル程度だと思います。
弾幕の移動計算もsinやcosを使うのが多いいみたいなので、そういうのも章を読みながら理解していきました。私は全章を読み終えるのに、1カ月以上かかったんじゃないかと思います。
>どうすれば弾幕に使う弾の画像を変えられるのか?
EnemyShot.img=1;
この数字で
img_enemy_shot[○] に読み込んだ画像に変えれます。
>どうすれば弾幕を自分で作れるようになるのか?
とりあえず、弾幕サンプル動作を理解し、その軌道でなにができそうか考えるとか・・・w
>どうすればオリジナリティあふれる作品がつくれるか?
これは自分にどれだけアイディアがあるかで決まるんじゃないでしょうか。&それに対応できる知識とか?
>管理人さんのようなすばらしい弾幕が作れるように
>どれくらいかかりますか?
たしか四聖龍神録が製作期間6カ月だったような・・・四聖龍神録Plusは8ヶ月みたいですね・・・今みたら体験版の製作期間は1ヶ月・・・参考になるんじゃないでしょうか
プログラムを見る上での私が思うコツは1行ずつ動作を理解することだと思うので、少しずつやっていかないと身が持たないかと、私はいずれ弾幕作成ができるようになれば良いなぁ~程度で頑張ってました。ちなみに私は3、4ヶ月程度で現在にいたります。
Re:弾幕などで
ここのHPの内容はC言語の基本的な知識があることを前提に紹介しています。
ですので、もしC言語についてよくご存知でなければまず基本をおさえる事をお勧めします。
「C言語 入門」で検索して出てくるようなサイトの内容を一通り読んで理解する
↓
ゲームプログラミングの館
↓
自分で簡単なゲームをいくつか作ってみる
↓
龍神録プログラミングの館
という感じで進んでいくといいかもしれません。
龍神録プログラミングの館は読まなくてもいいと思います。
いくつも自分でゲームを作っていく中でゲームの作り方はわかっていくと思いますし。
どれ位で作れるようになるかという事は恐らく誰もが気になることでしょうけど、
こればっかりはどれ位やる気があるかでものすごく違うのでわかりません。
メンドクサイなと思いながらやれば何年たってもろくなものは作れないでしょうし、
面白い!と思って夢中でやれば1ヶ月もすれば自分なりのゲームを作っていけることでしょう。
とりあえず、無理に難しいものを作ろうと背伸びしないことが継続の秘訣だと思います。
難しい・・わからない・・となると、面白くないと感じる事に繋がると思います。
少しずつでいいから自分の思い通りのプログラムが書けるようになれれば、やる気に繋がる事でしょう。
ただ、シューティングには最低限の数学の知識が必要です。
特にベクトルを使った計算や物理的計算などは中学生だと難しいと思いますから、
龍神録プログラミングの館のサンプルはわかりにくいかもしれません。
しかし、それを使わなければ作れないわけじゃありません。
sin,cosさえ意味がわかればシューティングは作れます。
今、中1でどこまで習うか知らないのですが、
sin,cosと後円周率とラジアンの関係がわかってないとキツイかもしれません。
その辺次の投稿で簡単に説明してみます。
ですので、もしC言語についてよくご存知でなければまず基本をおさえる事をお勧めします。
「C言語 入門」で検索して出てくるようなサイトの内容を一通り読んで理解する
↓
ゲームプログラミングの館
↓
自分で簡単なゲームをいくつか作ってみる
↓
龍神録プログラミングの館
という感じで進んでいくといいかもしれません。
龍神録プログラミングの館は読まなくてもいいと思います。
いくつも自分でゲームを作っていく中でゲームの作り方はわかっていくと思いますし。
どれ位で作れるようになるかという事は恐らく誰もが気になることでしょうけど、
こればっかりはどれ位やる気があるかでものすごく違うのでわかりません。
メンドクサイなと思いながらやれば何年たってもろくなものは作れないでしょうし、
面白い!と思って夢中でやれば1ヶ月もすれば自分なりのゲームを作っていけることでしょう。
とりあえず、無理に難しいものを作ろうと背伸びしないことが継続の秘訣だと思います。
難しい・・わからない・・となると、面白くないと感じる事に繋がると思います。
少しずつでいいから自分の思い通りのプログラムが書けるようになれれば、やる気に繋がる事でしょう。
ただ、シューティングには最低限の数学の知識が必要です。
特にベクトルを使った計算や物理的計算などは中学生だと難しいと思いますから、
龍神録プログラミングの館のサンプルはわかりにくいかもしれません。
しかし、それを使わなければ作れないわけじゃありません。
sin,cosさえ意味がわかればシューティングは作れます。
今、中1でどこまで習うか知らないのですが、
sin,cosと後円周率とラジアンの関係がわかってないとキツイかもしれません。
その辺次の投稿で簡単に説明してみます。
Re:弾幕などで
あれ・・今中学校でsin,cosって習わないんですか?( ̄  ̄;)
私の時もそうだったっけ・・・・・?
http://www.geisya.or.jp/~mwm48961/math/index_m.htm
ここ見てみると、ピタゴラスの定理すら中3で習うよう・・。
う~ん、中1の数学の知識がどの程度なのかよくわからないのですが、
少しハードルは高いかもしれませんね。
でも基本的な理論さえわかればいいので、別に難関高校の受験問題がとけるようになるほど
理解する必要もないですからそんなに構える事もないかもしれません。
どりあえず、突然シューティングを作ろうとせず、
りんごがなっている木からリンゴが落ちてきて、下でカゴを持っているおじいさんを左右に動かして操作して
落ちてくるリンゴを入れる・・
みたいな簡単なゲームを作ってみてはどうでしょう?
そういうゲームをしたことが無いとイメージ掴みにくいかな^^;
私の時もそうだったっけ・・・・・?
http://www.geisya.or.jp/~mwm48961/math/index_m.htm
ここ見てみると、ピタゴラスの定理すら中3で習うよう・・。
う~ん、中1の数学の知識がどの程度なのかよくわからないのですが、
少しハードルは高いかもしれませんね。
でも基本的な理論さえわかればいいので、別に難関高校の受験問題がとけるようになるほど
理解する必要もないですからそんなに構える事もないかもしれません。
どりあえず、突然シューティングを作ろうとせず、
りんごがなっている木からリンゴが落ちてきて、下でカゴを持っているおじいさんを左右に動かして操作して
落ちてくるリンゴを入れる・・
みたいな簡単なゲームを作ってみてはどうでしょう?
そういうゲームをしたことが無いとイメージ掴みにくいかな^^;
Re:弾幕などで
上で言っていたリンゴの落ちゲー(?)ですが、こんな感じで作ってみました。

プログラムコードも載せておきます。
http://dixq.net/zip/oti_ge.zip
キーボードの十字キーでキャラを操作し、カゴにリンゴを入れて下さい。
こんな感じのゲームをいくつも作っていってみてはどうでしょう?
作っていく中で
「これってどうやったら実現できるかな?」
と疑問に思うことが出てくると思います。
その時その都度新しい事を学んでいけばそれでいいと思います。
※このサンプルにはsin,cosが使われていますが、下に落とすだけならy座標を増やすだけでいいので、省けます。

プログラムコードも載せておきます。
http://dixq.net/zip/oti_ge.zip
キーボードの十字キーでキャラを操作し、カゴにリンゴを入れて下さい。
こんな感じのゲームをいくつも作っていってみてはどうでしょう?
作っていく中で
「これってどうやったら実現できるかな?」
と疑問に思うことが出てくると思います。
その時その都度新しい事を学んでいけばそれでいいと思います。
※このサンプルにはsin,cosが使われていますが、下に落とすだけならy座標を増やすだけでいいので、省けます。
Re:弾幕などで
サイン、コサインの理論はご存知ですか?
例えば上図の斜辺の長さ1とすると、赤線の長さはいくらかわかりますか?
そしてこれが44°だといくらになりますか?
シューティングで使う数学はその程度です。
弾の画像があるフォルダに、変更したい画像をいれ、
LoadGraphまたはLoadDivGraphのファイル名を変更して下さい。
サンプルでいえば
LoadDivGraph( "img/bullet.png" , 1 , 1 , 1 , 30 , 29 , img_bullet ) ;
ここです。この場合画像サイズの変更も必要です。
この関数の使い方がわからない場合は本家リファレンスで確認して下さい。
例えば上図の斜辺の長さ1とすると、赤線の長さはいくらかわかりますか?
そしてこれが44°だといくらになりますか?
シューティングで使う数学はその程度です。
弾の画像があるフォルダに、変更したい画像をいれ、
LoadGraphまたはLoadDivGraphのファイル名を変更して下さい。
サンプルでいえば
LoadDivGraph( "img/bullet.png" , 1 , 1 , 1 , 30 , 29 , img_bullet ) ;
ここです。この場合画像サイズの変更も必要です。
この関数の使い方がわからない場合は本家リファレンスで確認して下さい。
Re:弾幕の作り方
まず一つずつ回答をもらえるでしょうか。
(1) わからないということですが、何がわからないですか?
(2) プロジェクトはダウンロードしてありますか?
(3) C言語の基本的な部分は理解していますか?
(4) コンパイラは何を使っていますか?
(5) ゲームプログラミングの経験はありますか?
また、ステージ作りはどこにも紹介していませんが、
一通りのことをちゃんと理解しないと難しいと思います。
もしゲーム製作の経験がなければ突然大きなゲームを作ろうとしない方がいいと思います。
バグさんも仰っているように、小さなものを沢山作ってまずはなれることが大事かと思います。
>バグさん
そういえばOpenGLの練習をする為に最初に作ってみたのがアナログ時計でした^^
(1) わからないということですが、何がわからないですか?
(2) プロジェクトはダウンロードしてありますか?
(3) C言語の基本的な部分は理解していますか?
(4) コンパイラは何を使っていますか?
(5) ゲームプログラミングの経験はありますか?
また、ステージ作りはどこにも紹介していませんが、
一通りのことをちゃんと理解しないと難しいと思います。
もしゲーム製作の経験がなければ突然大きなゲームを作ろうとしない方がいいと思います。
バグさんも仰っているように、小さなものを沢山作ってまずはなれることが大事かと思います。
>バグさん
そういえばOpenGLの練習をする為に最初に作ってみたのがアナログ時計でした^^
Re:弾幕の作り方
弾幕の画像を変えたそうだったので、既存の弾画像で良いなら
32. ボスの弾幕1
のプログラムを見てください。
-------------------------------------------
この赤文字の
EnemyShot[i].img=1;
の数値を変えてやれば良いです。
EnemyShot[i].img=2;
とすれば画像が変わります。
-------------------------------------------
そして画像を変えるタイミング(時間)ですが
EnemyShot[i].counter==80
が時間を表しています。
なので、弾発射から、約1秒後(counter=60が大体1秒になるので)に1の画像を変える、という事です。
よって、
if(EnemyShot[i].counter==80){
// 略 //←ここ
if(EnemyShot[i].counter==160){
//略の間に
を追加してあげれば、発射から2秒後に◎画像に変わります。
-------------------------------------------
にしても、中学1年でsinが分かるとは凄いです。私が中1の1学期でやってた事は100×(-1)=-100だよ~とかでしたけどw 大学にいる今でも三角関数って言われると( ̄□ ̄)?って状態になります
32. ボスの弾幕1
のプログラムを見てください。
void EnemyShotPattern12(int i){ if(EnemyShot.counter==0){ EnemyShot.Enx[0]=EnemyShot.mem_ex; EnemyShot.Eny[0]=EnemyShot.mem_ey; for(int j=0;j<6;j++){ EnemyShot.EnemyShots[j].x=EnemyShot.Enx[0]; EnemyShot.EnemyShots[j].y=EnemyShot.Eny[0]; EnemyShot.EnemyShots[j].flag=1; if(j==0) EnemyShot[i].EnemyShots[j].angle=atan2(EnemyShot[i].mem_py-EnemyShot[i].mem_ey,EnemyShot[i].mem_px-EnemyShot[i].mem_ex); else EnemyShot[i].EnemyShots[j].angle = EnemyShot[i].EnemyShots[0].angle+2.0f*PI*(double)j/6.0f; } PlaySoundMem(sound_enemy_shot[0],DX_PLAYTYPE_BACK); } if(EnemyShot[i].counter==80){ double ang[6]; EnemyShot[i].img=1; for(int s=0;s<6;s++){ // 以下略 //
-------------------------------------------
この赤文字の
EnemyShot[i].img=1;
の数値を変えてやれば良いです。
EnemyShot[i].img=2;
とすれば画像が変わります。
-------------------------------------------
そして画像を変えるタイミング(時間)ですが
EnemyShot[i].counter==80
が時間を表しています。
なので、弾発射から、約1秒後(counter=60が大体1秒になるので)に1の画像を変える、という事です。
よって、
if(EnemyShot[i].counter==80){
// 略 //←ここ
if(EnemyShot[i].counter==160){
//略の間に
if(EnemyShot[i].counter==120) EnemyShot[i].img=0;
を追加してあげれば、発射から2秒後に◎画像に変わります。
-------------------------------------------
にしても、中学1年でsinが分かるとは凄いです。私が中1の1学期でやってた事は100×(-1)=-100だよ~とかでしたけどw 大学にいる今でも三角関数って言われると( ̄□ ̄)?って状態になります
Re:弾幕の作り方
>(1) わからないということですが、何がわからないですか?
(2) プロジェクトはダウンロードしてありますか?
(3) C言語の基本的な部分は理解していますか?
(4) コンパイラは何を使っていますか?
(5) ゲームプログラミングの経験はありますか?
プログラミングはほぼないといっていいです。
でもノベルゲーム作成ソフトで
多少スクリプトはありました。
http://dixq.net/g/
の24までは読んで実行してみました。
ですがそれを自分の思っていることに当てはめることができないのです。
コンパイラとは
DXライブラリのことでしょうか?
(2) プロジェクトはダウンロードしてありますか?
(3) C言語の基本的な部分は理解していますか?
(4) コンパイラは何を使っていますか?
(5) ゲームプログラミングの経験はありますか?
プログラミングはほぼないといっていいです。
でもノベルゲーム作成ソフトで
多少スクリプトはありました。
http://dixq.net/g/
の24までは読んで実行してみました。
ですがそれを自分の思っていることに当てはめることができないのです。
コンパイラとは
DXライブラリのことでしょうか?
Re:弾幕の作り方
まず、(1)~(5)のうち4,5だけ回答頂けたと思いますが、後はどうですか?
24章までの内容は読んだだけでなく、理解していますか?
似たような仕様を作って欲しいといわれたら作れますか?
例えば24章を拡張して、同時に敵をウロウロさせて欲しいといわれたら出来ますか?
もし読んだだけでしたら、
ゲームプログラミングの館は読むだけでなく、一つ一つ習得していって下さい。
自分で似たような仕様を考え、自分でプログラムを書いて練習して下さい。
恐らく数学の教科書を眺めただけで練習問題が全て解けるようにはならないであろうことと同じように、
プログラミングも演習が大事です。
>できたら、メールにて送りますので試しにやっていただけませんか?
いいですよ。
それか、アップローダかどこかにアップロードして、
ここにリンク貼ってもらえたらみんなで見れると思いますがどうでしょうか。
24章までの内容は読んだだけでなく、理解していますか?
似たような仕様を作って欲しいといわれたら作れますか?
例えば24章を拡張して、同時に敵をウロウロさせて欲しいといわれたら出来ますか?
もし読んだだけでしたら、
ゲームプログラミングの館は読むだけでなく、一つ一つ習得していって下さい。
自分で似たような仕様を考え、自分でプログラムを書いて練習して下さい。
恐らく数学の教科書を眺めただけで練習問題が全て解けるようにはならないであろうことと同じように、
プログラミングも演習が大事です。
>できたら、メールにて送りますので試しにやっていただけませんか?
いいですよ。
それか、アップローダかどこかにアップロードして、
ここにリンク貼ってもらえたらみんなで見れると思いますがどうでしょうか。
Re:弾幕の作り方
>sin,cosさえ意味がわかればシューティングは作れます。
今、中1でどこまで習うか知らないのですが、
sin,cosと後円周率とラジアンの関係がわかってないとキツイかもしれません。
いま、しっかりと勉強中ですがルートなどが出てくるので少し難しいところもあるかもしれません。
>(1) わからないということですが、何がわからないですか?
(2) プロジェクトはダウンロードしてありますか?
(3) C言語の基本的な部分は理解していますか?
わからないのは、いろいろありますがまず、簡単なものから作ることにしましたので、少しは大丈夫かと思います。
すいません、プロジェクトのダウンロードとは?
Microsoft Visual C++ 2008 Express Edition
のことでしょうか?
それなら製品登録もしました。
基本的な部分はもういちどゲームプログラミングの館とシューティングの館で
確認中です。
いろいろ答えてくれた皆様どうもありがとうございます。
まだいろいろ疑問や問題があるので質問するかもしれないのでよろしくお願いします。
今、中1でどこまで習うか知らないのですが、
sin,cosと後円周率とラジアンの関係がわかってないとキツイかもしれません。
いま、しっかりと勉強中ですがルートなどが出てくるので少し難しいところもあるかもしれません。
>(1) わからないということですが、何がわからないですか?
(2) プロジェクトはダウンロードしてありますか?
(3) C言語の基本的な部分は理解していますか?
わからないのは、いろいろありますがまず、簡単なものから作ることにしましたので、少しは大丈夫かと思います。
すいません、プロジェクトのダウンロードとは?
Microsoft Visual C++ 2008 Express Edition
のことでしょうか?
それなら製品登録もしました。
基本的な部分はもういちどゲームプログラミングの館とシューティングの館で
確認中です。
いろいろ答えてくれた皆様どうもありがとうございます。
まだいろいろ疑問や問題があるので質問するかもしれないのでよろしくお願いします。
Re:弾幕の作り方
落ちげー?についてなのですが、まずゲームプログラミングの館のプログラムコード
を改造して公開されたりんごゲームのようなものを作れるか調べたいのですが
添付画像のとおり。
を改造して公開されたりんごゲームのようなものを作れるか調べたいのですが
#include "DxLib.h" typedef struct{ int x,y,img,muki,walking_flag; }ch_t; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ int image[16]; char Key[256]; ch_t ch; if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理 ch.x =320; ch.y =160; ch.walking_flag=0; ch.muki=3; SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定 LoadDivGraph( "char.png" , 1 , 1 , 1 , 64 , 32 , image ) ;//画像を分割してimage配列に保存 while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){ //↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了 if(ch.x%32==0 && ch.y%32==0){ //座標が32で割り切れたら入力可能 ch.walking_flag=1; //歩くフラグを立てる。 if ( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら ch.muki=1; //左向きフラグを立てる else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら ch.muki=2; //右向きフラグを立てる else //何のボタンも押されてなかったら ch.walking_flag=0; //歩かないフラグを立てる } if(ch.walking_flag==1){ //歩くフラグが立っていたら if (ch.muki==1) //左向きならch.x座標を減らす ch.x--; else if(ch.muki==3) //右向きならch.x座標を増やす ch.x++; } ch.img=image[(ch.x%32+ch.y%32)/8 + ch.muki*4]; //画像をセット DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画 ScreenFlip(); } DxLib_End(); return 0; }で64,32画像が表示されません。
添付画像のとおり。
Re:弾幕の作り方
>いま、しっかりと勉強中ですがルートなどが出てくるので少し難しいところもあるかもしれません。
そうですね~。ルートは直接利用する機会は少ないので、まぁわからなくても大丈夫かもしれませんが、
やはり基本なので、知っているのと知らないのでは大きく違うかもしれませんね。
>すいません、プロジェクトのダウンロードとは?
コンパイルする時は、そのプロジェクトを作りますよね。
今無事コンパイルできていると言う事は「プロジェクト」というものを作っていらっしゃるはずです。
シューティングゲームの館のメニュー項目で「プロジェクトのダウンロード」をして、
プロジェクトをお開きになったのではないかと思いますが、それの事です。
そうですね~。ルートは直接利用する機会は少ないので、まぁわからなくても大丈夫かもしれませんが、
やはり基本なので、知っているのと知らないのでは大きく違うかもしれませんね。
>すいません、プロジェクトのダウンロードとは?
コンパイルする時は、そのプロジェクトを作りますよね。
今無事コンパイルできていると言う事は「プロジェクト」というものを作っていらっしゃるはずです。
シューティングゲームの館のメニュー項目で「プロジェクトのダウンロード」をして、
プロジェクトをお開きになったのではないかと思いますが、それの事です。
Re:弾幕の作り方
>LoadDivGraph( "char.png" , 1 , 1 , 1 , 64 , 32 , image ) ;//画像を分割してimage配列に保存 32x64なので、ここが反対ですね。 >ch.img=image[(ch.x%32+ch.y%32)/8 + ch.muki*4]; //画像をセット 配列は理解していますか? 今画像が一つしかないのに、無い画像番号をさしています。 これは16種類画像があって、それを歩くモーションにあわせて画像を変更するための処理です。 今は要素番号0しか使えません。 >if ( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら > ch.muki=1; //左向きフラグを立てる >else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら > ch.muki=2; //右向きフラグを立てる 向きは左を1,右を2としているのに > if (ch.muki==1) //左向きならch.x座標を減らす > ch.x--; > else if(ch.muki==3) //右向きならch.x座標を増やす > ch.x++; そのように処理されていません。 そして、今回は一区間ずつ歩かせる必要はないので、 私がかいたサンプルのようにキーが入力されていたらそのままそちらに移動させるだけでいいと思います。
Re:弾幕の作り方
大まかに数学の学校の進度を図示すると…
中1
・正負の数、絶対値
・文字式
・一次方程式
・比例式
・図形(対称,作図,円と接線,図形の体積,3次元における直線の関係,など…)
中2
・単項文字式の加減乗除
・文字式による説明(証明の基礎)
・2元1次連立方程式
・1次関数
・図形(三角形や平行四辺形などに関する諸定理,三角形の合同,図形の証明問題,など…)
中3
・多項式の展開,2次式の因数分解
・実数解の2次方程式
・2次関数(2次の項のみ)
・図形(三角形の相似,平行線と線分,中点連結定理,三平方の定理,など…)
といったものでしょうか。プログラミングでは、数学の問題を解く力はあまり必要ないので、概念をどれだけ知ってるかがポイントです。
中1
・正負の数、絶対値
・文字式
・一次方程式
・比例式
・図形(対称,作図,円と接線,図形の体積,3次元における直線の関係,など…)
中2
・単項文字式の加減乗除
・文字式による説明(証明の基礎)
・2元1次連立方程式
・1次関数
・図形(三角形や平行四辺形などに関する諸定理,三角形の合同,図形の証明問題,など…)
中3
・多項式の展開,2次式の因数分解
・実数解の2次方程式
・2次関数(2次の項のみ)
・図形(三角形の相似,平行線と線分,中点連結定理,三平方の定理,など…)
といったものでしょうか。プログラミングでは、数学の問題を解く力はあまり必要ないので、概念をどれだけ知ってるかがポイントです。
Re:弾幕の作り方
>tkさん
なるほど。
もう昔のことなので覚えてないですが、私の時には一次関数を中2では習わなかった気が・・。
って事はy=xのグラフの傾きは角度45°だってことは中1ではわからないんですかね?
そうなってくると中1では少し難しいですね。
・・・あ!14歳からのワクワクシューティング・・なんとかって本がありますが、
なんで14歳からなのかと思っていましたが、中2を示しているんですね。
なるほど、そういう意味なのか・・。
>素人のやり方
確かに私はプロでもなければ、熟練者でもないので、適切な方法ではないと思います。
ただ、出来るだけわかり易く解説したいなと思っているので、
あえて非効率な書き方になっている部分もあります。
どうしても効率的、汎用的、拡張的であることと、解り易いことは反比例してしまいがちなのですが
少ない知識の中でではありますが出来るだけ適切な方法を保ちながら最大限わかりやすいことを重視しています。
もし、もっと適切な方法をご存知でしたらアドバイス頂けると幸いです。
なるほど。
もう昔のことなので覚えてないですが、私の時には一次関数を中2では習わなかった気が・・。
って事はy=xのグラフの傾きは角度45°だってことは中1ではわからないんですかね?
そうなってくると中1では少し難しいですね。
・・・あ!14歳からのワクワクシューティング・・なんとかって本がありますが、
なんで14歳からなのかと思っていましたが、中2を示しているんですね。
なるほど、そういう意味なのか・・。
>素人のやり方
確かに私はプロでもなければ、熟練者でもないので、適切な方法ではないと思います。
ただ、出来るだけわかり易く解説したいなと思っているので、
あえて非効率な書き方になっている部分もあります。
どうしても効率的、汎用的、拡張的であることと、解り易いことは反比例してしまいがちなのですが
少ない知識の中でではありますが出来るだけ適切な方法を保ちながら最大限わかりやすいことを重視しています。
もし、もっと適切な方法をご存知でしたらアドバイス頂けると幸いです。
Re:弾幕の作り方
>通りすがり
具体的なこと示せって言われても、何も答えられないわけですね。ハッキングして自分で調べろ?
そうすれば「あること」に気づく?
自分が答えられないからってそういう低レベルな回答するのはどうなの?
しまいには自分で回答できないから、人に答えてみ?と言って代わりに答えさせる気?
今求められてる事は、もっと適切なアルゴリズムがあるのなら自分で示す事ですよ。
文章では答えられないとかCではかけないとかいくらでも言い訳できるけど、
もし自分に本当にスキルがあるのなら、そんないい訳せずに
20行位でみんなが納得できるようなアルゴリズムの解説して下さい。
まぁ出来ない人にこんな事言っても無駄だけど。
具体的なこと示せって言われても、何も答えられないわけですね。ハッキングして自分で調べろ?
そうすれば「あること」に気づく?
自分が答えられないからってそういう低レベルな回答するのはどうなの?
しまいには自分で回答できないから、人に答えてみ?と言って代わりに答えさせる気?
今求められてる事は、もっと適切なアルゴリズムがあるのなら自分で示す事ですよ。
文章では答えられないとかCではかけないとかいくらでも言い訳できるけど、
もし自分に本当にスキルがあるのなら、そんないい訳せずに
20行位でみんなが納得できるようなアルゴリズムの解説して下さい。
まぁ出来ない人にこんな事言っても無駄だけど。
Re:弾幕の作り方
規約に沿った投稿をお願いします。
まず、丁寧語で投稿して下さいますようお願いいたします。
確かに私の示すプログラムはプロの間で常識となっているアルゴリズムとは違うと思います。
私独自のやり方ですし、私なりに我流で見つけてきた方法です。
ただ、Cをベースにしていても、C++のSTLの機能を使ったり、
リストや動的配列を駆使したりグローバル変数を減らすこと等でもっと効率的になると思いますが、
最大限効率化したコードを紹介することより、わかりやすいコードを紹介する方が
参考サイトとしてはずっと意味があると思ってそうしています。
効率化は、理解したうえで自分で行っていけばいいと思います。
難しいあまり、やる気がなくなって、断念してしまっては本末転倒です。
もっと効率的なアルゴリズムはもちろん存在するはずですし、
私にその事を紹介する技術が無い事も確かです。そこは否定する気もありません。
ただ先ほども書いた通り、もっと効率的なアルゴリズムをご存知なら皆さんが納得するように、
その理論を説明する事がこの話を解決する事になると思いますが、いかがでしょうか?
まず、丁寧語で投稿して下さいますようお願いいたします。
確かに私の示すプログラムはプロの間で常識となっているアルゴリズムとは違うと思います。
私独自のやり方ですし、私なりに我流で見つけてきた方法です。
ただ、Cをベースにしていても、C++のSTLの機能を使ったり、
リストや動的配列を駆使したりグローバル変数を減らすこと等でもっと効率的になると思いますが、
最大限効率化したコードを紹介することより、わかりやすいコードを紹介する方が
参考サイトとしてはずっと意味があると思ってそうしています。
効率化は、理解したうえで自分で行っていけばいいと思います。
難しいあまり、やる気がなくなって、断念してしまっては本末転倒です。
もっと効率的なアルゴリズムはもちろん存在するはずですし、
私にその事を紹介する技術が無い事も確かです。そこは否定する気もありません。
ただ先ほども書いた通り、もっと効率的なアルゴリズムをご存知なら皆さんが納得するように、
その理論を説明する事がこの話を解決する事になると思いますが、いかがでしょうか?