トップページgamedev
984コメント447KB

VB厨が作ったゲーム

■ このスレッドは過去ログ倉庫に格納されています
0001あきまさ(VB厨であり、リ厨)01/11/18 12:03ID:aaVnfHyi
VBでゲーム作ったんですけど、このゲームやってて「マジつまんねぇ」と思う。
友達(だと思ってる奴)にやらしてもつまらんとか言うし。
どうすれば面白くなるかネタくれませんか?
ゲーム名は"realUFO"。
できるだけネタ盗り込もうと思っているのでよろしく。

まぁ、自分で言うのもなんだけど糞スレの予感…。
0346あきまさ02/01/01 12:44ID:???
>>345
スマソ。
COMって何なんでしょうか?
0347あきまさ02/01/01 15:04ID:???
改良しました。

・敵それぞれにに氏にかたがある
・画像をありがたくいただいたものに差し替える
・テスト用としてA:敵出現

です。
http://blue.ribbon.to/~akimasa/

頂いた画像が16色で書かれていたことに気づき、ショックを受けました。
あと、COMっていうのは何の事なんでしょうか?
検索してみてもイイサイトが見つからない…。
0348名前は開発中のものです。02/01/01 15:31ID:???
COM=コンポーネント オブジェクトモデル
MSは手を変え品を変え色々やってるってことで・・・

MSのCOMについてかかれたHPにいけばわかるよ
ttp://www.microsoft.com/com/default.asp
0349あきまさ02/01/01 15:37ID:???
>>348
おぉ、情報提供ありがとうございます。
見てみます。

ところで、音をつけようと効果音が置いてあるサイトを巡回しているわけなんですが、
なかなかイイサイトが見つかりません…。
どこかオススメがあったら教えてください。
お願いします。
0350あきまさ02/01/01 15:39ID:???
って、英語ですか…。
自分じゃ読めませんね…。
0351あきまさ02/01/01 16:27ID:???
また改良しました。
今度は音が鳴るようになりました。
ザ・マッチメイカァズなるサイトから音をパクってきました。
感謝。

http://blue.ribbon.to/~akimasa/
0352あきまさ02/01/01 18:13ID:???
だらだら改良を続ける…。

・datディレクトリに"bgm.wav"なるファイルを置くと演奏される
・タイトルの表示

です。
プログラミングは一人で細々やって逝く感じ…。

http://blue.ribbon.to/~akimasa/
0353あきまさ02/01/01 19:59ID:???
高速化の余地がありそうな部分があったら教えてください。
ちょっと遅すぎる気がするので…。

お願いします。
0354名前は開発中のものです。02/01/02 00:16ID:???
VB今いれてないんで、どんなになってるか分からないけど
GDIでやってるの?
0355名前は開発中のものです。02/01/02 01:56ID:o+IkdH7u
ネイティブコンパイルして見たけど、大差無い様な感じ…。
三角関数やVariant型は使わず、整数のみ使う様にする。
ネスティング内でやっている計算はネスティングの外でまとめてやっておく等。
それでも数%の高速化しか期待出来ない場合もあり。
大胆なアルゴの見直しが必要と思われ。
0356名前は開発中のものです。02/01/02 06:48ID:???
あけましておめでとうございます。
MAD32をプレイする前にもうちょっと前作への要求を書かせてください。
(明文化したいので)

プレイヤーとしての要求
 次の自機を出す、タイミングにちょっと「待ち」を入れましょう。
 なおかつほんの短時間でいいので「無敵状態」にしてください。
(MAD32製作の方への参考にしてください)

では。
0357あきまさ02/01/02 11:09ID:???
>>354
GDIって…。なんでしたっけ…?Win標準の描画機能でしたっけ?
>>355
>ネイティブコンパイルして見たけど、大差無い様な感じ…。
そうですか〜…。
>大胆なアルゴの見直しが必要と思われ。
う〜ん、どのように組めば速くなるか分かりません…。
どんな処理が遅くしているかも分かりませんしねぇ…。
とりあえず、
Laser(255)をLaser(127)ぐらいにしたらかなり速くなった(といってもまだまだでしたが…)と思います。
具体的に、どうすれば高速化されるかが分かるならご教授お願いします。
>>356
あけましておめでとうございます。
>次の自機を出す、タイミングにちょっと「待ち」を入れましょう。
入れてみます。
>なおかつほんの短時間でいいので「無敵状態」にしてください。
一応、1秒ぐらい無敵になっているんですが…。
短すぎましたか…。

いやぁ、昨日は時間があったにもかかわらず効率が悪かったです。
スマソ。
0358あきまさ02/01/02 11:29ID:???
害虫STGの方を改良しました。

・死亡したときに、出現までに多少時間がある
・無敵時間の増加
・DSの解放(忘れてました…)

です。

http://blue.ribbon.to/~akimasa/
0359名無しさん02/01/02 12:04ID:2RcEk73h
あきまさはネイティブコンパイルできないんだね。
そうするとやっぱりコードの最適化が重要だな。
特にfor〜nextやdo〜loopの中は重要。って
あたりまえか…。もっと突き詰めたいなら割り算を
掛け算で置き換えるとかselect〜caseをif文に
置き換えるとか、だね。
0360あきまさ02/01/02 12:17ID:???
MAD32を改良しました。

・一部画像の変更
・スコアの表示

です。

http://blue.ribbon.to/~akimasa/

ゲーム中に原因不明なエラーで止まってしまうことがあります。
自分でも原因を探してはみたのですが、見つかりませんでした。
多分、自分が何処かでミスをしています。
原因が分かる方は是非教えてください。
お願いします。
0361あきまさ02/01/02 12:22ID:???
>>359
うぉ、
更新してみたら…。
>特にfor〜nextやdo〜loopの中は重要。
ほぉ〜、
>もっと突き詰めたいなら割り算を 掛け算で置き換えるとか
割り算のほうが負荷が大きいんですか?
>select〜caseをif文に 置き換えるとか、だね。
う〜、なんかの本に(ベーマガだったかなぁ…)に
Select Case はコンパイル時にIf に変換されるようなことが書いてあったと思うんですが…。
どうなんでしょうか…?
0362名無しさん02/01/02 12:29ID:2RcEk73h
>>あきまさ
うむ、select caseがifに変換されるってのは初耳。
オレの勉強不足かもしれないが。でも実際に
サンプルつくってFPSとってみたら若干ifが早いのよ。
割り算や小数、三角関数もね。だから数多く回すfor
やdoの中身で差が出てくる。
0363名前は開発中のものです。02/01/02 13:54ID:xfbeCZHN
このプログラムの問題点は、laser(255),enemy(63),bomb(255)と異常に数が多いと言う事。
これ程大量に画面表示しないとダメなのか?ゲーム・デザインの問題になると思うけど。
例えば、敵キャラのサイズを縦横×2倍の大きさにする。
その分キャラの数や弾の数を減らす。例えば、laser(63),enemy(31),bomb(63)位。
ついでにキャラが大きくなった分、1回の移動量を倍にしても目立たないと思う。

プログラム自体も突っ込み所が多いんだけど、設計段階で後々の事も考えておかないと苦労するよ。
ところで、Variantを使っている事でかなり重くなっていると思うが…何とかならないのかい?
0364名前は開発中のものです。02/01/02 18:31ID:???
あとFor文がネストしてるなら、Nextはいっぺんに書いたほうが速くなる。

For i = 0 To 10
 For j = 0 To 20
  '... 処理 ...
Next j, i      ←コレ
0365ななしさんお腹いっぱい02/01/02 20:58ID:???
with つかいんさい
あと integer より long のほうがはやいと聞いたことがある
0366あきまさ02/01/02 21:02ID:???
>>362
ほぉ〜…、そうでしたか…。
いや、自分の記憶違いだったかもしれません…。
変えてみます。
>>363
おぉ〜、そういう風にすればある程度解決されそうですね…。
>プログラム自体も突っ込み所が多いんだけど、
よろしければ具体的に教えてください。
自分のスキルアップを図りたいので…。
>設計段階で後々の事も考えておかないと苦労するよ。
設計というのはプログラムの設計ですよね?
自分は設計についてはまったく勉強していないのでどうすれば手入れがしやすくなるとか分かりません…。
参考になるイイサイトって無いでしょうか?
>Variantを使っている事でかなり重くなっていると思うが…
Variantってそんなに重いんですか?
よく知らずに使っていましたが…。
>>364
ネストって、重なっているという意味でしょうか?
>Next j, i
は、jとiに同時に数値を加えるのでしょうか?
みた感じだとそんな気がするのですが…。
0367あきまさ02/01/02 21:20ID:???
>>365
ほぉ〜…。
了解です。
0368あきまさ02/01/02 21:32ID:???
また改良しました。

・敵のサイズ2倍
・変数定義の部分の変更

です。
まだすべてのアドバイスをとり入れることができたわけではありませんが、
大幅に高速化されたかと思います。
まだ改良しきれていない部分は明日改良します。

http://blue.ribbon.to/~akimasa/
0369名無しさん02/01/03 00:13ID:ujT3yCXN
あきまさの勉強熱心なところはいいね。自分も
アドバイスしながら他の人のレスで勉強になる
ことも多くてさ。これからも一緒に頑張ろうぜ。
0370名前は開発中のものです。02/01/03 00:38ID:ZS3Az44s
あきまさよ。このページを知っているか。
ttp://www3.plala.or.jp/sardonyx/smart/

