トップページWordBEET!改造版 配布ページ > WordBEET!改造版 ワンポイント改造法

WordBEET!改造版 ワンポイント改造法

ここでは、各しりとりで「ちょっとした改造」を行うためのやり方について書いています。

各説明文中に「***行近辺」という表記がありますが、特に記載がない場合、
平仮名のものは「WordBEET! Ver.T(ver. 1.30)」、カタカナでのものは「KanaBEET!(ver. 1.30)」での行数を指しています。
その他のしりとりで改造を行う際は対応する行数が変わりますのでご注意ください。

以下の各項目のリンクをクリックすると、リンク部分の下に改造内容が表示されます。

「ん」で終わる言葉も使えるようにする(ひらがな編)

CGIファイル全体の真ん中あたりの場所(1140行近辺)に、
「ワードのかなチェック」というところがあり、その部分(1150行近辺)は↓のようになっています。

 # 各文字についてチェック
 while( $i < $#tmp1 ) {

  # 「ー」を無視
  if( $tmp1[$i] == 129 && $tmp1[$i+1] == 91 ) { $i += 2; next; }

  $tmp2 = $tmp1[$i+1];
  # ひらがなかどうかチェック
  if( $tmp1[$i] != 130 || $tmp2 < 159 || $tmp2 > 241 ) { return( 'F' ); }

  # 通常使わない文字チェック
  if( $tmp2 == 236 || $tmp2 == 238 || $tmp2 == 239 ||
    $tmp2== 240 ) { return( 'W' ); }

  $i += 2;
 }

 # 「ん」チェック
 if( $tmp2 == 241 ) { return( 'N' ); }

 # ラストの文字をパック
 $tmp3 = pack( "CC", ( 130, $tmp2 ) );

 # ラストの文字を返す
 return( $tmp3 );
}

そして、↑の青文字の部分を削除して、 赤文字の部分を以下のように変更します。

# 「ー」「ん」を無視
if(($tmp1[$i] == 129 && $tmp1[$i+1] == 91) || ($tmp1[$i] == 130 && $tmp1[$i+1] == 241)) { $i += 2; next; }

そうすると、変更後は↓のようになります。

 # 各文字についてチェック
 while( $i < $#tmp1 ) {

  # 「ー」「ん」を無視
  if(($tmp1[$i] == 129 && $tmp1[$i+1] == 91) || ($tmp1[$i] == 130 && $tmp1[$i+1] == 241)) { $i += 2; next; }

  $tmp2 = $tmp1[$i+1];
  # ひらがなかどうかチェック
  if( $tmp1[$i] != 130 || $tmp2 < 159 || $tmp2 > 241 ) { return( 'F' ); }

  # 通常使わない文字チェック
  if( $tmp2 == 236 || $tmp2 == 238 || $tmp2 == 239 ||
    $tmp2== 240 ) { return( 'W' ); }

  $i += 2;
 }

 # ラストの文字をパック
 $tmp3 = pack( "CC", ( 130, $tmp2 ) );

 # ラストの文字を返す
 return( $tmp3 );
}

そして、ちょっと戻って(720行近辺)「書き込み処理」というところを見てください。
ワードに関する書き込み処理の部分になります。 コメントに関する書き込み処理の部分ではないので注意してください)
そこに、以下のような文字チェックの結果に対するエラーを出す部分があるので、

# ワードのかなチェック
$kchr = &checkword( $in{'word'} );

if( $kchr eq 'F' ) { &error( "書込項目エラー",
  "ワードにひらがなでない文字が含まれています。"); }
if( $kchr eq 'W' ) { &error( "書込項目エラー",
  "ワードに通常使われない文字が含まれています。"); }
if( $kchr eq 'N' ) { &error( "書込項目エラー",
  "ワードが「ん」で終わっています。"); }
if( $kchr eq 'O' ) { &error( "書込項目エラー",
  "1文字のワードは無効です。"); }

↑の青文字の部分を削除すると、「ん」で終わる文字を入れることが可能になります。

「ン」で終わる言葉も使えるようにする(カタカナ編)

