トップページ > プログラム > 2016年01月04日 > 7uWOp/tU

書き込み順位&時間帯一覧

1 位/187 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000010251020415



使用した名前一覧書き込んだスレッド一覧
NAS6 ◆n3AmnVhjwc
2Dゲーム当たり判定総合 [転載禁止]©2ch.net
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net

書き込みレス一覧

2Dゲーム当たり判定総合 [転載禁止]©2ch.net
11 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 15:28:57.97 ID:7uWOp/tU
キャラクターと同じサイズの当たり判定2ビットデータを用意する(8ビット境界だと結構楽)
例:当たり判定データ ■true□false
□□□□□□□□
□□□■□□□□
□□■■■□□□
□■■■■■□□
キャラクターの座標に合わせて、I軸のビットシフト補正をする
pos(34,15)だったら34%8=2ビット右シフト等
必要なら回転も考える
全表示キャラの当たり判定データを重ねてANDを取ってTRUEならばHIT判定
以上
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
548 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 17:38:28.00 ID:7uWOp/tU
つか、末尾再帰ってループそのまんまで再帰の利点ないし

recHoge1(a,n,arg...){
 dobefore()...
 if(a<n)recHoge1(a,n,arg...);
}
loopHoge1(a,n,arg...){
while(a<n){
 dobefore()...
 }
}
再帰は無意味、使う必要なし

recHoge2(a,n,arg...){
 dobefore()...
 recHoge2(a,n,arg...);
 doafter()...
}
loopHoge2(a,n,arg...){
 while(a<n){
  pushargstack();
  dobefore()...
  popargstack();
  doafter()...
 }
}
再帰で有意味、この場合使える
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
549 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 17:44:32.72 ID:7uWOp/tU
pop,push逆だった
loopHoge2(a,n,arg...){
 while(a<n){
  popargstack();
  dobefore()...
  pushargstack();
  doafter()...
 }
}
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
550 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 18:00:09.14 ID:7uWOp/tU
pushargstack();
popargstack();
ユーザー定義のこれらはめんどくさいから
再帰関数使ってコンパイラ任せにするよ
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
552 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 18:16:50.81 ID:7uWOp/tU
recHoge1(term,arg...){
 dobefore()...
 if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
 while(term){
  dobefore()...
 }
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
 dobefore()...
 if(term)recHoge2(term,arg...);
 doafter()...
}
loopHoge2(term,arg...){
 while(term){
  popargstack();
  dobefore()...
  if(term)continue;
  pushargstack();
  doafter()...
 }
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
553 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 18:19:28.48 ID:7uWOp/tU
>>551
>>552
以上のことの何があるか説明してみてよ
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
554 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 18:42:48.29 ID:7uWOp/tU
ttp://nas6.main.jp/Maze.cpp

再帰、ループ、等価迷路
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
555 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 18:55:15.40 ID:7uWOp/tU
recHoge1(term,arg...){
 dobefore()...
 if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
 while(term){
  dobefore()...
 }
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
 dobefore()...
 if(term)recHoge2(term,arg...);
 doafter()...
}
loopHoge2(term,arg...){
 while(term){
  pushargstack();
  dobefore()...
  if(term)continue;
  popargstack();
  doafter()...
 }
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容 、勘違い訂正
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
556 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 19:03:49.25 ID:7uWOp/tU
>>554で、
ループ実装が好きなやつはいないと思うんだけどな
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
558 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 21:51:32.16 ID:7uWOp/tU
「{C++規則をかなり抑えてCライク}で書かれたソースコード」
のクロスランゲッジなんて、ほぼ、ライブラリの関数名を書き換えるだけだろ
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
559 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 21:54:46.92 ID:7uWOp/tU
あ、あと制御構文もちゃっちゃっと書き換えれば出来上がり
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
566 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 23:00:49.51 ID:7uWOp/tU
ruby知らんがこんな感じだろ

def recHoge2(term,arg...)
  dobefore(arg...)
  if term
   recHoge2(term,arg...)
  end
  doafter(arg...)
end
end

def loopHoge2(term,arg...)
 while term
  pushargstack(arg...)
  dobefore(arg...)
  if term
   next
  end
  popargstack(arg...)
  doafter(arg...)
end
end
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
567 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 23:01:55.35 ID:7uWOp/tU
class stack
 def initialize
  @ret = -1
  @crnt = 0
  @MAX_STACK = 32768
  @stk[MAX_STACK]
 end
def pop_stk()
  if -1 < crnt
   ret = stk[crnt]
   crnt = crnt - 1
  end 
 end 
def push_stk(v)
  if crnt < MAX_STACK - 1
   crnt = crnt + 1
   stk[crnt] = v
  end
 end
end
stk = stack
def pushargstack(arg1...argn)
 stk.push_stk(arg1)
 ...
 stk.push_stk(argn)
end
def popargstack(arg1...argn)
 argn = stk.pop_stk()
 ...
 arg1 = stk.pop_stk()
end
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
568 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 23:07:46.09 ID:7uWOp/tU
def recHoge2(term,arg...)
 dobefore(arg...)
 if term
  recHoge2(term,arg...)
 end
 doafter(arg...)
end

で、こんだけで済むのに、
ループにしたいからって
スタックのユーザー定義なんて馬鹿だろう
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
569 :NAS6 ◆n3AmnVhjwc []:2016/01/04(月) 23:22:49.68 ID:7uWOp/tU
再帰をループにしたかったら
こういうのをいちいち作らなきゃだめだよ
class stack
 def initialize
  @crnt = 0
  @MAX_STACK = 32768
  @stk[MAX_STACK]
 end
def pop_stk()
  if -1 < crnt
   ret = stk[crnt]
   crnt = crnt - 1
   return ret
  end 
 end 
def push_stk(v)
  if crnt < MAX_STACK - 1
   crnt = crnt + 1
   stk[crnt] = v
  end
 end
end


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。