ゲーム関連のページではないが、「VB Tips」に細かい高速化の話有り。
(もう知ってたらスマン。)
037135602/01/03 00:55ID:???
いやぁ、即座に修正が入るので驚かされます。ッンクス!
(「多分」製作終了。←「多分」てのが俺のせいかも?と思ってちょっと申し訳なくなりました。)

あらら、無敵状態はいってましたか、、。うーん余りにも連殺されるので、、、。
原因は何でしょうね、、、。

MAD32ダウンロードしましたので、後から感想書きます。
0372名前は開発中のものです。02/01/03 02:32ID:???
nest=入れ子
ってわけわからないね・・・
若いもんにも分かるような言い方はないものか・・・
0373名前は開発中のものです。02/01/03 09:44ID:???
多重っでいいんじゃないの。
多重ループの内側は最適化必須。
0374あきまさ02/01/03 09:44ID:???
>>369
いやぁ、スキル的には全然ですが、今後ともよろしくお願いします。
>>370
お…、良さげなサイトですね…。
存在を知りませんでした…。
勉強してみます。
>>371
>いやぁ、即座に修正が入るので驚かされます。ッンクス!
いえいえ、それだけが取り柄ですからね…。
>(「多分」製作終了。←「多分」てのが俺のせいかも?と思ってちょっと申し訳なくなりました。)
多分っていうのは結構前から入っていましたよ。
決して356さんへのあてつけではありませんので…。
>あらら、無敵状態はいってましたか、、。うーん余りにも連殺されるので、、、。
>原因は何でしょうね、、、。
無敵状態の間は一応コックローチの色が変わっているはずなんですが…。
どうでしょうか?
>MAD32ダウンロードしましたので、後から感想書きます。
本当にありがたいです。
これからも感想をお願いします。
>>372
うぅ〜ん…。
なんとなく分かるような気もするんですけどね…。
多分、分かっていないと思われる…。
0375あきまさ02/01/03 09:51ID:???
>>373
うわっ、同時だ…。
最適化できるようガムバリます。
0376あきまさ02/01/03 10:33ID:???
指摘された部分を直してみました。

・変数の型の変更
・Withをenemy_mainで使用
・描画順の変更

です。
時間がかかる上に、面白くないですね…。

http://blue.ribbon.to/~akimasa/
0377名前は開発中のものです。02/01/03 11:49ID:kh1fmQcM
>時間がかかる上に、面白くないですね…。
いや、あきまさは確実に上達しているぞ!
で、漏れからのアドバイス。
とにかく、コメントを大量に入れる事。
変数、サブルーチンなど全てにだ。
あきまさの部屋で君と顔付き合わせて相談している訳じゃ無いのだから。
具体的な指摘のレスが来ないのはこの為だよ。

例えば、変数なんかは、

'自機のX座標(0〜639まで)
'小数を加える場合もあるのでSingleにしている。
Dim px As Single

こんな風にコメント入れてくれていれば、解かりやすいだろ?
自分だけ解かれば良いとか、自分が解かるから他人も解かるだろうと
言うのはダメダメだね。
0378あきまさ02/01/03 13:08ID:???
>>377
>いや、あきまさは確実に上達しているぞ!
そう言ってもらえるとありがたいです。
ホントに。
>とにかく、コメントを大量に入れる事。
ほぉ〜、そうですか…。
コメントを入れてみます。
>自分だけ解かれば良いとか、自分が解かるから他人も解かるだろうと言うのはダメダメだね。
了解です。

ガムバリます。
0379あきまさ02/01/03 14:19ID:???
はぁ〜…。
しんどかった…。
1時間15分かかった…。
意味不明なコメントがあるかもしれませんが勘弁してくださいね…。

http://blue.ribbon.to/~akimasa/
0380あきまさ02/01/03 21:35ID:???
…。
やらないほうが良かったとか…?
0381あきまさ02/01/03 22:54ID:???
いや、そんなことは…。

レスが帰ってこないと鬱な気分になります。
誰か批評してください…。
お願いします…。
0382あきまさ02/01/03 23:24ID:???
なんか自爆した…。
スマソ。
0383名前は開発中のものです。02/01/04 00:58ID:???
HPにソースをコピペして載ってけてくれるとありがたい。
面倒だし、超個人的な意見なんだけどw
0384あきまさ02/01/04 06:07ID:???
>>383
あ、それイイですね…。
やってみます。
0385あきまさ02/01/04 06:46ID:???
もうそろそろ、敵の出現を変数配列に格納してみたいのですが、どのようにやればイイのでしょうか?
自分が思いつくものは
Type StgType
existtime as long '出現するタイミング
existx as single '出現するX座標
existy as single '出現するY座標
existtype as long '敵タイプ
End Type
Public stg(63) as StgType
'で、後にこの変数にちまちま格納してやる(多分、関数を作って1行で済ませる)
stg(i).existtime=128
stg(i).existx=320
stg(i).existy=0
stg(i).existtype=0

