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

昨日言っていた、ノーマルモード設定の色をかぶらないようにするところ、
やっぱり全然だめだった;
もっと考えないとな;
なので悪あがき的な修正をしてみました。
一応、短くはなってます。

*修正前


//色がかぶってないか確かめる。かぶってたら交換する
function siraberu(pban,ban){

if(pban == 1){
if(document.hito.p2[ban].checked == true){
document.hito.p2[iro1].checked = true;
iro2 = document.hito.p2[iro1].value;
}else if(document.hito.p3[ban].checked == true){
document.hito.p3[iro1].checked = true;
iro3 = document.hito.p3[iro1].value;
}
iro1 = document.hito.p1[ban].value;
}else if(pban == 2){
if(document.hito.p1[ban].checked == true){
document.hito.p1[iro2].checked = true;
iro1 = document.hito.p1[iro2].value;
}else if(document.hito.p3[ban].checked == true){
document.hito.p3[iro2].checked = true;
iro3 = document.hito.p3[iro2].value;
}
iro2 = document.hito.p2[ban].value;
}else if(pban == 3){
if(document.hito.p1[ban].checked == true){
document.hito.p1[iro3].checked = true;
iro1 = document.hito.p1[iro3].value;
}else if(document.hito.p2[ban].checked == true){
document.hito.p2[iro3].checked = true;
iro2 = document.hito.p2[iro3].value;
}
iro3 = document.hito.p3[ban].value;
}
}

プレイヤー1の色を変えたら2と3とかぶってないか見る。
プレイヤー2の色を変えたら1と3とかぶってないか見る。
どうやったら上手くまとめられるのだろう><;
とりあえず引数は、プレイヤーのナンバー(1~3)と、色の番号(1~4)になってます。
さて、今回はいい方法が思いつかなかったので、とりあえず色を交換するとこだけ関数にしてみました。

*変更後


//色がかぶってないか確かめる。かぶってたら交換する
function change(prayerNumber,number){

if(prayerNumber == 1){
if(document.config.prayer2[number].checked == true){
color2 = changeBox(document.config.prayer2,color1);
}else if(document.config.prayer3[number].checked == true){
color3 = changeBox(document.config.prayer3,color1);
}
color1 = document.config.prayer1[number].value;

}else if(prayerNumber == 2){
if(document.config.prayer1[number].checked == true){
color1 = changeBox(document.config.prayer1,color2);
}else if(document.config.prayer3[number].checked == true){
color3 = changeBox(document.config.prayer3,color2);
}
color2 = document.config.prayer2[number].value;
}else if(prayerNumber == 3){
if(document.config.prayer1[number].checked == true){
color1 = changeBox(document.config.prayer1,color3);
}else if(document.config.prayer2[number].checked == true){
color2 = changeBox(document.config.prayer2,color3);
}
color3 = document.config.prayer3[number].value;
}
}

//色を交換
function changeBox(checkBox,color) {
checkBox[color].checked = true;
return checkBox[color].value;
}

こんな感じです。
でもまだなんか縮められそうに思える。。

さて、ここまで書いて、ここもクラス定義して作れんじゃないかと思った。
プレイヤー番号、種類、色みたいな値を持たせて。
どうだろうか。
そしたら結構変わりそうだなぁ。。