CGIファイル全体の真ん中あたりの場所(1140行近辺)に、
「ワードのかなチェック」というところがあり、その部分(1150行近辺)は↓のようになっています。

 # 各文字についてチェック
 while( $i < $#tmp1 ) {

  # 「ー」を無視
  if( $tmp1[$i] == 129 && $tmp1[$i+1] == 91 ) { $i += 2; next; }

  $tmp2 = $tmp1[$i+1];
  # カタカナかどうかチェック
  if( $tmp1[$i] != 131 || $tmp2 < 64 || $tmp2 > 150 ) { return( 'F' ); }

  # 通常使わない文字チェック
  if( $tmp2 == 127 || $tmp2 == 142 || $tmp2 == 144 || $tmp2 == 145 ||
    $tmp2 == 146 || $tmp2 == 149 || $tmp2 == 150 ) { return( 'W' ); }

  $i += 2;
 }

 # 「ン」のチェック
 if( $tmp2 == 147 ) { return( 'N' ); }

 # ラストの文字をパック
 $tmp3 = pack( "CC", ( 131, $tmp2 ) );

 # ラストの文字を返す
 return( $tmp3 );
}

そして、↑の青文字の部分を削除して、 赤文字の部分を以下のように変更します。

# 「ー」「ン」を無視
if(($tmp1[$i] == 129 && $tmp1[$i+1] == 91) || ($tmp1[$i] == 131 && $tmp1[$i+1] == 147)) { $i += 2; next; }

そうすると、変更後は↓のようになります。

 # 各文字についてチェック
 while( $i < $#tmp1 ) {

  # 「ー」「ン」を無視
  if(($tmp1[$i] == 129 && $tmp1[$i+1] == 91) || ($tmp1[$i] == 131 && $tmp1[$i+1] == 147)) { $i += 2; next; }

  $tmp2 = $tmp1[$i+1];
  # カタカナかどうかチェック
  if( $tmp1[$i] != 131 || $tmp2 < 64 || $tmp2 > 150 ) { return( 'F' ); }

  # 通常使わない文字チェック
  if( $tmp2 == 127 || $tmp2 == 142 || $tmp2 == 144 || $tmp2 == 145 ||
    $tmp2 == 146 || $tmp2 == 149 || $tmp2 == 150 ) { return( 'W' ); }

  $i += 2;
 }

 # ラストの文字をパック
 $tmp3 = pack( "CC", ( 131, $tmp2 ) );

 # ラストの文字を返す
 return( $tmp3 );
}

そして、ちょっと戻って(720行近辺)「書き込み処理」というところを見てください。
ワードに関する書き込み処理の部分になります。 コメントに関する書き込み処理の部分ではないので注意してください)
そこに、以下のような文字チェックの結果に対するエラーを出す部分があるので、

# ワードのかなチェック
$kchr = &checkword( $in{'word'} );

if( $kchr eq 'F' ) { &error( "書込項目エラー",
  "ワードにカタカナでない文字が含まれています。"); }
if( $kchr eq 'W' ) { &error( "書込項目エラー",
  "ワードに通常使われない文字が含まれています。"); }
if( $kchr eq 'N' ) { &error( "書込項目エラー",
  "ワードが「ン」で終わっています。"); }
if( $kchr eq 'O' ) { &error( "書込項目エラー",
  "1文字のワードは無効です。"); }

↑の青文字の部分を削除すると、「ン」で終わる文字を入れることが可能になります。

入力語の文字として使えない文字を使えるようにする(ひらがな編)

CGIファイル全体の真ん中あたりの場所(1140行近辺)に、
「ワードのかなチェック」というところがあり、その中(1160行近辺)に↓のような部分があります。

  # 通常使わない文字チェック
  if( $tmp2 == 236 || $tmp2 == 238 || $tmp2 == 239 ||
    $tmp2== 240 ) { return( 'W' ); }

この部分で特定文字に対するチェックを行っていて、
236で「ゎ」、238で「ゐ」、239で「ゑ」、240「を」の判定を行っています。
そのため、ここで該当する文字に対する「$tmp2 == ***」の部分を消すと、
その文字を使った投稿を行うことができるようになります。

例えば、「を」を使えるように変更する場合は、

  # 通常使わない文字チェック
  if( $tmp2 == 236 || $tmp2 == 238 || $tmp2 == 239 ||
    $tmp2== 240
) { return( 'W' ); }

↑の青文字の部分を削除して、↓のようにします。

  # 通常使わない文字チェック
  if( $tmp2 == 236 || $tmp2 == 238 || $tmp2 == 239) { return( 'W' ); }

