- 792: 名前:枯れた名無しの水平思考 :2010/11/01(月) 01:32:36 ID:wDuUX9WW0(9)
- >>433
フラグ立てるのはわかったけど、フラグ消すのは消すのは?
0をセットするためにはどうしたらいいんだ。- 795: 名前:枯れた名無しの水平思考 :2010/11/01(月) 01:42:35 ID:xiQxL6A+0(11)
- >>792
いまいち言いたいことが分からなかったけど多分
該当ビットだけを0でANDすればそこだけ0にできる
つまり>>433の一番下の処理は右と前の壁の判定を消してるわけだ - 969: 名前:枯れた名無しの水平思考 :2010/11/01(月) 18:53:01 ID:1HYweyd00(2)
- >>797だけど>>792の質問みて、フラグ消す説明が間違えてることに気が付きました。
0にしたいビットを-1とxorして作ったマスクとandするの抜けてました・・・
混乱させてご免なさい><
- 797: 名前:枯れた名無しの水平思考 :2010/11/01(月) 01:54:19 ID:wDuUX9WW0(9)
- やりたい事としては
右、左、前、後ろと順々に判定を行っていこうと思ってる。
カウンタの名前をWALLとする。
右にあったら
WALL<-WALL and 1
なかったら
???
左にあったら
WALL<-WALL and
なかったら
???
・・・
???のところの処理がわからない。
処理的には1の補ビットとandすればいいんだろうけど、
チップ数がちょっと多いから、もっと旨いやり方ないかと、、- 798: 名前:枯れた名無しの水平思考 :2010/11/01(月) 01:59:49 ID:xiQxL6A+0(11)
- >>797
1の補ビットとandするなんてandチップ一つでできちゃうじゃないか- 802: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:08:33 ID:YQ2ZIoTP0(6)
- >>798
こうかい?
2#は2進数。右、左、前、後ろの順に右から4ビットを割り当てるとして0 = 2#0000
右にあったら
WALL<-WALL or 1 = 2#0001
なかったら
WALL<-WALL and 14 = 2#1110
左にあったら
WALL<-WALL or 2 = 2#0010
なかったら
WALL<-WALL and 13 = 2#1101
前にあったら
WALL<-WALL or 4 = 2#0100
なかったら
WALL<-WALL and 11 = 2#1011
後ろにあったら
WALL<-WALL or 8 = 2#1000
なかったら
WALL<-WALL and 7 = 2#0111
壁チェックだけで大変だな- 805: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:18:23 ID:wDuUX9WW0(9)
- >>802
ちょっと違った。
普通の言語とintの内部表現が違うらしい。。
2#は2進数。右、左、前、後ろの順に右から4ビットを割り当てるとして0 = 2#0000
右にあったら
WALL<-WALL or 1 = 2#0001
なかったら
WALL<-WALL and -2 = 2#1110
14≠2#1110
いったいどんな内部表現しているんだろうな。
1!=-2
2!=-3
4!=-5
8!=-9
となっているらしい。
intとして考えたとき、和が-1になるのが補ビットとして扱われるらしい。- 806: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:25:07 ID:b+0iZL7P0(3)
- >>805
これが面倒なこと、intとして見たら正しいです
ようは負の数を表現するためのビットがあるせいで
全体を否定すると負になる
ゼロに正負は居らないのでその分ずれてるというわけ
正負のビット使わなければ気にしなくてもいいので
>>802でも上手く行くと思います- 808: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:27:04 ID:YQ2ZIoTP0(6)
- >>805>>806
調査サンクス
これで問題なくフラグをへし折れるねw
- 808: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:27:04 ID:YQ2ZIoTP0(6)
- >>805>>806
調査サンクス
これで問題なくフラグをへし折れるねw - 810: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:29:46 ID:xiQxL6A+0(11)
- >>805
intの仕様は知らないけど負の数が二の補数で表現されてるだけでしょ
あと14=1100な- 813: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:42:57 ID:YQ2ZIoTP0(6)
- >>810
14 = 2#1110ちゃうの?- 814: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:44:28 ID:xiQxL6A+0(11)
- >>813
なぜか14を12と勘違いしてたorz
- 806: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:25:07 ID:b+0iZL7P0(3)
- >>805
これが面倒なこと、intとして見たら正しいです
ようは負の数を表現するためのビットがあるせいで
全体を否定すると負になる
ゼロに正負は居らないのでその分ずれてるというわけ
正負のビット使わなければ気にしなくてもいいので
>>802でも上手く行くと思います- 808: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:27:04 ID:YQ2ZIoTP0(6)
- >>805>>806
調査サンクス
これで問題なくフラグをへし折れるねw
- 807: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:26:17 ID:Qe8QOqoe0
- 動き回る機体でどうにもエリア外の判定をうまくやってくれないから試行錯誤してたら
それだけ5×6チップのプログラムになってしまった。でも満足行く動きにはなったと思う
とか思ったら>>802の壁認識をエリア外に置き換えればもう少しスペース省けるのかなー(言ってることは半分理解できてるかも怪しいが)
壁とは結構勝手が違うしそうもいかないのかな
- 969: 名前:枯れた名無しの水平思考 :2010/11/01(月) 18:53:01 ID:1HYweyd00(2)
- >>797だけど>>792の質問みて、フラグ消す説明が間違えてることに気が付きました。
0にしたいビットを-1とxorして作ったマスクとandするの抜けてました・・・
混乱させてご免なさい><
- 971: 名前:枯れた名無しの水平思考 :2010/11/01(月) 18:54:17 ID:1HYweyd00(2)
- 何度もごめんなさい>>797じゃなくて>>433でした
- 799: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:00:08 ID:wDuUX9WW0(9)
- と思ったけど、
intの内部表現的には
1の補ビットは-2らしいので、一チップでできるな。
てっきり、マイナス6万くらいのあたいかと思ったけど。。
申し訳ない。- 804: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:16:02 ID:xiQxL6A+0(11)
- >>799
マイナス六万くらいの値だったとしても大丈夫だろw
- 811: 名前:枯れた名無しの水平思考 :2010/11/01(月) 02:40:51 ID:wDuUX9WW0(9)
- >>いろいろ勘違いしてた、スマン。
俺が無知だったわ。
wiki読んでくるOTL - 817: 名前:枯れた名無しの水平思考 :2010/11/01(月) 03:05:17 ID:wDuUX9WW0(9)
- >>816
計算チップの枚数的にはいちいち壁判定したほうが速そう。
チップ枚数は3枚。(前処理の分は除く。)
カウンタコピーして、
and
判定
判定したいものが3つまでならベタでおいたほうが速そう。
あとは前処理をうまく行動の中に突っ込みたいね。
- 819: 名前:枯れた名無しの水平思考 :2010/11/01(月) 03:12:02 ID:xiQxL6A+0(11)
- >>817
そこで>>812ですよ
カウンタコピーとandがかなり短縮できる
カウンタいっぱい使うときにしか効果ないと思うけど- 820: 名前:枯れた名無しの水平思考 :2010/11/01(月) 03:16:09 ID:wDuUX9WW0(9)
- >>819
ぉぉぉ
これで圧縮できるな!
すばらしい! - 821: 名前:枯れた名無しの水平思考 :2010/11/01(月) 03:18:55 ID:b+0iZL7P0(3)
- >>819
やってる事同じじゃね?
どのみち演算子一個でチップ一個使うし
- 824: 名前:枯れた名無しの水平思考 :2010/11/01(月) 03:24:55 ID:xiQxL6A+0(11)
- >>821
カウンタコピー→and→分岐→カウンタコピー→and→分岐→
が
最初の処理する→分岐→分岐→
になる
- 827: 名前:枯れた名無しの水平思考 :2010/11/01(月) 03:36:20 ID:HSOdVMuT0(3)
- >>817
カウンタにまとめておけば壁全方向検出させるより若干時間かかるけど、
壁以外にも検出する対象が増えればこっちの方が便利…そういうことですか?
>>818
なるほど…カウンタ1つでディップスイッチみたいに並べておけるのか…
俺はまだそんな複雑なの組めないから不足してはいないけども、
そういう方法もあるということを覚えておきますね。
>>822
そういうことか!付近に壁が無い場合は確立分岐〜とかしてたけど、
それ使えば先を見た回避ができるわけだ!早速明日から導入しよう…。
- 839: 名前:枯れた名無しの水平思考 :2010/11/01(月) 07:10:11 ID:wDuUX9WW0(9)
- おはりん。
また徹夜してしまったよ。
バトルアリーナ、月面の月影が壊せない。
そんな俺にヒントをください。
- 844: 名前:枯れた名無しの水平思考 :2010/11/01(月) 08:07:05 ID:d8thJOH+0
- >>839
フォレストファイアで勝った
- 853: 名前:枯れた名無しの水平思考 :2010/11/01(月) 09:25:55 ID:wDuUX9WW0(9)
- >>851
ラ、シ、ラ、シ、ファだとおもふ。- 854: 名前:枯れた名無しの水平思考 :2010/11/01(月) 10:06:25 ID:E9uQmHaBO(5)
- >>853
すげーw
俺も質問です。カウンタの初歩的なやつですが
カウンタのプログラムを見ていると、大雑把に例えば
1、カウンタAに代入
↓
2、A=B−A
↓
3、カウンタBに代入
というのをよく見かけますが、これに関して2つ質問です。
順番が132じゃないのは何故でしょうか。素人考えだと、AB代入したあとに計算するんじゃないかなと思うわけです。
もう一つ。 2の式が理解できません。 B−Aは分かりますが、A=B−Aはどういう意味でしょうか。 暇があったら教えてください。- 856: 名前:枯れた名無しの水平思考 :2010/11/01(月) 10:22:45 ID:oui7qLpy0(3)
- >>854
多分それ時間はかるカウンタじゃね?
カウンタAに戦闘経過時間を代入- 862: 名前:枯れた名無しの水平思考 :2010/11/01(月) 10:49:02 ID:E9uQmHaBO(5)
- >>856->>859
親切にありがとうございます。
順番理解できました。
代入もなんとなくですが分かりました。
マザーグースと聞いて、少女がグライダーに乗って鳥と旅する話と勘違いしたくらい学がない奴ですが、カウンタ試してみます。
- 858: 名前:枯れた名無しの水平思考 :2010/11/01(月) 10:27:35 ID:RmDTNV7cO(2)
- >>854
・プログラムがループしている
・Bは前回の値としてつかう
つまり
3→→→1→2→3→→→1→2と処理しているので
代入、代入、計算となる - 859: 名前:枯れた名無しの水平思考 :2010/11/01(月) 10:27:39 ID:oui7qLpy0(3)
- 悪い途中で送信された
>>854
カウンタAに戦闘経過時間を代入
Bも既に戦闘経過時間が入っているとする
A=A-B
Aが10以上になったらBにまた戦闘経過時間を入れてミサイル発射して以下ループ
って感じじゃないかな
ちなみにBに戦闘経過時間が入ってなかったとしても初期状態で0だから、
スタートと同時に戦闘経過時間を入れたも同然と
分かりにくい説明でごめんよ- 862: 名前:枯れた名無しの水平思考 :2010/11/01(月) 10:49:02 ID:E9uQmHaBO(5)
- >>856->>859
親切にありがとうございます。
順番理解できました。
代入もなんとなくですが分かりました。
マザーグースと聞いて、少女がグライダーに乗って鳥と旅する話と勘違いしたくらい学がない奴ですが、カウンタ試してみます。
- 879: 名前:枯れた名無しの水平思考 :2010/11/01(月) 12:15:19 ID:/BvzVvGBO(5)
- >>853
サンクス
帰ったら試してみる
てか、これて作れる曲あるんかな…
>>860
ガッダール隊乙
■TOP■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- ツリー解除 dat