ぐらいですが…。
これで問題無いでしょうか?
なんか、凄く面倒になりそう…。
0386名前は開発中のものです。02/01/04 11:21ID:???
敵の出現方法はそれしか方法がないとオモワレ。
同じ敵に違う攻撃方法をさせるような場合はバリエーション番号も持たせると吉。
データの入力が面倒なのは仕方がないね。諦めること。
0387名前は開発中のものです。02/01/04 11:45ID:???
>Const RAD = 3.141592 / 180 'ラジアンだったかな…
ラジアンであってるよ
2π=360度
中学校で習わなかったっけ?
0388あきまさ02/01/04 13:12ID:???
>>386
おぉ、そうですか。
バリエーションは、多分enemy.typeだけで管理するのでイイかと思います。
>データの入力が面倒なのは仕方がないね。諦めること。
プログラマの皆さんはもっとしんどい事をしている、と。
諦めます…。
>>387
厨学校では多分やってません…。
π=3.14…
としか習った覚えが無いです。多分ですよ。多分。
自分が覚えてないだけかも…。
ラジアンの定義が分からないとマズーですか?

今日はホントに時間が…。
0389名前は開発中のものです。02/01/04 13:24ID:???
ラジアンは半径1の円において、円弧の長さを1にしたときの角度だよ。
概算で57度くらい?

だから、半径1の円で180度の円弧を書くと、
その円弧の長さが3.14 ...になる、ということ。

>今日はホントに時間が…。
忙しいなら無理せんでも。
0390名前は開発中の名無しさん02/01/04 18:25ID:???
久。

>数配列に格納してみたいのですが

2次元のマップに格納するのがいいかと。
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 ←1,2...が敵。
0 0 0 0 0 0 0 0
0 0 0 0 0 2 0 0
0 0 1 0 0 0 0 0

これで、自機が一定距離進むごとにマップを一行ずつ読む。
マップの右端が画面の右端に対応してると。

>中学校で習わなかったっけ?
 今は、普通なら高校2年で習うはず。(エリート諸君はどうか知らんが)
 たぶん、オッサン世代が今の高校生の教科書見たら「なんでアレが
載ってねぇんだ!」って思う。
 行列で座標変換したりするのも削除されてるし(これが一番痛いかもしれん)
0391名前は開発中のものです。02/01/04 19:23ID:???
>390
うむむ・・・
自分もオサーン世代に分類されるのか・・・
ソースみるとたいしたもんでないからこれ以上VBでは高速化できないかも
ポインタ使えないんだよねぇ?

思いつくのはIFのかわりに配列で分岐処理するくらいかな
0392あきまさ02/01/04 21:29ID:???
>>389
おぉ、ラジアンとはそういうものなんですか。
なんとか図を書きながら理解しました。
時間が無いといっても、
学校(意義の無いテストをやりに)→飯(この間に5分PCをいじることに成功)→部活→塾(長い…)→帰宅→現在に至る
って感じです。
夜はいつも1時間は確保できるので、無理してるわけでは無く、健康的です。多分。
…。
蛇足でしたね…。
>>390
ほぉ〜…。
そういうやり方もありますか〜…。
でもGates32とは違うような…。
まぁ、Gates32と同一である必要は無いのでありがたく使わせていただきます。
工房…。
無事に逝けるようになれるとイイ…。
>>391
ポインタってなんなんでしょうか?
なんか、Cを使うと出てきて、しかも異常に難しい印象があるのですが…。
えぇ〜と、まぁ、高速化は結構できたかなぁ〜と思うので、目に見える部分を作っていきたいと思います。
それに、作業地味たことをやっていたので精神的にキツかった気もしますし…。

部活が始まってしまって萎えますが、自分の趣味なので時間を割いてでも作ります。
多分(勉強もしないと逝けないけど…)。
0393あきまさ02/01/04 22:11ID:???
改良しました。

・敵が一応規則的に出現
・スコア表示に無意味なエフェクト

です。
上からだけだとやはり、つまらないので下からも出現するようにしました。
ちなみに、A:敵出現は一応残っています…。

http://blue.ribbon.to/~akimasa/
0394名前は開発中のものです。02/01/04 22:29ID:XiInaram
娘もいるよ。
0395名前は開発中のものです。02/01/05 00:11ID:wMQASIdb
下から来ると結構ムズイ・・・。

