[過去ログ] 1人でゲームが作れるように修行します。 (984レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
637
(1): 2009/03/15(日)00:39 ID:7FB2KF+0(1/2) AAS
>確かに「マップ敷き詰め方式」と比べると「カメラの位置を動かす」の方が分かりやすそうな気がする。

いや、マップ敷き詰め方式ってのは、「カメラの位置うんぬん」とは別の話ですから比べるようなものじゃないですよ。

「マップ敷き詰め方式」ってのは要するにメモリ消費を抑える為の手段でして
でっかい絵をどーんと置くか、ちっちゃいパズルを並べるかの違い。

「カメラの位置うんぬん」は、その絵のどこを表示するか、という考え方だから「マップ敷き詰め方式」の場合にも使います。

これだけじゃなんなので、簡単に解説します。
省9
638
(1): 2009/03/15(日)00:48 ID:7FB2KF+0(2/2) AAS
<637の続き>

で、たとえば画面の大きさを 640*480 とするならば、画像の中心座標は ( 320,240 ) ですよね。

選手が立ってる位置が (500,400) だとして、その選手を画面の中心に置きたいのなら、
カメラの位置は ( 500 - 320 , 400 - 240 ) で ( 180 , 160 ) って事になります。
(ただし、これは選手の大きさを考慮に入れてません)

つまり、画面の中心に置きたい選手の座標が ( px , py ) で、カメラの位置が( cx , cy ) ならば、
cx = px - 320
省4
639: 436 2009/03/15(日)01:23 ID:PMo+0xWl(1) AAS
フォントのプレビューを兼ねたヘルプウィンドウを付けた
DrawStringで復改が使えないとはしらなんだ
640: SGGK ◆6pZCoAtaxk 2009/03/15(日)23:22 ID:NEkwwH3s(1) AAS
>>637,638
詳細な説明、ありがとうございます。「マップ敷き詰め方式」が別物の件もわかりました〜。
実装頑張ってみます!

今日はフィールドに縦線とセンターサークル書いて終了。(画像ツールがものすごく苦手で時間かかる・・・orz)
とりあえずフィールドの作りこみはこれ以上やらずにここまででプログラムに移るつもり。
DXライブラリのリファレンスページで使えそうな関数が無いか探し始めたところで終了。
一日10分(0分の日もあるかもorz)から1時間位の作業時間でやってるので長期戦・・・。
641
(1): 436 2009/03/16(月)01:22 ID:TkalS2E8(1) AAS
フォントハンドル数が上限40とはしらなんだ〜
642: SGGK ◆6pZCoAtaxk 2009/03/16(月)23:25 ID:kd1vw+Gx(1) AAS
>>641
そういえば自分もDXライブラリでグラフィク関係関数にグラフィックハンドルというのが出てくるけど、
もしも上限が余裕なかったとしたらサッカゲームお手上げな予感です〜。

DXライブラリのリファレンス見たところ、使えそうな関数がなさそうな感じ。
まだ調べ方が十分じゃない所為かもしれないので、今日はとりあえず後回し。
その代わり、プログラムのフィールドが今までは単にデータをロードして表示してただけなのを
選手、ボール、ゴールと同様にクラス化?(←自信なしw)した。
省1
643
(1): 436 2009/03/17(火)00:55 ID:baRscC9v(1) AAS
フォントサイズの設定とプレビューを付けた
最近眠くてしょうがない
644
(1): ◆Fp.xSEIREI 2009/03/17(火)01:05 ID:120cRAoh(1/2) AAS
ぽちぽちドット打ち(・∀・)
画像を本気で用意しようとするととんでもなく時間かかるなぁ
645: ◆Fp.xSEIREI 2009/03/17(火)20:15 ID:120cRAoh(2/2) AAS
今気づいた
杖を持たせてる手が逆だ\(^o^)/オワタ
646: SGGK ◆6pZCoAtaxk 2009/03/17(火)23:14 ID:CdZR/pK0(1) AAS
>>643
自分も夜12時に寝ていても眠いですorz
>>644、645
フィールド書くだけで1時間以上掛かったので、同じくドット絵苦手です。
座標指定で線引けないので、マウスが震えないように直線引いたりしてますw

ボール、選手、ゴール、フィールドのクラスにカメラ座標cx、cyをメンバ変数として追加。
ボールの位置を参考に画面を動かしたいので、それぞれの移動用メンバ関数にボールクラスのオブジェクトのアドレスを引数として取るような変更を加えた。
省2
647
(1): 436 2009/03/18(水)01:20 ID:avggRhEo(1) AAS
今日はサボり気味;内部を整理しただけです
648
(2): ◆Fp.xSEIREI 2009/03/18(水)20:56 ID:YH4Ystcz(1) AAS
AA省
649
(1): SGGK ◆6pZCoAtaxk 2009/03/18(水)23:31 ID:QZkUMxQu(1) AAS
>>647
同じくちょっと今日は進みませんでした〜orz
>>648
そ・・・それは災難ですね〜。ハードディスククラッシュみたいな最悪状態じゃなくて良かったと思ってみるとか・・・(汗;

進まなかったので、昨日の上手く行かなかった関数の話。
GHandle = MakeGraph( 640 , 480 ) ; //表示画面と同じ大きさの空のグラフィックハンドルを作成
GetDrawScreenGraph( -1600 , -800 , -961 , -321, GHandle ) ;//表示画面外の画面データを切り抜き、前の命令で作ったグラフィックハンドルGHandleに渡す。
省4
650
(1): 436 2009/03/19(木)01:12 ID:oZOFCOMI(1) AAS
仕様を考え中ったら考え中
>>648
:( ゚Д゚ ll|):
651
(1): 2009/03/19(木)01:36 ID:g4JXnoXo(1) AAS
>>649

>座標の変換?みたいな事をしないで見たい画面の部分を切り抜いて直接表示画面に持ってこれないかなーと思った為。

いちいちそんな事してたら無駄に負荷がかかると思いますw

ちなみにその「見たい部分のみ抜き出す」って考え方が、例の「マップ敷き詰め方式」の根本です。

つまり「いちいち切り抜く」のではなく、あらかじめ細かく切りきざんであるのを敷き詰めて並べておいて、
そのうちの「見たい部分」のみを抜き出すわけですね。
652: SGGK ◆6pZCoAtaxk 2009/03/20(金)00:01 ID:/cDOXKwk(1) AAS
>>650
仕様書、やる事リスト、自分はまだどちらも手を付けていませんでした・・・orz
>>651
>つまり「いちいち切り抜く」のではなく、あらかじめ細かく切りきざんであるのを敷き詰めて並べておいて、
>そのうちの「見たい部分」のみを抜き出すわけですね。

な・・・なるほど!自分は無意識に「マップ敷き詰め方式」をやろうとしてしまっていたワケですね。
明日こそは「カメラの位置を動かす」方式に挑戦してみようと思います。
省1
653: 436 2009/03/20(金)01:04 ID:U+nXWAc2(1) AAS
一文字ごとに表示する+設定で表示スピードを変える物を組み立て中です
654
(1): SGGK ◆6pZCoAtaxk 2009/03/20(金)23:17 ID:8+2HwF0+(1) AAS
フィールドだけがボールと反対方向に動くようになったけど変な感じ。
フィールド画像の左上原点をボールの移動距離と反対方向に動かしてフィールド画像を毎ループ(フレーム?)毎に描画する時に
フィールドの端が表示画面の端に来たらそれ以上動かないように条件if文を使ったが、フィールドの端まで来ないのにフィールドが動かなくなる。
もしかしてフィールドのデータが読み込まれた時に一部分カットされてるのではと思い、DXライブラリで使えそうな関数を探し、フィールドのデータを読み込んだ直後に

int SizeX , SizeY;
GetGraphSize( gh , &SizeX , &SizeY ) ;
printfDx("%d",SizeX);
省4
655
(1): 436 2009/03/21(土)01:18 ID:Nd/MqJBa(1) AAS
一文字ごと表示+スピード設定が出来るようになった
文字のサイズ変更で大きくした際に、メッセージ枠をはみ出した分を自動で復改する様にした
今はエスケープシーケンスの復改の代わりになる物を組み立て中
656
(1): 2009/03/21(土)01:33 ID:B0u9yEZ5(1) AAS
>>654

「フィールドをボールと反対方向に動かす」という考え方は応用が利きにくいと思うので止めた方がいいかも。

あくまで「カメラ位置」を考えてください。
そしてその「カメラ」もキャラのひとつ(画面全体分――つまり640*480の大きさのキャラ)と考えてください。

ボールが常に「画面の中心」にくるというのなら、
カメラの位置はボールの位置から(-320,-240)の場所です。

ただし、そのずらした結果が、マイナスになったら強制的に0にしてしまえばはみ出す事はありません。
省3
657
(1): SGGK ◆6pZCoAtaxk 2009/03/21(土)23:44 ID:7vjJASG9(1) AAS
>>655
文字処理関係は考えなければならない事が沢山ありそうで自分も将来サッカーゲームの制作がうまく進んだら?文字処理トライすることになった時に参考にしてみます〜。

>>656
>あくまで「カメラ位置」を考えてください。
>そしてその「カメラ」もキャラのひとつ(画面全体分――つまり640*480の大きさのキャラ)と考えてください。

まだ考え中で、上記アドバイスと意図が合ってるか自信が無く、カメラのクラスを作ってなんとか目的を実現できないかと思ってるところです。

昨日までやろうとしていた方法は、フィールドサイズ1088X1696の紙を2枚重ねて、
省13
658: 436 2009/03/22(日)02:10 ID:B7hTCU6u(1) AAS
復改出来る様になった。文字スピード設定のプレビューを付けた
今はBGMの音量設定を考え中
659
(1): 2009/03/22(日)03:03 ID:oncUjrKC(1) AAS
>>657

よくわからないのだけど、ウィンドウのサイズは640*480ではないの?
もしそうならわざわざ切り抜いて表示する必要があるのかどうか。
660: SGGK ◆6pZCoAtaxk 2009/03/22(日)22:06 ID:KdhPxjYd(1) AAS
>>659
フィールドがウィンドウサイズより大きい場合にウィンドウの外にあって見えないフィールドの部分を表示させる方法として、
1.フィールドの原点座標を移動させて、見せたい部分がウィンドウの位置に来るようにする。
2.フィールドの原点は移動させないで、表示させたい範囲(640x480)を指定してウィンドウのある位置に持ってくる(表示させる)
を思いついたのですが、たぶん2.の方がアドバイスに近いと思うし、自分も2の方が直感的かもしれないような感じがしたのが理由です。

今日はとりあえず準備として選手の移動関数内にある選手座標の計算部分と描画部分を分離して別々の関数にしようとしたけど、なんだか失敗。
14歳シリーズがかろうじて分かるかどうかなレベルなので1から自分で書こうとすると結構ハマる。早くても1ヶ月位は掛かると予想してます。
661: 436 2009/03/23(月)01:37 ID:i8724I4G(1) AAS
構造を整理中
662: せいれい 2009/03/23(月)02:45 ID:OY/0+Xwu(1) AAS
主人公の服装がはっきり決まっていなかったので考える(・∀・)絵描き練習も
663: ◆Fp.xSEIREI 2009/03/23(月)23:34 ID:sn4mHp6u(1) AAS
敵機のオプション呼出&操作関連の不具合修正中(・∀・)
親機が生存していて子機が破壊された時、親機を破壊するか
親機が破壊されて子機だけになった場合、子機を破壊するか
親機が破壊された場合、子機及び孫機を破壊するか
子機が破壊された時、孫機を破壊するか
孫機が破壊された場合、その孫機の親機を破壊するか、また上の親機に影響がうんたら

柔軟な対応ができるようにいろいろ(・∀・)
664: SGGK ◆6pZCoAtaxk 2009/03/23(月)23:48 ID:g0cKOg9Q(1) AAS
す・・・進んでますね〜。こちらもなんとか1ヶ月でスクロール?というかカメラ移動の実装を終わらせたいです〜。

昨日の作業はちょっと中断。画面があまりに遅いので調べたら、毎フレーム呼ばれるmove関数内でフィールド画像をロードすると同時にグラフィックハンドルを設定し、
そのグラフィックハンドルを元にフィールドを描画してた。load関数で1回だけやればいい画像データのロードを毎フレーム毎にやってたから遅くなったと思われる。
それを直したら今度は背景が真っ黒になった。ソースをよ〜く見てみたら、load関数内でグラフィックハンドルをフィールドオブジェクトの中にあるグラフィックハンドル記憶用のメンバ変数にインプットしてたのに対し、
その次の初期化用init関数内でいったんフィールドオブジェクトをクリアして新しい初期値を入れるようにしていたのでグラフィックハンドルが消えてしまってたのが理由だと分かった。
では何故今までは問題無かったかというと、load関数内でグラフィックハンドルはパラパラアニメ用のanimedrawクラスのオブジェクトにあらかじめインプットしてあって、このanimedrawオブジェクトのアドレスを
init関数で渡す仕様になってたのでload関数内で設定したグラフィックハンドルが失われなかったというワケ。
省3
665: 436 2009/03/24(火)01:33 ID:jDJLGX1a(1) AAS
自作関数を使いまわしやすい様に全体的に書き加え
666: ◆Fp.xSEIREI 2009/03/24(火)04:43 ID:UHqomJ90(1/2) AAS
レーザーを出しまくって負荷テスト(・∀・)CPU:Celeron420_1.6Ghz、GPU:Geforce8400Gs
180〜240本程度が進行に支障が出ないレベルっぽい(・∀・)てか避けれん
重いのは当たり判定の処理部分。改善の余地アリ
667
(2): ◆Fp.xSEIREI 2009/03/24(火)21:31 ID:UHqomJ90(2/2) AAS
画像リンク[jpg]:www.dotup.org
ちょっと吸い込まれる弾幕つくってみたら難しすぎワロス
668: SGGK ◆6pZCoAtaxk 2009/03/24(火)23:26 ID:21U+sbRD(1) AAS
>>667
レーザーで囲まれた範囲内で弾を避けるのは確かに難易度高そう〜!

こちらはanimedrawクラスの中身を復習。14歳シリーズC++本の内容ほとんどそのままブラックボックス化して使っていたので忘れてたw
animedrawクラスのメンバ関数にDrawRectGraphを使えるタイプを追加したいけど、まだ出来ず・・・orz
明日こそは・・・。
669: 436 2009/03/25(水)01:00 ID:Jg8PCKop(1) AAS
音量調節のスライダーを組み立て中
非アクティブでも鳴り続ける音をどうすべか・・・
>>667
綺麗だな〜
670: SGGK ◆6pZCoAtaxk 2009/03/25(水)23:41 ID:uzaiQ2SM(1) AAS
animedrawクラスのメンバ関数にDrawRectGraphを使えるタイプを追加は出来た感じ。
DrawGraphを使ってる関数をコピペして、内部のDrawGraphをDrawRectGraphに置き換え、増えた引数をそのまま書き写すしか方法が思いつかなかった。
まだ宣言と定義をしただけでメインループに組み込んで無いので、画面の背景は真っ黒・・・orz
671
(1): 436 2009/03/26(木)01:33 ID:YmOeMxyW(1/2) AAS
仕様考えてて作業進まず・・・
672
(2): ◆Fp.xSEIREI 2009/03/26(木)03:53 ID:czG9RriZ(1) AAS
風邪引いてダウン/(^o^)\
673
(1): SGGK ◆6pZCoAtaxk 2009/03/26(木)23:24 ID:QVDae7NZ(1) AAS
>>671
仕様どうしようかと気にしつつ自分はまだやってないです・・・orz。
>>672
こちらも鼻の調子がイマイチで花粉なのか風邪なのか微妙な感じw

昨日の関数、なんとか組み込めた感じ。最初はvectorがどうのこうのというエラーが出たけど、
load関数でグラフィックハンドルを取り、それをinit関数でインプットする部分が他のオブジェクトでどの様に書いていたかを見比べて、
違う所を直したら動いた。コピペで直って運が良かったw。
省2
674: 436 2009/03/26(木)23:38 ID:YmOeMxyW(2/2) AAS
>>673
どうもスッキリしないので、思い切って全部書き直す事にしました!
>>672
油断すると夜はまだまだ冷え込みますよね
675
(1): SGGK ◆6pZCoAtaxk 2009/03/27(金)23:16 ID:4nVo0lze(1) AAS
こちらもかなり書き直しになりそうです。今日は停滞・・・orz

とりあえずやろうとしてるのは、
現状のプログラムでは、各オブジェクト(選手、ボール、ゴール、フィールド)それぞれにmove関数があって、
move関数内でループ毎に座標計算と描画を行い、その後atarihantei関数で各オブジェクト同士の当たり判定してるのを
新たにカメラのクラスを作り、メンバ関数にはmove関数とview関数を用意し、
カメラオブジェクトのmove関数では座標計算のみ行い、view関数では画面に映る対象となる全てのオブジェクトの座標を引数に取り、
カメラ描画用に座標を変換し描画する様に改造する事を考えてます。
省2
676
(1): 436 2009/03/28(土)02:19 ID:yLCMKlEA(1) AAS
調整しつつ復元〜
677: SGGK ◆6pZCoAtaxk 2009/03/28(土)23:46 ID:7UqHBkKX(1) AAS
何も進まなかったのでどうしようかと思ったけど、とりあえず書き込み・・・orz
考えが整理できないのでフィールドの枠とカメラの枠をノートに書いて
座標をどの様に計算してやればよいか整理してからやってみる予定。
678: ◆Fp.xSEIREI 2009/03/29(日)02:33 ID:DbfbvsH9(1) AAS
絵描き練習がてら主人公の服装をうんたら(・∀・)
人体デッサンムズカシ
679
(1): SGGK ◆6pZCoAtaxk 2009/03/29(日)23:21 ID:wYbE8fnF(1) AAS
いよいよアニメ化ですね!

こちらは生存報告・・・orz
一応ノートに書いて頭の中身を整理しようとしたものの、
選手の移動関数については何種類かパターンを選べるようにする方法を組み込んであって、
そういう場合、座標計算と描画の処理をどうやって分離するかが思いつかず、進み具合というか制作の動きが鈍くなってマスw
680
(2): SGGK ◆6pZCoAtaxk 2009/03/30(月)23:51 ID:XCZeuneq(1) AAS
今日も極めて短時間作業。
まずはcameraクラスを宣言するための中身が空のcamera.hを作りvc++2008に認識させようとしたけど、それをやるだけで時間掛かった。
ある程度の使い方ぐらいは本なりホームページで調べてから作業した方が結局早いかもしれないけど、今は我慢。今日はこれだけw

きちんとした設計法や手順を身につけていないので、まずは最低限なところから実装する作戦に変更。
cameraクラス宣言、メンバ関数move、viewの宣言と定義、move関数ではwasdキーで上下左右にカメラを動かし、
view関数では座標変換をまだやらないで、今まで作った各オブジェクトに付いているdraw処理をcameraクラスのview関数に集め、そのまま表示させる。
ここまでを目標にしてみるつもり。
681
(1): ◆Fp.xSEIREI 2009/03/31(火)05:59 ID:hkAyxn74(1) AAS
>>679
いやいやw
立ち絵とかドット絵の元ってことで設定資料的な絵がいるのだ(・∀・)
682: SGGK ◆6pZCoAtaxk 2009/03/31(火)23:50 ID:gUhbpo9X(1) AAS
>>681
なるほどw
こちらは絵が全く描けないのでうらやましいです〜。

今日も短時間。camera.hをcameradata.hに名前変更し、中身を記述して終了。
683: ◆Fp.xSEIREI 2009/04/01(水)05:52 ID:11Jt2sMt(1) AAS
敵ショットのway数を指定するとき 360/nWAY で余りが出る時弾の間隔がおかしくなるバグ修正(・∀・)
なるほどね、計算に用いる変数にint型があったら勝手に整数に丸められるのね
684: SGGK ◆6pZCoAtaxk 2009/04/01(水)23:28 ID:TmemOZyG(1) AAS
コンパイルする時に
 warning C4244: '初期化中' : 'float' から 'int' への変換です。データが失われる可能性があります。
という警告が10箇所程残ったままなので自分のプログラムも何かあるかも・・・orz

短時間作業〜。cameradata.hはメンバ変数のみのクラスCameraDataを宣言と定義しただけなのでcppファイルは無しで終了。
このCameraDataクラスで作成したオブジェクトcameraをメンバ変数に持つCameraConrolクラスの中にメンバ関数としてmoveとviewを作り、
オブジェクトcameraの中身(x,y座標とか)を色々操作する感じ。まず宣言が必要なので、cameracontrol.hを考え中〜。
685
(1): 2009/04/02(木)14:53 ID:1p+x1WGA(1) AAS
floatは不動小数点以下含む
intは(-入れて)整数
あと桁数が違うので確認を
686
(1): SGGK ◆6pZCoAtaxk 2009/04/02(木)22:23 ID:unMQyLeP(1) AAS
>>685
ありがとうございます〜。プログラムの警告が出ていた行をざ〜っと見てみました。
ほとんどが選手の足元の当たり判定の四角範囲の上角と下角の座標を計算する為の部分で
int=float+(int-int)/2 見たいな式ばかりでたぶんfloatの小数点以下がintにインプットする時に消えるという意味だと思われます。影響は無かった感じ。

cameracontrol.hの中でCameraConrolクラスの宣言終了。今度はcameracontrol.cppの中でCameraConrolクラスに入ってるメンバ関数moveとviewの定義を書き始めるところ。
687: 2009/04/02(木)23:31 ID:8QbRICGr(1) AAS
>>686
そういうのは一応キャストしといた方がいいと思うよ
警告もなくなるし、見た目の意味も分かりやすいし
688: SGGK ◆6pZCoAtaxk 2009/04/04(土)00:01 ID:hNPD7Jdr(1/2) AAS
全部floatにすればいいかと思ったけど、時間が掛かりそうなのでキャストのやり方を調べてそれで対応する方にしました。
型だけ書くと下の様な感じで警告が消えました〜。
int=(int)float+(int-int)/2

cameracontrol.cppが出来たのでコンパイルするとエラーが150個程発生。
ヘッダファイルの入れ忘れ、アロー演算子とドット演算子の使い分けミス、名前の間違い、引数の取り方の間違いが原因で
コンパイルは通る様になったけど、何故か背景が真っ黒・・・orz
689
(1): SGGK ◆6pZCoAtaxk 2009/04/04(土)00:52 ID:hNPD7Jdr(2/2) AAS
>676
も・・・もしかしてアクセス規制でしょうか・・・。

背景真っ黒のバグ取れず・・・orz
明日休みなのでもう少し粘ってみたけど、さすがに無理だった。(寝ますw)
690
(1): 436 2009/04/04(土)01:11 ID:a3c5eCH1(1/2) AAS
規制に巻き込まれたので、ここぞとばかり制作サボってCの勉強をしてました
関数ポインタに衝撃!関数を変数の様に扱えて、関数に引数として渡したり出来るなんて面白いな〜
691
(1): 436 2009/04/04(土)01:13 ID:a3c5eCH1(2/2) AAS
>>689
リロードしてなかったwすいません、携帯は打つの遅くて億劫なんで・・・
692: SGGK ◆6pZCoAtaxk 2009/04/04(土)19:06 ID:ITHEsVxa(1) AAS
>>690,691
規制解除されて良かったですね〜。
関数ポインタ、ネットでどんなのか見てみました。む・・・難しい。
自分の本は初級用で古かったからなのか関数ポインタ出て無かったし・・・orz

背景真っ黒バグやっと取れた〜。一言で言えば、初期化の順番が間違ってたのが原因。
カメラの移動計算をする時に
if(カメラX座標>カメラX座標最大値){カメラX座標=カメラX座標最大値} 
省10
693
(1): ◆Fp.xSEIREI 2009/04/04(土)20:30 ID:mfukvvdc(1) AAS
自由落下(放物線?)っぽい移動について色々(・∀・)
計算式はまぁわかるけど座標の移動結果の計算がいつもの移動計算と違って独立してしまうからちょっとややこしい
694
(1): 436 2009/04/05(日)01:10 ID:/KqnkQ7k(1) AAS
今までは1つの処理をゴトッとまるごと書いていたのを、細かくパーツ分けして関数化し
関数を組み合わせて1つの処理をさせる様にする事にしました
汎用性を持たせる為の工夫が楽しいやらしんどいやらー
695: SGGK ◆6pZCoAtaxk 2009/04/05(日)23:22 ID:RpKryXFj(1) AAS
>>693
自分も移動処理を別のファイルにして呼び出す書き方(14歳シリーズの方法)にしてから
まだ慣れてなくてややこしさがありマス。
>>694
自分もプログラムのパーツ分けを見直したい〜。自分のプログラムはちょっと直すとすぐバグが出るのでw

背景真っ黒バグ取れた直後にまたバグ出てなんとかしようとしたけどダメだった。
背景は表示されるけど、WSADキーで背景が上下左右しないバグが取れず・・・orz
696
(1): 436 2009/04/06(月)00:29 ID:EhdKUx2o(1) AAS
構造体?普通に配列で事足りるしなぁ〜、と思っていたけれど・・・
関数の使い回しを考える様になって一変しました。 あれはいいものだ!
697
(2): せいれい 2009/04/06(月)02:26 ID:7OvX1Q9e(1) AAS
HSPからCに移ってきた俺は構造体や関数が便利過ぎて吹いた(・∀・)

全部配列変数で弾幕やら敵やらを制御していた頃が懐かしい
ソース分割も無かったから超スパゲッティ
関数もないからサブルーチンで頑張ってた
698
(2): SGGK ◆6pZCoAtaxk 2009/04/06(月)22:36 ID:L94mWUrW(1) AAS
>>696>>697
う・・・、C中心の方が良さそうな気がしてきました。
今のプログラムは14歳シリーズC++の影響があまりにも尾を引いているんだけど、
ちょっと直すとものすごいバグが出てしまうので、もう少し粘ってみて、もしもの時はリセットするかも・・・。

バグはなんとか取れました。大雑把に書くと、
int df =(1フレームの移動量計算);
カメラx座標 = カメラx座標 + df;
省3
699
(1): 436 2009/04/07(火)00:59 ID:RGk6l7e7(1) AAS
Cの勉強しながら汎用性の試行錯誤中です
>>697
HSPが大規模向きじゃないって理由が解りました;
700
(2): 2009/04/07(火)06:20 ID:ZOHu96Bt(1) AAS
>>698
C++でC書けばよかろう。BetterCって言われるような。
基本的にCのソースそのまま実行できるように設計されてるから
メモリ確保まわりとかCの嫌な部分だけ無視して組める。
701
(1): ◆Fp.xSEIREI 2009/04/07(火)06:57 ID:5xr5xfqQ(1) AAS
>>698
俺はクラスとか一切使ってないぞー(・∀・)
>>700の言うBetterCってのだ
C++独自の算術関数使ってるくらいかな

>>699
大きくなればなるほどものすごく複雑になって行ってシューティングがそれっぽく動く段階までですでにスパゲッティに…

ググると痒いところに手が届く関数がぽんぽん出てくるなー(・∀・)fmodとか
702: SGGK ◆6pZCoAtaxk 2009/04/07(火)22:54 ID:YiJ6Svh6(1) AAS
>>700
BetterCをググってみました。もしかすると自分のプログラムもどちらかといえばBetterCかもしれません。
一応クラスは使ってるけど構造体に関数が入ってるような感じの使い方しかしてないし、中身はCで書いてるし・・・。
今、自分がプログラムを難しく思っているのはもしかするとCかC++かの違いとは他の所に原因があるのかもしれません。
それが何なのかはまだ今の所わかってません・・・orz
>>701
fmod、ググってみました。もしかすると余りを計算する%ってのは結果が整数値でしか出せなくて
省5
703: SGGK ◆6pZCoAtaxk 2009/04/08(水)21:59 ID:fCpceCdJ(1) AAS
昨日の自分の書き込みを振り返ると、ヒントをもらっても自分はそれを活かしてない感じ・・・orz
でも、関数ポインタ、BetterCなど、ノートにメモして忘れないようにし、レベルがUPしたら振り返ってみようと思ってマス。

(次の目標)
選手は増やさず、現状の8人のまま。ただし、表示する座標はフィールド全体に配置する。
それによって今まで初期状態で8人見えていたのが、何人かは画面外になる。
この間作ったWSADキーで背景が上下左右する機能で画面外の選手が見えるようにする。
704: ◆Fp.xSEIREI 2009/04/08(水)23:10 ID:yfenry/J(1) AAS
重力移動完成(・∀・)いい感じに動くぜ
705: SGGK ◆6pZCoAtaxk 2009/04/09(木)22:46 ID:XRDrR+gw(1) AAS
重力使えるとリアルな動きが出来そうですよね〜。ボールに使えるようになりたい〜。

選手8人を全体に配置したら失敗。画面の端に張り付いた状態になる。
これは(0,0)〜(640、480)でやってた時の選手移動関数の中に画面外へのはみ出し防止if文に引っ掛かったから。
if文を(0,0)〜(1696,1088)に対応させて問題クリア!
今はカメラ初期位置を左上にしてるので選手は1人も表示されないが、しばらくすると画面外から画面中央にあるボールに向かって画面外から現れる。
ここで今日は終了。
ここから先は、今のx,y座標は計算してもそのx,y座標で選手を表示させず、
省2
706
(1): 436 2009/04/10(金)00:18 ID:ROVk2BqV(1) AAS
また問題発生で気力が下降してます・・・
勉強だけ少しずつ進めてます
707
(1): SGGK ◆6pZCoAtaxk 2009/04/10(金)23:41 ID:UuYIO4Oh(1) AAS
>>706
自分もプログラムと勉強を交互にやるような感じでやってマス。
問題発生の時は大体このスレに書いてるような進み具合です・・・orz

今日は色々あって進まず・・・。本を少し読んで寝ます〜。
708
(1): せいれい 2009/04/11(土)20:00 ID:dyWpPb3I(1) AAS
敵制御、弾幕制御に欠陥があるかもしれないから最終チェック(・∀・)
709: SGGK ◆6pZCoAtaxk 2009/04/12(日)00:32 ID:v5S174j3(1) AAS
>>708
最終段階ですね〜。こちらも頑張ります〜。

頑張ると言ったものの今日(昨日)は>680で言っていたカメラのview関数の引数を
関数内で使う為に関数内で宣言した変数に引数を代入までで、どうも集中力が出なくて終了・・・orz
勉強も少しだけ・・・。
710
(1): 436 2009/04/12(日)00:45 ID:gHLFso7W(1) AAS
>>707
ういっす。こんな時は焦らず、少しずつですね
あ〜人里離れたとこで、ひっそりとゲーム作りだけしてたい・・・
711: SGGK ◆6pZCoAtaxk 2009/04/12(日)21:53 ID:YInuLS5p(1) AAS
>>710
ですよね〜。日常のやらなければいけない事をやって、その残った時間で作らなければならないというか
作る為の勉強もしなければならないのでモチベーションの維持も必要になってきて、ゲーム作りはある意味修行かも・・・orz

今日はちょっとだけ書いてみた。カメラ範囲外の選手をカメラ移動すれば見えるようにしたつもりが、おかしくなった。
8人の選手が16人になって、要するに同じ動きをする選手が8人、少し離れた場所に出てきた。
どっちの8人が自分が書き足したプログラムによるものなのか?、もう一方の8人が何故現れるのか?がわからない。
カメラ移動で見えるようになったのかもはっきりしない〜orz どうも集中できないのでとりあえず今日はここまで〜。
712: SGGK ◆6pZCoAtaxk 2009/04/13(月)23:14 ID:7lxincl+(1) AAS
16人問題は8人に戻った。選手クラスのオブジェクト内のmove関数の中にある描画処理をカメラのview関数内にカット&ペーストしたつもりが、
コピー&ペーストだったので変換前の座標での描画処理がmove関数に残っていたのが原因。
ボール、ゴールについても同様の変更を加えているところだけど、骨の折れる作業なのでまだ途中。今日はここまで。
あとは寝る時に14歳シリーズC++を少し読むつもり。
713
(1): ◆Fp.xSEIREI 2009/04/14(火)20:13 ID:+ssrHiR7(1) AAS
そろそろエフェクト、背景部分も作り始めるからここいらで表示優先度を整理してみる

優先度 低

背景レイヤ1(背景の一番下)
背景レイヤ2(背景の上に描く背景。草とか)
グラウンドエフェクト(背景にかかるエフェクト。水の光とか)
ハイドエネミー(オブジェクトに隠れる敵)
背景レイヤ3(木や石などのオブジェクト)
省13
714: SGGK ◆6pZCoAtaxk 2009/04/14(火)23:18 ID:I4iSAa1K(1) AAS
>>713
お〜、さらにディテールアップですね。楽しみにしてます〜!。

こ・・・こちらは、ボール、ゴールの描画処理移動出来たので、コンパイル。
コンパイルできたけど、画面になぜか選手、ボール、ゴールが表示されず、
背景がwsadキーでカメラ移動できるだけ、しかもボールがおいてあるはずの中央付近に
カメラの端が来た瞬間に英語のメッセージボックスが表示されて止まる・・・orz
なかなか容易じゃない感じ。
715
(1): ◆Fp.xSEIREI 2009/04/15(水)05:23 ID:fM17nTw7(1) AAS
エスパーしてみるとそれは変なメモリにアクセスしたんじゃないかな(・∀・)
ボールとゴールを追加する時に読み込み処理の部分をミス?
716: SGGK ◆6pZCoAtaxk 2009/04/15(水)23:12 ID:CRJPsQ0r(1) AAS
>>715
ありがdです〜(←2ちゃん風)、>577の頃のバグと似た感じでした。

(間違い)
if( ボールとカメラ範囲の当たり判定式){
(*it).anim->draw(0, (*b).getx()-camera.x, (*b).gety() -camera.y);//ボール座標をカメラ内で見た時の座標に変換して表示する。
}
(正解)
省9
717
(1): SGGK ◆6pZCoAtaxk 2009/04/16(木)22:55 ID:oOQiiACl(1/2) AAS
今日は進まず・・・orz
>620の頃からカメラ移動の実装を始めて最終版ではないけど、とりあえずwsadキーで
カメラを上下左右させて画面より大きいフィールドの表示が出来るようになった感じ。
ヒントもらったりしてるのに6週間くらい掛かってる。(プログラムは難しい〜)
目標である「オンライン3D対戦サッカーゲーム」はいつになったら出来るのだろうか。
あと何年かかるのかな〜。と・・・とりあえず次の目標ははっきりとはしてないけど、
今のカメラも完全ではないので少しずつ修正をしつつ、今度は、選手の動きについて考えてみる予定。
省5
1-
あと 267 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s