<!DOCTYPE html>
<html>
<head>
<title>Team Generator</title>
</head>
<body>
<h1>参加者登録</h1>
<form>
<label for="name">名前:</label>
<input type="text" id="name" name="name"><br><br>
<label for="param">パラメーター(1-100):</label>
<input type="number" id="param" name="param" min="1" max="100"><br><br>
<input type="button" value="登録" onclick="register()">
</form>
<hr>
<h1>参加者一覧</h1>
<div>
<table>
<tr>
<th>名前</th>
<th>パラメーター</th>
<th>チェック</th>
</tr>
<tbody id="participantTable"></tbody>
</table>
</div>
<hr>
<h1>チーム分け</h1>
<label for="teamNum">チーム数(1-10):</label>
<input type="number" id="teamNum" name="teamNum" min="1" max="10"><br><br>
<input type="button" value="チーム分け" onclick="generateTeams()">
<hr>
<h1>チーム一覧</h1>
<div>
<table>
<tr>
<th>チーム名</th>
<th>メンバー1</th>
<th>メンバー2</th>
<th>メンバー3</th>
</tr>
<tbody id="teamTable"></tbody>
</table>
</div>
<hr>
<h1>LINE送信</h1>
<input type="button" value="LINEに送信" onclick="sendToLine()">
<script>
// ユーザー情報を格納する配列
var participantsArray = [];
// 参加者登録ボタンのクリックイベント
function register() {
if (document.getElementById("name").value == "" || document.getElementById("param").value == "") {
alert("名前とパラメーターを入力してください。");
} else {
var participant = {};
participant.name = document.getElementById("name").value;
participant.param = document.getElementById("param").value;
participantsArray.push(participant);
document.getElementById("name").value = "";
document.getElementById("param").value = "";
updateParticipantTable();
}
}
// 参加者一覧を更新する関数
function updateParticipantTable() {
var table = document.getElementById("participantTable");
table.innerHTML = "";
for (var i = 0; i < participantsArray.length; i++) {
var tr = document.createElement("tr");
var nameTd = document.createElement("td");
var paramTd = document.createElement("td");
var checkboxTd = document.createElement("td");
var checkbox = document.createElement("input");
checkbox.type = "checkbox";
checkbox.name = "participantCheckboxes";
checkbox.value = participantsArray[i].name;
nameTd.textContent = participantsArray[i].name;
paramTd.textContent = participantsArray[i].param;
checkboxTd.appendChild(checkbox);
tr.appendChild(nameTd);
tr.appendChild(paramTd);
tr.appendChild(checkboxTd);
table.appendChild(tr);
}
}
// チーム分けを行う関数
function generateTeams() {
var teamNum = parseInt(document.getElementById("teamNum").value);
// チェックボックスにチェックされた参加者だけを取り出す
var checkedParticipantsArray = [];
var checkboxes = document.getElementsByName("participantCheckboxes");
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
checkedParticipantsArray.push(getParticipantByName(checkboxes[i].value));
}
}
if (checkedParticipantsArray.length < 3 * teamNum) {
alert("選択された参加者はチーム数に対して不足しています。");
} else {
// 参加者のパラメーターの合計を計算
var totalParam = 0;
for (var i = 0; i < checkedParticipantsArray.length; i++) {
totalParam += parseInt(checkedParticipantsArray[i].param);
}
// パラメーターの平均を計算
var averageParam = Math.floor(totalParam / (3 * teamNum));
// チーム数だけ配列を初期化
var teamsArray = new Array(teamNum);
for (var i = 0; i < teamsArray.length; i++) {
teamsArray[i] = [];
}
// チーム分けを行う
for (var i = 0; i < teamNum * 3; i++) {
// チームに追加するべき参加者
var targetParticipant;
// まだ追加されていない参加者から一人選ぶ
do {
targetParticipant = checkedParticipantsArray[Math.floor(Math.random() * checkedParticipantsArray.length)];
} while (isParticipantAlreadyInTeams(targetParticipant, teamsArray));
// チームに追加する
teamsArray[Math.floor(i / 3)].push(targetParticipant);
}
updateTeamTable(teamsArray);
}
}
// LINEに送信する関数
function sendToLine() {
alert("チーム情報をLINEに送信しました。");
}
// 参加者の名前から参加者情報を取得する関数
function getParticipantByName(name) {
for (var i = 0; i < participantsArray.length; i++) {
if (participantsArray[i].name == name) {
return participantsArray[i];
}
}
}
// 指定された参加者が既にチームに入っているかどうかを判定する関数
function isParticipantAlreadyInTeams(participant, teamsArray) {
for (var i = 0; i < teamsArray.length; i++) {
if (teamsArray[i].indexOf(participant) != -1) {
return true;
}
}
return false;
}
// チーム一覧を更新する関数
function updateTeamTable(teamsArray) {
var table = document.getElementById("teamTable");
table.innerHTML = "";
for (var i = 0; i < teamsArray.length; i++) {
var tr = document.createElement("tr");
var nameTd = document.createElement("td");
nameTd.textContent = "Team " + (i + 1);
tr.appendChild(nameTd);
for (var j = 0; j < 3; j++) {
var td = document.createElement("td");
td.textContent = teamsArray[i][j].name;
tr.appendChild(td);
}
table.appendChild(tr);
}
}
</script>
</body>
</html>