昔のプログラムをちょっと直してみた その2

今日も昨日の続きでプログラム直してみた。
同じく設定のところ。

ではまず変数前から


function settei(){

//駒の場所と順番の値の確保
for(i=0;i<2;i++){
if(document.hito.aka[i].checked == true){
botan1 = document.hito.aka[i].value;
if(i == 0){
hito1 = 10;
}else if(i == 1){
hito1 = 20;
}
}
if(document.hito.midori[i].checked == true){
botan2 = document.hito.midori[i].value;
if(i == 0){
hito2 = 10;
}else if(i == 1){
hito2 = 20;
}
}
}
for(i=0;i<3;i++){
if(document.hito.ki[i].checked == true){
botan3 = document.hito.ki[i].value;
if(i == 0){
hito3 = 10;
}else if(i == 1){
hito3 = 20;
}else if(i == 2){
hito3 = 30;
}
}
}

//駒の色をまとめる
//-0をして、数値をいれる
iro1 = iro1 - 0 + hito1 - 0 + 1;
iro2 = iro2 - 0 + hito2 - 0 + 1;
iro3 = iro3 - 0 + hito3 - 0 + 1;
iro = iro1 + "," + iro2 + "," + iro3;

//それぞれのリンクにとばせ!
location.href = "nomal.html"+"?"+iro;


}

またコピペの連続です^^
えーこれはですね、まずプレイヤーがどの種類かを調べてます。
10->プレイヤー,20->コンピューター,30->なし,となっています。
ちなみに色の方は、 
1->赤,2->緑,3->黄,4->青,となっています。
で、そのあとこの2つの数字を足したものを3人分、次のnomal.htmlに引き渡しています。
「-0」で数字にするとか、どこで手に入れた情報だろう?
ちなみに駒の色をまとめてるところで+1しているのは、この時点ではまだ赤は0だからです。
多分nomal.htmlの方で、1だったら赤みたいな判定してるから+1してるんだろうな。

さて改善点。
例によってコピーな部分を減らして変数名を修正してみました。


//駒の場所と順番の値の確保
function set(){
prayer1 = boxSet(document.config.red);
prayer2 = boxSet(document.config.green);
prayer3 = boxSet(document.config.yellow);

//駒の色をまとめる
color = sum(color1,prayer1) + "," + sum(color2,prayer2) + "," + sum(color3,prayer3);

//それぞれのリンクにとばせ!
location.href = "nomal.html"+"?"+color;

}

//それぞれのプレイヤーの色と種類の値をまとめる
function sum(color,prayer){
return parseInt(prayer) * 10 + parseInt(color) + 1;
}

こんな感じにしてみました!
だいぶ短くなった!!
で、これにともなって、昨日作った


function set(checkbox) {
for(i=0;i<4;i++){
if(checkbox[i].checked == true){
return checkbox[i].value;
}
}
}

↑これを、

function boxSet(checkbox) {
length = checkbox.length;
for(i=0;i<length;i++){
if(checkbox[i].checked == true){
return checkbox[i].value;
}
}
}
↑こんな感じに変えてみました。
なので昨日変えたこの関数呼んでいたところも、関数名だけなのですが

function initialize(){
color1 = boxSet(document.config.prayer1);
color2 = boxSet(document.config.prayer2);
color3 = boxSet(document.config.prayer3);
}

というように変えました。

今回の変更で嬉しかった事は、数字を使ってる所を減らせたこと。
あと昨日より目に見えて短くなっていること。
どうにかならないかなと感じるところは、*10と+1。
今は変えられないけど、いずれ何か方法を考えたい。
とりあえずなるべく短くするために数字2桁で渡すようにしたんだろうな。
わかりやすくないし。。

さて、問題はあと一つの関数。
3×4のチェックボックスをどこも重ならないように処理するやつ。
同じ様な文のはずなんだけど、いまいちどうまとめるか思いつかない;
とりあえずがんばろう〜♪

追記:
//それぞれのリンクにとばせ!
ってあるけど、リンク1個しかないのにそれぞれっておかしいよね。
多分複数あったときの名残かな。
ちゃんと直せってね。。
最初はプレイヤーの種類別にわけようとしてたんだよなー。懐かしい。。