[過去ログ] Delphiゲームプログラミング相談室 (976レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
301
(1): 名前は開発中のものです。 [sage] 03/05/29 23:33 ID:mpTwdvzD(1/2) AAS
>>300
300(1): 名前は開発中のものです。 [sage] 03/05/29 18:32 ID:N4i9Vcx6(1) AAS
遅レスですまんが

0 1 2 3 4
 1 2 3 4 5
2 2 3 4 5
 3 3 4 5 6

移動条件を全マス上下左右+左上+右下に統一しておいて
こうずらしたほうが良くない?

0 1 2 3 4
  1 2 3 4 5
  2 2 3 4 5
    3 3 4 5 6
 5 4 3 3 3 3 4 5 6
5 4 3 2 2 2 3 4 5
 4 3 2 1 1 2 3 4 5
4 3 2 1 0 1 2 3 4
 4 3 2 1 1 2 3 4 5
5 4 3 2 2 2 3 4 5
 5 4 3 3 3 3 4 5 6

が、

    5 4 3 3 3 3 4 5 6
  5 4 3 2 2 2 3 4 5
  4 3 2 1 1 2 3 4 5
4 3 2 1 0 1 2 3 4
  4 3 2 1 1 2 3 4 5
  5 4 3 2 2 2 3 4 5
    5 4 3 3 3 3 4 5 6

になるということですか。
うーん、 >>282
282(2): 名前は開発中のものです。 [sage] 03/05/18 23:17 ID:Vqiijavw(1) AAS
>>280
今度は(1,0)-(0,1)で2になります。

x0=1;
y0=0;
x1=0;
y1=1;
xlen = Abs(0-1) = 1;
ylen = Abs(1-0) = 1;

1 <= (1 div 2) が成立しないので、
hexlen := 1 + 1 - (1 div 2) = 2;

最終的にこれでいけました。
function GetHexLen(const P1, P2: TPoint): Integer;
var
 W, H: Integer;
begin
 W := Abs(P2.X - P1.X);
 H := Abs(P2.Y - P1.Y);
 if H <= W * 2 then
 begin
  if (Odd(P1.Y) and (P1.X >= P2.X)) or
   ((not Odd(P1.Y)) and (P1.X <= P2.X)) then
   Result := H + W - H div 2
  else
   Result := W + H div 2
 end else
  Result := H;
end;
のように(1,0)−(0,1)が2になりそうな予感…。
ソース、ぷりーず。
302: 301 [sage] 03/05/29 23:44 ID:mpTwdvzD(2/2) AAS
301訂正。 「右上」だからこうですね。
5 4 3 3 3 3 4 5 6
5 4 3 2 2 2 3 4 5
  4 3 2 1 1 2 3 4 5
  4 3 2 1 0 1 2 3 4
    4 3 2 1 1 2 3 4 5
    5 4 3 2 2 2 3 4 5
      5 4 3 3 3 3 4 5 6
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s