【ダンジョン】 自動生成 2 【地形】at GAMEDEV【ダンジョン】 自動生成 2 【地形】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト21:1/2 07/06/24 16:31:00 PG/TOCa7 #!/usr/bin/perl -w my ($width, $height) = (60, 25); my (@x, @y); my ($i, $j, $k) = (0, 0, 0); # x 方向に適当に分割 push @x, $j += (int rand 5) + 2 while $j < $width; # 2 - 6 delete $x[-1]; ($i, $j, $k) = (0, 0, 0); # y 方向に適当に分割 push @y, $j +=(int rand 5) + 2 while $j < $height; # 2 - 6 delete $y[-1]; print +(join ', ', @x), " [", scalar @x, "]\n", +(join ', ', @y), " [", scalar @y, "]\n"; 22:2/2 07/06/24 16:32:33 PG/TOCa7 my %no_wall; # 適当に結合 for (1 .. (int rand 15) + 15) { # 15 - 29 my ($x, $y) = (int rand scalar @x, int rand scalar @y); print "$x : $y ("; my $dir = int rand 4; if ($dir == 0) { print $x . "," . ($y - 1) . "-" . $y . ")\n"; $no_wall{$x . "," . ($y - 1) . "-" . $y} = 1; } elsif ($dir == 1) { print $x . "-" . ($x + 1) . "," . $y . ")\n"; $no_wall{$x . "-" . ($x + 1) . "," . $y} = 1; } elsif ($dir == 2) { print $x . "," . $y . "-" . ($y + 1) . ")\n"; $no_wall{$x . "," . $y . "-" . ($y + 1)} = 1; } elsif ($dir == 3) { print +($x - 1) . "-" . $x . "," . $y . ")\n"; $no_wall{($x - 1) . "-" . $x . "," . $y} = 1; } } my (@x_wall, @y_wall) = (map { 0 } 1 .. $width, map { 0 } 1 .. $height); $x_wall[$_] = 1 for @x; $y_wall[$_] = 1 for @y; my (@x_room, @y_room); $i = 0; @x_room = map { ++$i if $x_wall[$_]; $i; } 0 .. $width - 1; $i = 0; @y_room = map { ++$i if $y_wall[$_]; $i; } 0 .. $height - 1; for my $y (0 .. $height - 1) { for my $x (0 .. $width - 1) { my ($xr, $yr) = ($x_room[$x], $y_room[$y]); $x_wall[$x] and (!$no_wall{($xr - 1) . "-" . $xr . "," . $yr} and ($y_wall[$y] and print "+" or print "|") or print "."); $y_wall[$y] and !$no_wall{$xr . "," . ($yr - 1) . "-" . $yr} and print "-" or print "."; } print "\n"; } ---- ごめん俺は投げた 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch