トップページ⇒tech
1001コメント487KB

貴様ら!ブロック崩し作るので見てください

■ このスレッドは過去ログ倉庫に格納されています
0001ヒッキー@プログラミングNGNG
VBでWinAPIを使う方法がわかってきたので
作りたくなりました。

Bitbltなど使う予定ですが、細かい技術がないので、
小出しにプログラムしようと思います。
(タマが動くだけとか、キーボードで自機を動かすだけとか)

オナーニスレだけどよろしくね。
0497デフォルトな名無しさんNGNG
>>496

優良スレたてるまで出られないとか。
0498デフォルトの名無しさんNGNG
>ヒッキー@プログラミング氏
どんどん挑戦する事が大切!ですね。
>>493氏の提案している迷路なんてどや(藁

# でも騙りも出ずにってすごいなぁ(藁
0499458だったものNGNG
挑戦することが大切か…最近その心意気を忘れてる気がするよ。
俺もここで何かやってみるかな。しかし受験もあるし。

鬱堕詩嚢
0500デフォルトの名無しさんNGNG
>>500get !! (藁
挑戦すること…ですね。
折れも受験だしなぁ。来年、ガンバロ〜っと。
0501デフォルトの名無しさんNGNG
受験を来年頑張れ♥
0502デフォルトの名無しさんNGNG
>>501
受験を来年って浪…(自粛)…じゃん(藁

それはそうと、電子投票ほうが成立したね。
┓(´д`)―y。o(どうなるんだろ?)
0503ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/
↑次うぷしました。変更点は

・ソースの部分的なモジュール化
・NativeCodeコンパイルに変更

です。見た目と動きはほぼ変わりません…。

>>491
ほおほお。中間コードを吐く方法でよかったですか。
自分で変なこと言ってたらどうしようとか心配してました。
スレ、読んでみます。ありがとうございます。
>>492
了解。Cの方向で。
>>493
やっぱインタプリタは難しいですか…。
迷路でも、ちゃんと完成させるのがムズカシそうだ。
一回、作ってみようと思います。
>>494
いくつもゴールへのルートがあると難しそうですねー。
僕も関西人です。
>>495
3D…がんばれゴエモンみたいなやつですか。
>>496
あー、2chにカキコできるサイズのものだったら面白いですね。
>>497
どういうゲームなんでしょうか(w
最良スレの定義がわからない…
>>498
ういー。どんどん挑戦してみようと思います。
体力が続く限りやります。
>>499
受験生ですかー。たいへんですね。
プログラムはいつでもできるので、まっとうな道を進む事をお勧めします。
僕みたいになると、先が見えないので大変です。
>>500
おぉ、受験生多いなぁ。
やっぱ数学してないと大変です。数学がんばってください。
>>502
電子投票ってどんなんでしょ?
選挙でつかうんでしょうか。
0504458そのものNGNG
これも道の一つだと思ってる自分は、終わってるんでしょうか(藁
しかも受験は受験でも高校受験だったりして。
ってスレとは完全に関係ないのでsage
0505デフォルトの名無しさんNGNG
折角ブロック崩しでやってきたんだから ブロック崩しを他言語でやってみる方が違いが判っていいと思うけどなあ
で、VBから一番移動し易いのはやっぱりDelphi。
  Cマガの付録CDに入ってるんだから、お金もそんなにかからんし
 ソースを見る限り VBにしかないselect文とか使ってないから Delphiには殆どそのまま移植可能
 簡単でないのはコントロール配列の扱いくらいかな

それに VBとDelphiの比較サイトは結構あるし
ttp://www.threeweb.ad.jp/~satou/delphi1.htm
ttp://www.ab.wakwak.com/~greenspace/dev-api/develop/step_1.html
0506デフォルトの名無しさんNGNG
言語の違いを学ぶより、アルゴリズムとデータ構造の方が大事だろ。
0507一応プロNGNG
>>1
インタプリタの見本っぽいの作ったけどいるか?構文解析の参考になると思う。
インタプリタっつーか、式を入力してそれを計算して結果を表示するだけだけど。

例えば、
>3*(2 + (a - 2) % 3)
と入力すると、
a =
となるので、aに値を入力。
すると答えが表示される。

ただし、入力できる式は、リテラル整数は1桁のみ、変数はa-zA-Zの52種類。
演算子は、+-%*/の5種類。

# ろくな字句解析してないのに4時間もかかった・・・。コード的には300行弱。
0508一応プロNGNG
あ、なんか否定されてた(´Д`;)

インタプリタと言ってもピンきりだよ。

add 1 1

とかを解析・実行して結果を2と表示するものとかなら簡単でしょ?
そういうとこから始めたらいいよ。
0509デフォルトの名無しさんNGNG
>>507
どうでもいいけど、それってインタプリタじゃなくて電卓って言わない?
0510デフォルトの名無しさんNGNG
>>509
電卓もインタープリタの一部ともいえる
0511デフォルトの名無しさんNGNG
>>509
いちおう構文解析が入る(演算子の優先順位を考慮に入れる必要がある)から
単なる電卓とは違うけど、そこから言語処理系への道はかなり遠いよな。
0512一応プロNGNG
>>511
再帰下降解析すれば、そう遠くないよ。

言語処理系として難しいのは最適化あたりじゃないか?
あと、エラー処理かな。エラーが起きたら中断するだけなら簡単だけど。
最適化まではやったことないから知らんけど。

中間コードを生成して、それを解釈実行するところまではそう難しくないって。
そこまでは別に難しいアルゴリズムなんてないし。
0513374NGNG
あ、第28段がうぷされてる。ただいま階拝見中...

おっ、名前付けをちゃんとしたんだね、なかなかみやすくなったんじゃないかな?
おおぅ、ブロックをモジュール化したんですね。
よく見てないんですが、いいんじゃないですか。

気になった点をいくつか、Form_Initializeの
   'ここにループを書くとウインドウ描画前に始まってしまうので、
   'タイマー使用
   TmrCallMain.Enabled = True
は画面が表示されずにMainLoopに入ってしまうんでやってるんだと思うんだけど
その場合は、Initializeでフォームを Show して DoEvents かませば大丈夫です。
   Me.Show
   DoEvents
   MainLoop
とこんな感じで書けばいけると思う。

あとは重複して書いてるところが多い。
   With tmpRect
      .Bottom = 220
      .Left = 250
      .Right = 310
      .Top = 140
   End With
これはいっぱいあるんで、
tmpRect = MakeRect( 220,250,310,140 )
とこんな感じのRECTを作る関数を作った方が良いです。
小さい物でもいっぱいあると曲者です。

後はある特定のボタンが押されているときの速度を
変える処理はこんな風に書けばよいです。

   Dim MoveSpeed As Long
   MovdSpeed = 2                   '通常移動速度
   If Press.Shift Then MoveSpeed = MoveSpeed * 2   'SHIFTが押されているときは2倍
   ElseIf Press.Ctrl Then MoveSpeed = MoveSpeed * 3 'CTRL が押されているときは3倍

   If Press.Left Then
     Paddle.X = Paddle.X - MovdSpeed        'この辺を変数に変えてみた
     If Paddle.X < 0 Then Paddle.X = 0
   ElseIf Press.Right Then
     Paddle.X = Paddle.X + MovdSpeed        'この辺を変数に変えてみた
     If Paddle.X + Paddle_width >= Game_area Then Paddle.X = Game_area - Paddle_width
   End If

重複する処理は書いてはいけない、修正や変更が大変になります。
ちょっとづつ値が違うような処理は変数をうまく使えばひとつにまとめられます。
似たような構文が続くものは必ずうまく書く方法があるのでそこに注意してみてください。

あと、実行させると自機が自動で左に移動します。
カーソルきかないっす。仕様ですか(笑。
0514ヒッキー@プログラミングNGNG
>>504
挑戦する事を忘れるのはまだ早いですよ(藁
高校受験ですかー。たいへんですね…。
その頃、今まで生きてきた中で一番勉強してた時期のような気がします。
吸収が良い時期なので、なんでも勉強した方がいいかもしれませんね。
>>505
Delphiは…VBと同じような位置付けに感じるので、やっぱやめとこうかと
思っています。他のOSでもDelphiが使えたら考えるかも。
あ、パスカル言語という風に考えたら検索したら見つかるかもしれないですね。
>>506
はい。アルゴリズムを覚える方をかんばります。
>>507-508
おぉ、ありがとうございます。
見せて頂けるなら欲しいです。
いきなりインタープリタと考えると難しいけど、一個一個解決して
いけばいいんですね。
>>511
うーん、やっぱインタープリタの道は険しいのか…
>>512
最適化って、どの変数にレジスタを割り振るかとか、
ややこしそうな処理のことでしょうか…。
>>中間コードを生成して、それを解釈実行するところまではそう難しくないって。
ほおほお。なんか安心しました(w
>>513
おー、具体的な例を挙げて、教えてくださってありがとうございます。
たしかに重複する箇所が多かったと思います。
RECTのところ、おっしゃる通りに変更してみたら、読みやすくなりました。
他の所も修正しようと思います。
あ、あとForm_initializeのところ、書き直したらいけました。
なぜか前にやったときはうまく逝かなかったんだけどなぁ…うーん。
0515ヒッキー@プログラミングNGNG
あー、そういえば左に動くのは、JoyStickに対応しようとしたから
でした…。joyStickの関数がちゃんと値を返してくれないような…。
もしくわ僕の書き方が悪いのかもしれません。
とりあえず、一時的に消します。
0516一応プロNGNG
>>1
ほれ。
ttp://www2.makani.to/akutoku/upload/dat/1007214743.lzh
パッと見て悪いと思う部分は真似ないように!

ダウンしたら>>1のサイトで配布しても良いよ。
上のが消えてもダウンできるように。
0517一応プロNGNG
あ、>>516のコードは中間コード生成してないから。
0518デフォルトの名無しさんNGNG
>>516
> ファイルへの直接リンク(アップローダのページからクリックすれば、見れます)
と言われて拾えないんだけど。2:00 以降になれば OK?

>>512
> 再帰下降解析すれば、そう遠くないよ。
ま、数式の解析から言語処理系への過程が遠いか遠くないかは、実物を見て本人
が判断すりゃ良いやね。(俺は遠いと思うけど)

前に勉強がてら書いた Pascal ライクな処理系のコード置いときます。中間コードの
生成と、コンパイル時に 1 + 1 を事前に 2 と置き換える程度の簡単な最適化が入っ
てます。
http://members.tripod.co.jp/lambda_func/pc.zip

#TRY - CATCH とかはお遊びで書いてるので、真似しないようにね。
0519374NGNG
JoyStickに!?
すごいなぁ。どんどんやってください。
二十歳の実務経験なしでここまでできるとは驚きです。
ソース見てると、欲しいところにうまくコメントを書いているし、
いろいろ調べ物もうまいみたいだし、成長も速いし、
いいなぁ欲しい人材です。ウチの新人もこうであれば...。

あと、インタプリタやらなにやら話があがっていますが、
あなたの好きなところからプログラムをやっていくことがいいと思います。
好きなことをやってると成長は速いです。
APIに興味があるようなのでそちらで何かやってみては?
0520一応プロNGNG
>>518
俺はHSP程度なら数式解析とたいした差はないと思ってる。
というか、やってみたら意外と簡単だったっていうのが正直な感想。
# それまですごく難しいものだと思ってた。

もちろん言語処理は奥が深いからピンキリだね。
>>518の"遠い"と言うのはそういうことかな?だったら激しく同意。

実は俺はまだ言語処理系触れ始めと言っていいくらい。
yaccとかlexは使わないで1からゴリゴリ書いてるけど、再帰下降解析
はほとんど差が無く感じるな。管理するデータが多くなったくらいで・・・。

あ、ソース頂きました。

>>519
ま、結局は>>1次第だね。
でも言語処理ってゲームで生かせると思う。
俺も20歳なんだけど、どう?(笑)
仕事中に2chに出入りしてる人間はダメ?

# いちいち長いな(´Д`;)
0521名無し@就職活動中NGNG
>>519
やっぱ現段階でそこそこできるやつよりも、
1氏のように頭のきれる人のほうがいいですよね・・・

>>1
あなたの情熱がうらやましいです。がんばってください。
0522 NGNG
>>521
新卒なら確かにそうだけどな。

でも>>1や>>518や>>520を目の当たりにして、僻んでるだけの>>521は一番
いらない存在だな。

こんな時間に起きてる俺もいらないな。
0523ヒッキー@プログラミングNGNG
今日は一日中寝ていました。

>>516
どもども。いただきました。
これから拝見させていただきます。
>>518
おー、すんませんです。
いただきました。参考にさせていただきます。
>>1 + 1 を事前に 2 と置き換える
あー、定数の演算の場合、すでに計算しておくっていう方法もあるんですね。
>>519
ありがとうございます。嬉しいです。
あんまり誉められると頭に乗ってしまいます…。
>>あと、インタプリタやらなにやら話があがっていますが、
>>あなたの好きなところからプログラムをやっていくことがいいと思います。
了解しました。
インタープリタは、HSPを知ったときに、ちょっと作ってみたいなぁと
感じていたので、興味はあります。
とりあえず今はもうちょっと簡単な事からやってみようかと…。
APIでウインドウを作って、メモ帳のようなものでも作ろうと思います。
>>520
おー、ハタチなんですか?すごいですね…。
僕もいつか追いつきたいと思います。
>>521
ありがとうございます。
引きこもってると楽なので、勉強がしやすいです。
なぜか学校逝ってる時は勉強の時間に勉強しないんだけど…(藁
社会に出ると、できるかどうかわかりません。
精神的に追い詰められやすい性格なので…。
>>522
いやいや、いらないと思うよりは、できると仮定して
能力を伸ばしていく事の方が大事じゃないですか?
いらないと決めて、いらない人間になってしまったら
本当に社会にとって良くないと思います。
どのような人であれ、同じような量の食事やらをするわけですから。
マジレススマソ。
0524522@就職活動中NGNG
確かに僻んでる。羨ましいもん。
でもなーんにもしてない、ってわけじゃないよん。
つーか激しく板違いなので消えます。
0525デフォルトの名無しさんNGNG
恐らくblock28.zipが最新版だと思うのですが、
3面から出てくる金のブロックを壊した時に、画面の左上の隅に毎回黄色のブロックが出現します。
ソースを見てないけど自分の推測では恐らく金のブロックは2回当てると壊せるブロックで、
1回当てると黄色のブロックに変化させるつもりが、位置を設定してないため毎回(0,0)の
位置に誤って出現しているのだと思います。
通常じゃ配置されそうにない位置に出現するのと、他のブロックと画像が重なることがあることからそう判断しました。

けどバグじゃなくても直してほしいです。このブロックのせいで4面がいつまでたってもクリアできない…

あとバーが左端にあった時だったと思いますが、真横からボールが当たった時バーが少し壁にめり込みました。
しかしこれは別にゲームに支障がないのでバグとはいえないかな?

あと非常に面白いです。コンボで一気に点が入るところが。
0526505NGNG
>>514
>Delphiは…VBと同じような位置付けに感じるので、やっぱやめとこうかと
>思っています。他のOSでもDelphiが使えたら考えるかも

 同じといえば同じだけど・・・・・まあいいか・・・
もしC++で躓くようならDelphiを経由するといいよって感じでね
0527デフォルトの名無しさんNGNG
んー、どの言語でも最終的に機械語として実行されるのと同じぐらい
どのWindowsアプリも最終的にAPI呼び出しで実行されるんだから、
CでAPIを叩くのはいい勉強になると思う。
API呼び出しだけでプログラミングするとなるとDelphiよりCのほうが素直
だと思うし。
そのあとC++にいくかDelphiにいくかVBに戻るかVB.netに行っちゃうかは
趣味の問題だと思うけど。
0528デフォルトの名無しさんNGNG
>>527
API呼び出しってのが 猫でものように、SDKレベルのメッセージループを直に書く
ことだとするならDelphiでも素直に書けるよ。

ただし、Cの方がオフィシャルな参考書があるという事が大きいね
 Cの文法も判らないと勉強出来ない。だから必須という事なら賛成するよ。

個人的には VB->C->Delphi->Java->C++の順に学ぶのが王道だと思ってるんだけどね
0529デフォルトの名無しさんNGNG
>>528
A、B、Cの順番を踏襲したからなぁ。
0530クロスボウとやらNGNG
おいら的には
VB->Delphi->C->Java->C++
が良いと思われ。
0531デフォルトの名無しさんNGNG
>>528
Delphiは余計
0532デフォルトの名無しさんNGNG
すすめるのは結構だがRADとそうでないので区別した方がいいと思うが。
漏れはVB->C++でいいと思う。
っていうか、移る前にVB使いこなせっつーの。
VBでDirectX。これが通の頼み方。
0533デフォルトの名無しさんNGNG
>>531 そうか? 俺は色々な面で勉強になったよ。
 今でも自作ツール作る時はDelphiだ。
0534ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/
↑次UPしました。変更点は

・ボールを3つ同時に出せるように変更
・ボールを全て回収したらステージクリア

です。最後に回収しないといけないようにしました。

>>524
がんばっていらっしゃるなら、前向きになられる事をお勧めします。
後ろ向いて勉強したら自分にとって負担になると思います。

>>525
どうもすみません…変な位置にブロックが移動する現象、直しました。
バーの横からボールに当たったとき、ちょっと動いてしまうような
ソースを書いているのですが、自分でもちょっと変だと思っています…。
直そうかな。
>あと非常に面白いです。コンボで一気に点が入るところが
ありがとうございます。
お褒めの言葉を頂くと、何より励みになります。
0535ヒッキー@プログラミングNGNG
>>526
ちょっとC++は敷居が高くて困っていました…。
うーん、Delphiも触ってみようかな。

>>527
そうですねー。CからAPIを呼び出すほうが簡単に感じます。
Delphiは触った事ないけど…。

>>528
あ、Delphiでも素直に書けるんですね。
だんだん揺らいできた(w

>>529
どういうことでしょう?

>>530
ほおほお。やっぱそういう順路もありなんですね。

>>532
ごめんなさい…。
VBでDirectXですかー。うーん、DirectX使うんだったら
なんとなくC覚えたいなぁ。

>>533
ツールを作るときのような手軽さはやっぱC++にはなさそうですね…。
0536デフォルトの名無しさんNGNG
>>1
早速、やってみたよ。バグじゃないけど報告
ゲームバランスの調整になるかもしれないが
玉が3つゲーム画面上にあると極端に自機の動きが重くなり
玉のスピードについていけない感じがします。
0537ヒッキー@プログラミングNGNG
>>536
ご報告ありがとうございます。
ウチの環境では遅くならないのでわかりませんでした…。
やっぱ知恵を使わないとだんだん重くなりますよね。
ソースを見直します。
0538デフォルトの名無しさんNGNG
29やってみました。
ボールが同時に出るようになったんですね。素晴らしい。
個人的にはボール同士が衝突してほしいです。

Delphi Personalは無料ですし試してみるといいかもしれません。
0539デフォルトの名無しさんNGNG
もう買われてしまったVCがかわいそう(´Д`;)
0540一応プロNGNG
背景を縦スクロールさせたり
ブロックが動いたり
ブロックからミサイルが飛んできたり


このままシューティングにシフトしていったら面白いシューティングができるかも。
0541デフォルトの名無しさんNGNG
>>535
> VBでDirectXですかー。うーん、DirectX使うんだったら
> なんとなくC覚えたいなぁ。
マジレス

DirectX 使うなら C ではなく C++。DirectX は COM コンポーネントとして提供
されてるから C++ 使わないと記法が鬱陶しい(設計をオブジェクト指向でやる
必要はないけどさ)。
0542374NGNG
おおっ、ボール3つ同時は面白い。
でも、そのおかげでオヂサンには、
1面すらクリアできなくなりました。(最高2面。鬱...

ブロック壊すとアイテムが落ちてくるなんてのは面白いかもね。
1アップとかボールが下でも跳ね返る(落ちなくなる)ようになるとか
0543ヒッキー@プログラミングNGNG
>>538
ボーランドのソフト、無償でいろいろ提供されてますね。ビクーリ。
ボールの衝突ですかー。書いてみようと思います。

>>539
実はVisualStudioを買ってしまいました(藁

>>540
スクロールしたら見た目が大幅に変わりそうでいいですねー。
ブロックからミサイル…完全にシューティング化ですね(w

>>541
ほおほお。やっぱC++ですね。
オブジェクト作るときのnewとかどうやってCで書くのかわからない…。
うーん、勉強します。

>>542
僕もクリアできなくなりました…。
アイテム出てくるともっと良くなりそうですね。
まだまだ改良の余地がありそう。
0544デフォルトの名無しさんNGNG
今回のバージョンってブロック壊した後にボール受け止めなくちゃいけないんだね。
次の面に行った瞬間死んじゃったりしたよ。キツイなぁ。これって前のままじゃだめなの?

あとボールが3つに増えると自機が遅くなるバグだけど、
ウチの環境ではマウスで動かしているとそうなったよ。キーボードだと普通に遊べる。

あとアイテムのことだけど、ブロック崩しはもともとバランスのいいゲームだと思うから出し過ぎは危険だと思うよ。
棒が長くなったりボールが分裂したりはいいけど(むしろちょっと歓迎)、間違ってもミサイルでブロックを壊せるなんてものは登場してほしくないなぁ。

最後に口調がちょっと生意気気味ですいません。
0545一応プロNGNG
>>544
>あとアイテムのことだけど、ブロック崩しはもともとバランスのいいゲームだと思うから出し過ぎは危険だと思うよ。

その考え方のほうが危険じゃないか?発想力が乏しくなりそう。
個人の好みだけど、そういう考え方は好きではないな。

「ブロック崩しはこういうもの」とかいう定義は勉強中のプログラマにはして欲しくないな。
それはゲームを"するだけの人間"に任せておけばいいだろう。

仮に「ミサイルでブロックを壊す」という機能を実装して、ゲーム性が損なわれたとしたら、
それを補うアイデアを考えればよい。時間は十分にあるんだから。

趣味でやってるんだから、気に入ったアイデアがあったらとりあえず実装してみれ。
0546デフォルトの名無しさんNGNG
>>545
それはそうなんですけどね。
ただ今回のバージョンアップ版をやってみてゲームバランスが崩れかかってるかなと思ったんですよ。
前のバージョンの方がよかったなって。
なんか今回のバージョンになってブロック崩し本来の面白さが欠けたような気がする。(そうはいってもボール分裂は見たい…)
けどミサイルなんて物はブロック崩し本来の面白さを完全にぶち壊してしまうような気がする。

そして一度その方向に進んでしまうと、もう二度と本来の面白さを生かすような方向には転換しない気がする。
まぁそれを1さんが見事に面白くしてくれればいうことなしなんだけど。
0547デフォルトの名無しさんNGNG
1のスキルアップの為に作ってるんだから、今はゲーム性よりもプログラム的な
発展を評価すべきだよ。
ちなみにボールを増やすのを指示したのは俺だけど、1の今の技量でいきなりアイ
テムを出すのはキツいと思ったから暫定的に今のシステムを提案しただけだよ。
もしこの先アイテムを出すとして、ボールが分裂するアイテムが出たとしても、
今の状態からなら新しいボール発生の条件を変えるだけで済むし。

今のシステムを生かすなら、得点システムを変えてコンボボーナスを無くして
変わりに飛ばしてるボールの数によって2倍、4倍の点が入るようにするのが
いいかな。あとは、ボールが2個以上飛んでる場合は右クリックしながら受けると
キャッチできるとか。

ミサイルでブロックを破壊はブロック崩しとしては常識外れだけど、それでも闇雲
に否定するのもどうかと思うよ。例えば、ミサイルで攻撃する対象はブロックでは
なくてボールにして、ボールの動きに干渉できるようにするとか、いくらでも考え
ようはあるかと。
0548528NGNG
>>531
「習うより慣れろ」  これ大抵の技術の一番の習得方法

そりゃ横に誰かいて手取り足取り教えてくれるなら別だけど、
独習なら手軽に試せて結果も満足いくDelphiを 間に挟むのは良い事だと思うよ
0549デフォルトの名無しさんNGNG
Delphi勧める人多いですね。
better VBって感じですか?
0550デフォルトの名無しさんNGNG
いや、Delphiだと無料だから 他のヒッキーも参加し易いんだろ
0551デフォルトの名無しさんNGNG
マウスのホイール対応キボンヌ
やっぱブロック崩しはローラーでそうさせねば。
0552デフォルトの名無しさんNGNG
ここのスレだと、「Delphi=楽、C++=キツい」みたいな話が多いけど、C++だって
BCBがあるのをお忘れずに。DirectXまで考えるとBorland製品は絶対に奨められ
ないが。

ただ、RAD環境ってのは、ツールみたいな標準GUI主体のソフトには便利だが、
リアルタイムゲームみたいなプログラムにはほとんど何も助けにならないよ。

それと1よ、みんなの意見を取り入れるのはいいが、自分で思いついたアイディア
も積極的に入れていった方がいいと思うよ。実装は難しそうでもここに書いてくれ
れば、実装方法やもっと簡単な代替案なんかをアドバイスしてあげるよ。
0553デフォルトの名無しさんNGNG
>>552
俺も DirectX 使う場合には、RAD はそれほど「便利」ではないと思うけどね。

DirectX プログラミングは GDI に比べると、ちと難易度が上がる。たとえば GDI だと
バックバッファへの描画は BitBlt() を呼び出せばいいだけだが、DirectX だとこれが
タイミングによっては「失敗」することを考慮する必要がある。

#GDIでも BitBlt() が失敗する可能性はあるんだが、殆どの場合は気にしなくて大
#丈夫。

たとえば DirectDraw を使う場合、IDirectDraw7, IDirectDrawSurface7 関連のメソッド
は、すべて

1. 失敗したら
2. 再描画 (RestoreAllSurfaces()) もしくは IDirectDraw7 の再初期化
3. 失敗した処理のやり直し

ってロジックを埋めておく必要がある。

今のブロック崩しのコードのようにベタにコード中に処理を記述する形式だと確実に破
綻するので、処理を同期的に行わず一旦キューにため、エラー発生を前提にキューに
ある処理を順次処理、みたいな一段高度なアーキテクチャを要求されるよ。(DirectX
は初期化だけでも、最初は面倒だろうし)
0554デフォルトの名無しさんNGNG
>>553
> 2. 再描画 (RestoreAllSurfaces()) もしくは IDirectDraw7 の再初期化
じゃなくて
2. サーフェイスの復元 (RestoreAllSurfaces()) もしくはIDirectDraw7 の最初期化
 +再描画
だな。
0555デフォルトの名無しさんNGNG
>>552
 BCBはあれはコンパイルが遅いから  変更即RUNで試すというサイクルで出来ない。

RADでもDelphiの場合は自分でコンポを容易に作れるから 画面作りの効率化
はもちろん、キャラの設定なんかもキャラをコンポ化すればRAD環境で可能
必要なら、スクリプトをプロパティに設定し設計時からキャラを動き回ったりさせることだって出来る

そういうふうにコンポーネント化してゆく事でどんどん効率的になってゆく体験は大事だと思う。
0556デフォルトの名無しさんNGNG
>>555
それはコードを書く側の問題。
VBでもCでもC++でもコードの再利用をしやすいように組む事はできる。

っていうか話し聞いてると、Delphiに浸ってたら脱初心者は無理のような気がしてくる。
もっとプログラミングそのものに浸ってから最後にDelphiでいいと思われ。

とりあえず、プログラミング入門編としてのRAD系は卒業した方がいいのでは?
0557デフォルトの名無しさんNGNG
>>552

>それと1よ、みんなの意見を取り入れるのはいいが、
>自分で思いついたアイディアも積極的に入れていった方がいいと思うよ。
>実装は難しそうでもここに書いてくれれば、
>実装方法やもっと簡単な代替案なんかをアドバイスしてあげるよ。

552さんの提案は、非常に有益だと考えます。
プログラム学習者にとってもこのスレがこういう方向に
進むことを期待します。
0558555NGNG

 VBでも Cでも 確かに再利用し易いように組む事は出来る。
 でも、それは独習で身につくのだろうか?
 指導者がついているか、適性があり経験を重ねて身につくものだと思う

言い切っちゃうとさ、管理者居なくて独習で経験を重ねてるだけじゃ VB/Cだと悪い癖しか付かないよ
 それは実際の現場見りゃ判るでしょ? 経験xx年のプログラマの作るコードがどんなものかさ

なお、Delphiでコンポを作る場面はRADじゃない。
でもその作業がスグにRADに反映してゆくから、 少しの苦労で見入りが大きい。
そういう点から学習効率がいいと思うんだ。

まあ本人の問題だから本人が決めればいいことだけどさ
0559デフォルトの名無しさんNGNG
>>558
> VBでも Cでも 確かに再利用し易いように組む事は出来る。
> でも、それは独習で身につくのだろうか?
はい。

ソフトウェアコンストラクションに関しては、管理者がいようが仕事でやろうが、本人
が勉強してコード書いて頭と身体で覚えないとダメです。RAD や周囲の環境は補助
にはなるけど、それだけで自動的にコンストラクション能力が上がるものではない。

これだけだとなんなんで、推薦図書を。推薦図書スレにも書いたので重複になるけ
ど、今の >>1 に合いそうなものを抜粋ね。

コードコンプリート―完全なプログラミングを目指して
マコネル,スティーブ ;石川 勝
アスキー (1994)ISBN:4756102107

ライティングソリッドコード―バグのないプログラミングを目指して
Steve Maguire
アスキー ISBN:4756103642

プログラミング作法
Brian Kernighan, Rob Pike
アスキー ISBN:4756136494
0560 NGNG
>>1が思いついたアイデアをココに書いて欲しいナァ。
0561デフォルトの名無しさんNGNG
そういえば、このグロック崩しで
効果音がなった時、一瞬だけ描画が止まるというか
カクッとなるの、俺だけ?
0562デフォルトの名無しさんNGNG
斜めに傾いたブロックってどうよ? /
反射のバリエーションが増えるよ。名付けてリフレクターブロック(でいいのかな?)!

あと自機を \__/ の形にするってのはどうよ。傾く角度も変わったりして。
0563超大作NGNG
10 CONSOLE 0,25,0,1:WIDTH 40,25:DEFINT A-Z
15 DIM BK(40,25)
20 LOCATE 10,10:PRINT"BLOCK 崩し"
30 LOCATE 10,11:PRINT"HIT ANY KEY!"
40 IF INKEY$="" THEN GOTO 30
50 FOR I=1 TO 25:FOR J=1 TO 40:BK(J,I)=0:NEXT:NEXT
60 FOR I=3 TO 7:FOR J=2 TO 38:BK(J,I)=1:NEXT:NEXT
70 X=20:Y=23:BX=5:BY=10:BH=1:BJ=1
80 A$=INKEY$
90 LOCATE X,Y:PRINT" "
100 X=X+(A$="J" AND X>0)-(A$="L" AND X<35)
110 LOCATE BX,BY:PRINT" "
115 IF BH+BY<1 THEN BH=-BH
116 IF BJ+BX<1 OR BJ+BX>38 THEN BJ=-BJ
117 IF BK(BX+BJ,BY+BH)=1 THEN
BEEP 1:BK(BX+BJ,BY+BH)=0:BH=-BH:BEEP 0
SC=SC+1:LOCATE 30,1:PRINT SC
END IF
120 BX=BX+BJ:BY=BY+BH
125 IF BY+BH>23 THEN END
126 IF BY=Y AND ( BX=X OR BX=X+1 OR BX=X+2) THEN BEEP 1
BH=-BH
ENDIF
130 LOCATE X,Y:PRINT"---"
140 GOTO 80

はぁ、疲れた、
0564デフォルトの名無しさんNGNG
>>563
どうやってプレイしろと・・・。
0565デフォルトの名無しさんNGNG
>>562
そもそも「ブロック」であることに拘らなくてもいいのでは?
#でもそうすると「ブロック」崩しではなくなるか(w

あと、時機も「パドル」であることに拘らなくてもいいのでは?

などなどと、考えていると面白いアイデアも出てくるのでは?

例えば…

・ブロックでなくてインベーダーだとか
・時機はパドルでなくてバット(昔の野球盤風)

なんてのは?面ごとにそんな趣向を凝らしても面白いかもね。
0566ヒッキー@プログラミングNGNG
>>544
なんか面クリアと見せかけてゲームオーバーになったりしますね…。書き直します。
前のままにすると、なんか足らない気がして、最後に受けた方がいいかなぁと。
ウチでも、マウスで動かすと遅くなりました…。気付かなかった。鬱氏
ミサイルで壊すっていうのは結構いろんなブロック崩しで出てきますねー。
僕もちょっと違和感を感じます。アイテムは何かしら出したいとは思っています。

>>545
そうですね。そういう考え方もできるのか…。ご意見ありがとうございます。
なんか、人の意見を尊重しようとするあまり、自分の意思が欠けてたような
気がします。

>>546
やっぱゲームっていうジャンル上、プログラムの実装の仕方なんて、
ユーザには何も関係ないですもんね…。
面白いものを目指す事を忘れないようにしたいです。

>>547
おー、ボールの分裂の意見をくださったかたですか。
同時に飛んでいるボールの数によって点を変えるようにしたほうが
良いかもしれないですね。必然的にユーザは
ボールをいくつも出す→危険な事に挑戦するという感じで、
面白さに繋がるかもしれませんね。
ミサイルにボールが当たると動きが変わるというシステムは斬新ですねー。
参考にさせていただきます。
0567デフォルトの名無しさんNGNG
背景に裸の女の子
0568ヒッキー@プログラミングNGNG
>>548
手軽に試せるという風に考えると、C++に逝くよりはDelphiの方が
よさそうですね。ついでに無料みたいだし…惹かれてみたり

>>549
うーん、そうなんですかね?どうなんでしょう。
やっぱお勧めになるという事は、それなりのワケがあるんだと思います。

>>550
そういう事だったのか(藁

>>551
あー、そういえばホイールついてましたね。
関係ないけど、目の付け所がシャープですね。

>>552
やっぱウインドウ作ったりボタン作ったりってゲームにはあまり
関係ない要素ですよね。作り始めてやっと気付きましたが(w
>>実装方法やもっと簡単な代替案なんかをアドバイスしてあげるよ。
ありがとうございます。
僕も何か考えて、まずここで発表してから実装に移ろうかと思います。
0569ヒッキー@プログラミングNGNG
>>553
>>DirectX だとこれがタイミングによっては「失敗」することを考慮する必要がある。
なんかむずかしそうだ…。
キューに処理を貯めて、それを実行するって複雑そうですねー。
何の機能も無い、キューの構造を作るだけでひぃひぃ言いそうなんですが(藁

>>554
サーフェイスって、メモリ上のビットマップのことでしょうか?

>>555
コンパイルする時間ってなんかドキドキします。
たいがい、凡ミスエラーだらけなんですが…。
うーん、なんかプログラムを楽しんでできそうですねー。Delphi。

>>556
いつまでもヌルい環境に浸っていたらダメかもしれないですね。
最初、ウインドウをAPIで作ったとき、驚愕しました。

>>557
僕にとっても非常にありがたいです(藁

>>558
再利用しやすいコードって、非常に難しいです。
汎用的に書いてるつもりでも、実は他のプログラムにコピペしたら
穴だらけみたいなソースをいつも書いています…。
※なんか、全てのパターンを満たすほど意見があって、自分で取捨選択
 するのが難しいんですが…。

>>559
おー、本で勉強すれば自分でもスバラシいコードが書けるように
なるもんですか。本の名前まで挙げていただいて、ありがとうございます。

>>560
思いついたら書こうと思います。

>>561
APIの呼び出し方が間違っているのか、ウチでも、ノートPCでやると
カクカクします…。

>>562
プログラム的に非常に勉強になりそうですねー。
やってみたいけれど、ちょっとまだ難しいかも…。勉強します。
0570ヒッキー@プログラミングNGNG
>>563
何の機種用のBASICなんでしょうか(藁
BEEP 1ってどっかで見たような…

>>564
PC98をおもむろに起動するとか…

>>565
自機がバットって…ワラタ。
殻をぶち破る勢いのある発想ですねー。参考になります。

>>567
そうしたいと思ってはいるんですよ。
0571デフォルトの名無しさんNGNG
>>565
つーか、そもそもインベーダーゲームってのはそういう発想で生まれたはず。
0572デフォルトの名無しさんNGNG
ちょいとシツモンです。
Javaってよくオワッテル言語と聞くのですが
皆さんはなぜ勧めるの?
0573デフォルトの名無しさんNGNG
>>572
オワッテル人たちが言っているに過ぎないため。
0574デフォルトの名無しさんNGNG
死に絶えそうな言語にこそ、新しい血が必要なのです。
メンバー集めないと廃部になるJava倶楽部。
0575:デフォルトの名無しさん NGNG
これはすげぇよ。初レスだが、すげぇよ。
徐々に成長していって、面白かったよ。
これからも頑張れよ。まじで
0576デフォルトの名無しさんNGNG
Javaは結局、Sunがトドメを刺してしまった気がする。
0577名無しNGNG
>>574
Java倶楽部が廃部になったら、どこ行きます?
0578デフォルトの名無しさんNGNG
>>572
自分だけ被害者になるのが嫌なので
初心者も巻き添えにしてやろうってことです。
0579572NGNG
うへ・・・・
0580デフォルトの名無しさんNGNG
Javaをたたくのが流行だからです。
0581デフォルトの名無しさんNGNG
>>577
今までずっと囲碁をやって来て、囲碁部がつぶれたから、
じゃあ将棋部へなんて無理だろ
って、俺は574じゃないが
0582デフォルトの名無しさんNGNG
>>581
だから、ずっと囲碁やってて囲碁部がつぶれたらどこ行くの?
0583572NGNG
やべ・・・・
喧嘩はしないで―
0584デフォルトの名無しさんNGNG
>>582
全国行脚に出る
0585デフォルトの名無しさんNGNG
>>582
ネット囲碁。
0586デフォルトの名無しさんNGNG
JAVAプログラマは諸国漫遊ですか?
0587デフォルトの名無しさんNGNG
かくさんと
すけさんを
わすれずにね
0588ヒッキー@プログラミングNGNG
Javaトークで盛り上がってますね(藁

>>571
そうなんですか?ほおほお。

>>575
ういー。がんばります。
0589デフォルトの名無しさんNGNG
仕事なら来る仕事の勉強をすればよい
趣味ならその時好きなことをすればよい

趣味は酔狂なほどたのしい
0590589NGNG
だから初心者には N88BASIC を勧めてる
0591デフォルトの名無しさんNGNG
>>589
伊達や酔狂も程々にな。
0592 NGNG
ハイスコアキボン
0593デフォルトの名無しさんNGNG
CとC++の違いを誰か語ってください。
というか今主流の言語を語れる人って居るのかな。
このスレならゲームに使われてるものか・・・・
実際このゲームはこうで・・・・とか。

ハーフライフとかKohanて奴がModに対応してるとか聞いたんですが。
そのModってなんなんですか?
3D系ならともかくKohanてゲームはリアルタイムストラテジーなんですが
何となくは解るんですが、実際Mod作ったりしてるプログラマって
いるんですかね?日本に。
CSとかとてもアマチュアが作ったとは思えない出来なんだけれど。
0594デフォルトの名無しさんNGNG
>>593
スレ違い。googleでも行くがよろし。
0595デフォルトの名無しさんNGNG
VB    APIも直接叩ける、ネイテブコンパイラでもあるが、非常に遅い。
     ゲーム作りにはそれが障害になりうる。また文法が緩く、入門者
     は早期に移動しないと悪癖が見に付き易い。
     DLLの利用は出来るが、一般的なDLLは作れない。

Delphi  APIも直接叩ける、インラインアセンブラも使える。 DLLも作成出来
     COM/ActiveXも作成出来る。 Linux用にはKylixもある。
     文法は厳しく、制御構造もVBより少ない。 またbegin/endのような
     書き方が冗長に見えるが、それが逆に冗長でないコードの書き方を
     促進しているともいえる。 ポインタと配列も完全に区別されており、
     初心者の入門言語としては良い。 さらにコンポーネント志向とも言
     えるその設計スタイルは上級者になっても利用出来、かつ他言語
     でも応用可能な身に付けてよいスタイルである。
     ただし、多くのSDKがCスタイルで提供されており、最新技術を利用
     したい場合は両方に通じていなければならない。 その移植の手間
     もDIYとなるのが苦痛な面もある。

Java  基本的にはハードは直接叩けない=制限が多い (MSのは別にして)
     しかし、ブロック崩し程度なら障害にはならない。
     開発環境としてRADもあるが、 VB/Delphiに比べると貧弱
     RADでない環境の足がかりとして良い

C/C++  windowsでは多くのSDKはほぼ C/C++ 特にVCで提供されており
     最低読めなければならない必須言語である。
     しかし入門時からどっぷり漬かると、
     配列とポインタの混同に始まり、豊富なサンプルコードの為に逆に
     コードコピペの癖やアルゴリズムのSTL依存病、などの症状にも
     かかりやすい
0596デフォルトの名無しさんNGNG
正直、このスレの >>1 にチョト感動した。
ガムバレ
■ このスレッドは過去ログ倉庫に格納されています