・getangleの引数の型が指定されていない(As...がない)。これだと全部Variant型なので遅いよ。

・plySndは、文字列の比較でどの音を出すか決めているようだが、文字列の比較は遅い。
Long型のConstを使ったら?。
Const SOUND_HIT As Long = 1
plySnd SOUND_HIT
みたいな感じ。
0396あきまさ02/01/05 10:58ID:???
>>394
…?
>>395
おぉ、そうですか…。
直してみます。
0397あきまさ02/01/05 13:15ID:???
改良しました。

・レベルアップの導入
・敵が規則通りに出現
・新しい敵を追加

です。
無限ループです。

http://blue.ribbon.to/~akimasa/
0398あきまさ02/01/05 21:51ID:???
改良しました。

・LIFEの導入
・氏んだときにボンバー
・レべルの表示
・あの音をあの音に変更

です。
LIFEの表示は明日作ります…。

http://blue.ribbon.to/~akimasa/
0399あきまさ02/01/06 14:05ID:???
今日も改良。

・LIFEの表示

だけですが…。
ここを改良したほうがイイ!というところがあったらご指摘お願いします。

http://blue.ribbon.to/~akimasa/
0400名前は開発中のものです。02/01/06 16:01ID:kA10WYef
むずかしいっすー
しゅみわるいっすー
0401あきまさ02/01/06 16:10ID:???
むずかしくしました〜
しゅみわるいです〜

…。
初心者モードみたいなのを作ろうかな…。
自分もレベル1どまりだし…。
0402あきまさ02/01/06 16:41ID:???
初心者モードを追加しました。
カナーリ簡単になったと思います。
モード選択は、タイトルが表示されきってからカーソルキーで選択できます。

アドバイスがありましたらお願いします。

http://blue.ribbon.to/~akimasa/
0403名前は開発中のものです。02/01/06 17:15ID:???
>400
趣味悪いってのは同感かなw
もう少し健全というか、個人を特定できないのがいいかな
0404あきまさ02/01/06 19:27ID:???
>>403
ははは…、まぁ、その通りですね。
一応ウケねらいのゲームなので、次に作るものは『超健全』ぐらいのものを作りたいと思います。
とりあえず、ウケねらいっていうことで許してください〜。
0405あきまさ02/01/06 20:25ID:???
改良…したいのですが、分からない事がでてきたので質問させていただきます。
ジョイパッドを使いたくて、検索をかけて、一応それらしいサンプルは見つかったのですが、
同時にボタンを検出する方法が分かりません…(発想力が乏しいだけかもしれませんが…)。
ボタンを押すと数を返してきますが、同時に押すとプラスされた数が返されてくるのでどのボタンが同時に検出する方法が分からないのです。
分かる方は、どうか教えてください。
お願いします。

一応、自分が作ったものです。
http://blue.ribbon.to/~akimasa/files/JoyPadTest.zip
0406名前は開発中のものです。02/01/06 23:15ID:???
>>405
論理演算でいいじゃん。
ボタン3(&H08)とボタン4(&h10)が同時に押されていることを検出
if (j.dwButtons and &H08) and (j.dwButtons and &H10) then ..

例によってVBはよく分からないので適当に書いてるけど、こんな感じ。
論理演算とかビット演算って知ってる?&H08とか&H10の意味わかる?
0407名前は開発中のものです。02/01/06 23:18ID:???
>>406
あぁ、間違ってるかもしれん。
Cだと、
if (j.dwButtons&0x08 && j.dwButtons&0x10){...}
なんだけど、'&'と'&&'の違いってVBではどうするんだっけ?
0408名前は開発中のものです。02/01/06 23:56ID:???
VBでDirectXを使うってのはどうするかわからんのだけど
(3年位前から使ってない)
SDKの中にサンプルプログラムあったよ
0409名前は開発中のものです。02/01/07 00:44ID:???
2進数として計算すればよいのでは
0410名前は開発中のものです。02/01/07 01:34ID:???
論理…orだったような
0411名前は開発中のものです。02/01/07 01:48ID:???
>>410
C言語はビット演算と論理演算が別演算子なんだす。
VBは知らん。昔のMicrosoft BASICはそんな区別は無かったかな?