次に、少し下(1210行近辺)に移動して、「ランダムなひらがなを生成」というところを見てください。

  while( $tmp2 == 236 || $tmp2 == 238 || $tmp2 == 239 || $tmp2== 240 )
    { $tmp1 = 159 + int( rand( 83 ) ); }

先ほど作業した場所と似た内容である↑のような部分があるので、
ここも先ほどと同様に、該当する文字に対する「$tmp2 == ***」の部分を消してください。

これで、投稿文字の中にその文字が含まれてても投稿を受け付けるようにはなりましたが、
これらの文字は一般的にあまり使われない文字になるので、その文字で終わった場合、
次の方がつなげるのが困難になるという一面が出てきます。
そのため、厳密に言うと違う文字ではありますが、
近い文字に置き換えて次の方がつなげやすいようにしておきましょう。

ということで、「書き込み処理」の中にある「小文字の認識」というところ(820行近辺)を見てください。
そこで、投稿が小文字で終わった際に大文字に直す処理を行ってますので、
その処理と同様の事をして特殊な文字から一般的な文字への置き換えを行います。

例えば、先ほどと同じく「を」を使えるようにする場合ですが、

# 小文字の認識
if ( $kchr eq 'ぁ' ) { $kchr = 'あ'; }
elsif( $kchr eq 'ぃ' ) { $kchr = 'い'; }
elsif( $kchr eq 'ぅ' ) { $kchr = 'う'; }
elsif( $kchr eq 'ぇ' ) { $kchr = 'え'; }
elsif( $kchr eq 'ぉ' ) { $kchr = 'お'; }
elsif( $kchr eq 'ゃ' ) { $kchr = 'や'; }
elsif( $kchr eq 'ゅ' ) { $kchr = 'ゆ'; }
elsif( $kchr eq 'ょ' ) { $kchr = 'よ'; }
elsif( $kchr eq 'っ' ) { $kchr = 'つ'; }

↑の部分に「 elsif( $kchr eq 'を' ) { $kchr = 'お'; }」と追加して、
↓のような形にすることで「を」で終わった場合は「お」から始まる言葉でつながるようになります。

# 小文字の認識
if ( $kchr eq 'ぁ' ) { $kchr = 'あ'; }
elsif( $kchr eq 'ぃ' ) { $kchr = 'い'; }
elsif( $kchr eq 'ぅ' ) { $kchr = 'う'; }
elsif( $kchr eq 'ぇ' ) { $kchr = 'え'; }
elsif( $kchr eq 'ぉ' ) { $kchr = 'お'; }
elsif( $kchr eq 'ゃ' ) { $kchr = 'や'; }
elsif( $kchr eq 'ゅ' ) { $kchr = 'ゆ'; }
elsif( $kchr eq 'ょ' ) { $kchr = 'よ'; }
elsif( $kchr eq 'っ' ) { $kchr = 'つ'; }
elsif( $kchr eq 'を' ) { $kchr = 'お'; }

これで、すべての手順の完了です。

入力語の文字として使えない文字を使えるようにする(カタカナ編)

CGIファイル全体の真ん中あたりの場所(1140行近辺)に、
「ワードのかなチェック」というところがあり、その中(1160行近辺)に↓のような部分があります。

  # 通常使わない文字チェック
  if( $tmp2 == 127 || $tmp2 == 142 || $tmp2 == 144 || $tmp2 == 145 ||
    $tmp2 == 146 || $tmp2 == 149 || $tmp2 == 150 ) { return( 'W' ); }

この部分で特定文字に対するチェックを行っていて、
142で「ヮ」、144で「ヰ」、145で「ヱ」、146「ヲ」、149で「ヵ」、150で「ヶ」の判定を行っています。
(127は文字コード上の抜け番となるためのもので、ここでは特に関係ありません)
そのため、ここで該当する文字に対する「$tmp2 == ***」の部分を消すと、
その文字を使った投稿を行うことができるようになります。

例えば、「ヰ・ヱ」を使えるように変更する場合は、

  # 通常使わない文字チェック
  if( $tmp2 == 127 || $tmp2 == 142 || $tmp2 == 144 || $tmp2 == 145 ||
    $tmp2 == 146 || $tmp2 == 149 || $tmp2 == 150 ) { return( 'W' ); }

↑の青文字の部分を削除して、↓のようにします。

  # 通常使わない文字チェック
  if( $tmp2 == 127 || $tmp2 == 142 || $tmp2 == 146 || $tmp2 == 149 || $tmp2 == 150 ) { return( 'W' ); }

