Sponsored Link


トップページへ   しりとりページへ   配布ページへ

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

ここでは、各しりとりで「ちょっとした改造」を行うためのやり方について書いています
  *各説明文中に「***行近辺」という表記がありますが、特に記載がない場合、
    平仮名のものは「WordBEET! Ver.T」、カタカナでのものは「KanaBEET!」での行数を指しています。


 1.「ん」で終わる言葉も使えるようにする(ひらがな編)
 2.「ン」で終わる言葉も使えるようにする(カタカナ編)
 3.入力語の文字として使えない文字を使えるようにする(ひらがな編)
 4.入力語の文字として使えない文字を使えるようにする(カタカナ編)


<「ん」で終わる言葉も使えるようにする(ひらがな編)>
CGIファイル全体の真ん中あたりの場所(1080行近辺)に、
「ワードのかなチェック」というところがあり、その部分は↓のようになっています。


 # 各文字についてチェック
 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 );
}
 

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


   # ワードのかなチェック
   $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ファイル全体の真ん中あたりの場所(1090行近辺)に、
「ワードのかなチェック」というところがあり、その部分は↓のようになっています。


 # 各文字についてチェック
 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 );
}
 

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


   # ワードのかなチェック
   $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ファイル全体の真ん中あたり(1080行近辺)の場所に、
「ワードのかなチェック」というところがあり、その中に↓のような部分があります。


  # 通常使わない文字チェック
  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' ); }
 

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

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

先ほどの部分と同じような↑のような部分があるので、
ここでも同様に該当する文字に対する「$tmp1 == ***」の部分を消してください。

これで、投稿文字の中にその文字が含まれてても投稿を受け付けるようにはなりましたが、
これらの文字は一般的にあまり使われない文字になるので、その文字で終わった場合、
次の方がつなげるのが困難になるという一面が出てきます。
ということで、「書き込み処理」の中にある「小文字の認識」というところ(800行近辺)を見てください。
そこで、投稿が小文字で終わった際に大文字に直す処理を行ってますので、
その処理と同様の事をして次の方がつなげやすいようにしておきましょう。

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


# 小文字の認識
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ファイル全体の真ん中あたり(1090行近辺)の場所に、
「ワードのかなチェック」というところがあり、その中に↓のような部分があります。


  # 通常使わない文字チェック
  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'); }
 

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

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

先ほどの部分と同じような↑のような部分があるので、
ここでも同様に該当する文字に対する「$tmp1 == ***」の部分を消してください。
ただし、「ヵ・ヶ」を使えるようにした場合は、以下のようにしてください。
(なお、「ヵ・ヶ」とともにワ行の文字も使えるようにする場合は、 下の変更を行ってから「$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 ) ); }
 

これで、投稿文字の中にその文字が含まれてても投稿を受け付けるようにはなりましたが、
これらの文字は一般的にあまり使われない文字になるので、その文字で終わった場合、
次の方がつなげるのが困難になるという一面が出てきます。
ということで、「書き込み処理」の中にある「小文字の認識」というところ(800行近辺)を見てください。
そこで、投稿が小文字で終わった際に大文字に直す処理を行ってますので、
その処理と同様の事をして次の方がつなげやすいようにしておきましょう。

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


# 小文字の認識
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 = 'エ'; }

 

これで、すべての手順が完了したことになります。