if (j.dwButtons and &H08) <> 0 and (j.dwButtons and &H10) <> 0 then ...
が正解?
0412あきまさ02/01/07 06:34ID:???
>>406-407
おぉ、動きました(コピペだけれど…)!
>論理演算とかビット演算って知ってる?&H08とか&H10の意味わかる?
論理演算はXorぐらいしか意味を覚えてません…(しかもあやふや…)。
ビット演算…。はじめて聞いた単語だと思われます。
&H08とかはかろうじて16進数ということが分かるくらいです…。
正直、なぜif (j.dwButtons and &H08) thenで動くか分かりません…。
>>408
SDKは…。あまり見たことがありません…。
>>409
高度…。
>>410
一応>>406さんのやつで動きました。
>>411
自分はCはまったく分からない…。
あと、今、>>406さんので同時にボタンを検出しようとしたらできなかったので
>>411さんのやつをやってみたら同時に検出できました。
どうして動くのか分からない…。
0413あきまさ02/01/07 06:51ID:???
…。
一応、検出はするのですが、
&H64などのボタンを検出しようとすると関係無いボタンが押されていても検出されてしまいます…。
原因が分かりません…(構造も理解していないので…)。
原因が分かる方は、是非教えてください。
参考になるサイトとかでもイイです。
おねがいします。
0414名前は開発中のものです。02/01/07 08:34ID:???
>>413
数値を2進数にして,「目で」見ると意味が分かると思うよ。
で,ジョイスティック関数で取得した数値とか画面に出せるなら,その数値を2進数と
して,「目で」見ると理解が深まると思う。

Windowsに付いてくる,電卓の関数電卓モードとか使ってもいいし。
16,10,8,2進数を相互変換出来て便利だよ。
0415名前は開発中のものです。02/01/07 13:00ID:???
2進数は知ってるかな?0, 1しか使わない数の数え方。
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, ...
と数えていく。
で、2進数のある桁に注目すると、'0'と'1'しかないわけだから、
デジタル機器なんかでは、これを'OFF', 'ON'に対応付けて考えたりする。
2進数表記の何桁目っていうのを、何ビット目と呼んだりもする。

ジョイスティックのボタンも↑のように、各桁がボタンのON,OFFの状態に割り当てられてる。
dwButtonsは、32ビット整数だから、1桁目から32桁目までがそれぞれボタン1〜ボタン32に割り当てられてるわけだ(多分)。
たとえば、ボタン4が押されたときは、00001000と4桁目が1になる。
ボタン5の場合は、00010000と5桁目が、両方押された場合は、00011000と2つの桁が1になる。
ちなみに、0001000を16進数にすると'&H10'(10進で'16')になる。
00001000は、'&H08'(10進で'8')だ。

次に論理演算(ビット演算とも言う)、and, orについて。
これらは、2進数表記での各桁の数字同士を計算する演算子で、
andは、両方'1'なら計算結果は'1'、それ以外なら'0'、
orは、どちらか片方が'1'なら計算結果は'1'、両方'0'なら'0'という様に計算される。
0110 and 0010 => 0010
0101 or 1010 => 1111

ここまではOK?
0416名前は開発中のものです。02/01/07 13:01ID:???
で、ボタンが押されているか確かめたいときは、要するにその桁が1かどうか確かめれば
良いわけだから、たとえばボタン5なら、
dwButtons and 00010000
の計算結果を見ると、dwButtonsの5桁目のみを取り出せて(以下適当な例
011001001 and 00010000 => 00000000
011101001 and 00010000 => 00010000
)、その計算結果が0でなければ、ボタン5が押されていることが分かるという仕組み。
VBだと2進数は直接使えないみたいだから、
If (j.dwButtons and &H10) <> 0 then ....
とするわけ。

複数のボタンが押されていることを確かめたければ、上のIF文の条件式をandでつなげていくだけ。
If (j.dwButtons and &H10) <> 0 and (j.dwButtons and &H08) <> 0 then ...

>>406ができなかったのは、'... <> 0'が無いと、
j.dwButtons = 00011000だった時に、
(j.dwButtons and &H10) and (j.dwButtons and &H08)
=> (00011000 and 00010000) and (00011000 and 00001000)
=> (00010000) and (00001000)
=> 00000000
となってしまい、Ifの条件式は偽になってしまうから。

こんな感じで分かるかな?
0417訂正02/01/07 13:02ID:???
うは、桁が一つ多い。
> 011001001 and 00010000 => 00000000
> 011101001 and 00010000 => 00010000

01100100 and 00010000 => 00000000
01110100 and 00010000 => 00010000
0418あきまさ02/01/07 13:17ID:???
>>414
ほぉ〜…。
とりあえず、>>415-416さんの説明で理解できました。
多分。ですが…。
>>415-416
おぉ!とても分かりやすいです。
ありがとうございます。
大体の事は理解できました。
今は学校からみているので組むことができませんが、
部活が終わって、家に帰ってから組みたいと思います。

時間を割いて長い文章を打ってくださってありがとうございました。

あと、なんでageなんですか?
問題はないですけど…。
0419あきまさ02/01/07 16:08ID:???
改良しました。

・ジョイパッドに対応

です。
やっぱりキーボードよりもジョイパッドのほうが格段にやりやすいですね…。
ジョイパッドを持っている方は、是非プレイしてみてください。
そして、感想をいただければ幸いです。
動作報告もお願いします。
自分の周りには、自分以外にジョイパッド持っている人間はいないので…。

http://blue.ribbon.to/~akimasa/
0420image02/01/07 20:24ID:1aJq0+LV
名スレの予感(遅っ
0421ななしさんお腹いっぱい02/01/07 23:29ID:???
バグってるかな
左上押しっぱなし状態になっている
ji.dwYpos = 0 とか ji.dwXpos = 0 のところ
ジョイパッド使ってないときも ji.dwXpos=0 が入る
あと
If Vkey_Down(vbKeyC) And player.swait = 0 Or _
  (ji.dwButtons And &H1) <> 0 And player.swait = 0 Then
だけど
If (Vkey_Down(vbKeyC) And player.swait = 0) Or _
  ((ji.dwButtons And &H1) <> 0 And player.swait = 0) Then
括弧をつけるべし
これはあちこちでいっぱい見かけた
0422あきまさ02/01/08 18:28ID:???
指摘された部分を改良しました。

・ジョイパッドのバグを修正
・ソースに括弧をつける

です。
ジョイパッドが接続されているかどうかの判定ですが、
プログラムが起動したときにji.Xpos=0だったらジョイパッド使用不可にするという風にしましたので、
左を押しながらプログラムを起動すると認識しなくなると思います。

とりあえず、次はキー設定できるようにしようかと思います。

http://blue.ribbon.to/~akimasa/
0423あきまさ02/01/09 20:03ID:???
うぅ〜ん…。
まぁ、キー設定付ける必要もなさそうなのでやめようかと思います。
あたらしいゲームでも作ろうかと思っています。
とりあえず、鯖移転したのでage。

http://home1.catvmics.ne.jp/~shimo-f/
0424あきまさ02/01/10 21:07ID:???
今はネタを考えています…。
とりあえず、戦車かなんかでドンパチという超健全のような気もしないことも無いゲームを作ろうかと…。
今から、1つの画像から16方向分のbmpを生成するプログラムを作ろうかと思います。

自分がなにもしないとどんどん人が離れて逝く気がするので早く作らないと…。
厨学校とか受験のせいで時間が無くなってきたけど…。
0425名前は開発中のものです。02/01/10 21:07ID:???
あきまさ君は幸せ者だねぇ
0426名前は開発中のものです。02/01/10 22:58ID:???
mad32やりましたよ
パッドが動かなくてつらい

DirectInputつかってほしい・・・・
0427名無しさん02/01/11 02:16ID:???
>>424
最近はあきまさのプログラムにだんだんツッコミどころが
なくなってきたんじゃないかな、きっと。大分スキル
上がってきたからな
0428ななしさんお腹いっぱい02/01/11 09:20ID:???
>>427
プログラム的にはなくなってきたけど
WindowsやPCの知識には突っ込むところが多いね
基本情報技術者試験とかの勉強してもいいと思う
知識は身につくし資格も取れて2度(゚д゚)ウマー
04291902/01/11 10:18ID:???
久しぶりに来てみたら大盛況ですね。
週末に遊ばせてもらおうと思います。
VBはやってないので技術的なレクチャーはできないよん。
0430あきまさ02/01/11 16:59ID:???
>>425
幸せ、ですかぁ…。
でも、人物評価のところに△3つ付いたりして鬱…。
志望校入れると幸せ…。
>>426
パッド動かないですか…。
自分のパッドはプレステのやつをつなぐやつなのでおかしいかも。
DirectInputの参考になるサイトを探してみます。
>>427
おぉ〜、そうですか〜。
ありがたい限りです。
VCもそのうち買って勉強しないと…。
>>428
PCの基礎知識ですか〜…。
パソコン検定準4級とかいうのを1年生のときだったかに受けた気がしますが、
遠慮しないで3級ぐらい受けとけば良かった…。
工房になれたら時間を作って勉強したいです。
>>429
いやぁ〜、
19さんがいなかったらこんな有難いスレにはならなかったと思います。
本当に感謝です。
もう2ヶ月経ったんだなぁ…。

16方向分画像を生成するプログラムを作ろうかと思っていたんですが、
自分でやると汚くて、作るのもカナーリ面倒なので中止しました…。
今日は画像を用意しようかと思います。
それか、MAD32の時みたいに誰かイイ人が用意してくださるとこの上ないんですけどねぇ…。
自分じゃヘボいし…。
0431あきまさ02/01/11 17:06ID:???
http://www.google.co.jp/search?q=DirectInput+VB&hl=ja&lr=lang_ja&start=10&sa=N
ビクーリ!
0432あきまさ02/01/11 17:16ID:???
うぅ〜ん…。
なかなかイイサイトが見つかりません…。
オススメのサイトとかあったら教えてください。
お願いします。
0433あきまさ02/01/11 17:28ID:???
あと、画像を任意の角度で回転して描画するような機能はDXには無いでしょうか?
いちいち、画像を作るのが苦痛で…。
自分でも調べてみますが、もしイイサイトがあるなら教えてください。
お願いします。

今日から3連休なので、もしかしたら時間があるかも…。
0434あきまさ02/01/11 17:41ID:???
イイサイト見つかりません…。
0435名前は開発中のものです。02/01/11 18:53ID:???
DirectInputは、サンプル(Joystick)を参考にすればすぐにできるかと
0436名無しさんです02/01/11 23:13ID:???
>>435
ベーマガのプログラム置き場(名前忘れた…)に
ダイレクトインプットのサンプル有ったと思った。
前にダウンロードして一回開いて使ってないが。
何月か忘れたので自分で探してみてくれ。
ベーマガ
http://www.basicmagazine.net/index.htm
0437名無しさんです02/01/11 23:15ID:v9V0rTR5
>>436 っす
>>434 の あきまさ に対する返信です
まちがえ
0438名前は開発中のものです。02/01/11 23:30ID:???
>>433
ダイレクトエッキスのことかね?
なら
ttp://giggle.cside6.com/hotate/index.html
ここいけば基礎はできる。ちなみにVBではない
0439名前は開発中のものです。02/01/11 23:38ID:???
わざわざDirectInput使わんでもjoyGetPos()で十分では?
0440名前は開発中の名無しさん02/01/11 23:43ID:???
>>433
 いちおう、Direct3D使えばできるよ。
 ベーマガの2000年11月号にちょうどVB版のサンプル載ってるからそれ参照してみれ(アレは半透明が目的だけど、やることは同じ)
 ただ、独断だけど、今の場合はあらかじめ回転させた画像を
用意しておく方法の方がベターだと思うぞ。
0441名前は開発中のものです。02/01/12 00:29ID:???
あきまさは、そろそろDirext3Dに挑戦ということか・・・
0442名前は開発中のものです。02/01/12 00:45ID:???
情報を容易に取得できるようにするためにもCやC++に移行したほうがいいかもね。
044335602/01/12 01:39ID:???
いや〜感想書きに来ました。プレイしましたよMAD32。

破壊がめちゃくちゃ気持ちいいです。
くるくるが難しいっすね、ジョイパッド欲しいー。
「ぱずるーぷ」とX68Kとメガドラで出た、戦車ゲームを思い出します(なんでしたっけ?アサルト?ジェノサイド?)。

あと
>一応コックローチの色が変わっているはずなんですが
あー変わってました。(でも久しぶりにやったらヌルィもんで連殺されるされる。)

 で、閃いたんですが、「なおかつ死亡時に画面内にあったすべての弾を当たり判定無効にする」
ってどうですか?無効の弾は違う色になります。
   (↑でも、これはMADの方に取り入れてほすぃ、。)

では。(え?新ネタ?受験?大丈夫ですか?)
0444名前は開発中のものです。02/01/12 05:00ID:???
グラナダかな・・・・
たしかに近いものはあるかも
0445あきまさ02/01/12 07:28ID:???
>>435
サンプル…。
DirectXに付いてくるサンプルでしょうか?
あんまり見たこと無いんで…。
>>436
ベーマガも一応検索にかかったんですが、キーボードのサンプルだったので見ていません。
キーボードもジョイスティックも似たように処理できるんでしょうか?
>>438
Cですか〜…。
VBよりCのほうがイイサイトが多いような…。
>>439
十分ですかぁ〜…。
どうしようかな〜。
>>440
画像用意したほうがイイですか…。
急がば回れ、と。
>>441
Direct3Dやったことはあるんですが、テクスチャが汚くなったりしたのでやめました。
ベーマガの質問掲示板にその跡が…。
>>442
C、ですか…。
最近は受験だとかなんとかで時間がとられていくから工房になってからにしようかなぁ〜…。
なんて思っているんですがどうでしょう?
>>443
おぉ〜、プレイしていただけましたか〜。
いまからMAD32を改良しようかと思います。
>>444
聞いたこと無いな〜。
調べてみます。

なんか、壮絶な時間に見ている人が多いですね…。
■ このスレッドは過去ログ倉庫に格納されています