次に、少し下(1210行近辺)に移動して、「ランダムなカタカナを生成」というところを見てください。

  while($tmp1 == 127 || $tmp1 == 142 || $tmp1 == 144 || $tmp1 == 145 || $tmp1 == 146)
    { $tmp1 = 64 + int(rand(85)); }

先ほど作業した場所と似た内容である↑のような部分があるので、
ここも先ほどと同様に、該当する文字に対する「$tmp2 == ***」の部分を消してください。

ただし、「ヵ・ヶ」を使えるようにした場合は、以下のようにしてください。
(なお、「ヵ・ヶ」とともにワ行の文字も使えるようにする場合は、 下の変更を行ってから「$tmp1 == ***」の部分を消すようにしてください。)

< 「ヵ」だけ使えるようにした場合 >

  while($tmp1 == 127 || $tmp1 == 142 || $tmp1 == 144 || $tmp1 == 145 || $tmp1 == 146)
    { $tmp1 = 64 + int( rand( 86 ) ); }

< 「ヶ」だけ使えるようにした場合 >

  while($tmp1 == 127 || $tmp1 == 142 || $tmp1 == 144 || $tmp1 == 145 || $tmp1 == 146 || $tmp1 == 149)
    { $tmp1 = 64 + int( rand( 87 ) ); }

< 「ヵ・ヶ」ともに使えるようにした場合 >

  while($tmp1 == 127 || $tmp1 == 142 || $tmp1 == 144 || $tmp1 == 145 || $tmp1 == 146)
    { $tmp1 = 64 + int( rand( 87 ) ); }

これで、投稿文字の中にその文字が含まれてても投稿を受け付けるようにはなりましたが、
これらの文字は一般的にあまり使われない文字になるので、その文字で終わった場合、
次の方がつなげるのが困難になるという一面が出てきます。
そのため、厳密に言うと違う文字ではありますが、
近い文字に置き換えて次の方がつなげやすいようにしておきましょう。

ということで、「書き込み処理」の中にある「小文字の認識」というところ(820行近辺)を見てください。
そこで、投稿が小文字で終わった際に大文字に直す処理を行ってますので、
その処理と同様の事をして特殊な文字から一般的な文字への置き換えを行います。

例えば、先ほどと同じく「ヰ・ヱ」を使えるようにする場合ですが、

# 小文字の認識
if ( $kchr eq 'ァ' ) { $kchr = 'ア'; }
elsif( $kchr eq 'ィ' ) { $kchr = 'イ'; }
elsif( $kchr eq 'ゥ' ) { $kchr = 'ウ'; }
elsif( $kchr eq 'ェ' ) { $kchr = 'エ'; }
elsif( $kchr eq 'ォ' ) { $kchr = 'オ'; }
elsif( $kchr eq 'ャ' ) { $kchr = 'ヤ'; }
elsif( $kchr eq 'ュ' ) { $kchr = 'ユ'; }
elsif( $kchr eq 'ョ' ) { $kchr = 'ヨ'; }
elsif( $kchr eq 'ッ' ) { $kchr = 'ツ'; }

↑の部分に「elsif( $kchr eq 'ヰ' ) { $kchr = 'イ'; }」というのと、
elsif( $kchr eq 'ヱ' ) { $kchr = 'エ'; }」というのを追加して、
↓のような形にすることで「ヰ・ヱ」で終わった場合は「イ・エ」から始まる言葉でつながるようになります。

# 小文字の認識
if ( $kchr eq 'ァ' ) { $kchr = 'ア'; }
elsif( $kchr eq 'ィ' ) { $kchr = 'イ'; }
elsif( $kchr eq 'ゥ' ) { $kchr = 'ウ'; }
elsif( $kchr eq 'ェ' ) { $kchr = 'エ'; }
elsif( $kchr eq 'ォ' ) { $kchr = 'オ'; }
elsif( $kchr eq 'ャ' ) { $kchr = 'ヤ'; }
elsif( $kchr eq 'ュ' ) { $kchr = 'ユ'; }
elsif( $kchr eq 'ョ' ) { $kchr = 'ヨ'; }
elsif( $kchr eq 'ッ' ) { $kchr = 'ツ'; }
elsif( $kchr eq 'ヰ' ) { $kchr = 'イ'; }
elsif( $kchr eq 'ヱ' ) { $kchr = 'エ'; }

これで、すべての手順の完了です。