botsArena/html/testBotScripts/tron.html

261 lines
7.5 KiB
HTML
Executable File

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="author" content="Gnieark" />
<title>Trons's Ludus</title>
<style type="text/css">
body{width:100%; font-size:100%; line-height:140%; word-wrap:break-word; text-rendering:optimizelegibility;
margin:0 auto; font-family : "lucida grande", "gill sans", arial, sans-serif; left:auto;}
header{ background-color:#A60800; width: 100%; overflow: hidden; height: auto;}
header h1{display: block; font-size:300%; color:#FFF;float: left; margin-left: 5%;}
header nav{display: block; width: 45%; color:#FFF; float: right;}
#menus{ margin-left: 50px; width:100%; display: table;}
#menus a{color: #fff; display: table-cell; text-decoration: none;text-align: center;border-radius: 15px 15px 0px 0px;}
#menus a.selected{color:#202020; background-color:#fff;}
footer{height: 70px; display: block; color: #343638; font-size: 11pt; line-height: 15pt; margin: 0; padding-top: 15pt;
overflow-x: hidden; box-sizing: border-box; background-image: -webkit-linear-gradient(top, #f5f5f5,#e9e9e9);
border-top: 1px solid #bebebe; color: #999; font-size: 12px; line-height: 1.5em; text-align: center;width: 100%;}
footer a {margin:0px 15px 0px 15px; color: #666;text-decoration: none; font-weight: normal;}
#languages{float: right; text-align: right;}
section{margin: 0 auto; width: 90%;}
aside, .large {width:100%;}
article{}
.playerBox{ float:left; max-width: 300px;}
.playerBox em {width: 100%;}
.playerBox em label {text-overflow: hidden; display: inline-block; width: 30%; margin-right: 20px; vertical-align: top; text-align: right;}
.playerBox em input, .playerBox em select {box-sizing: border-box; width: 59%; padding: 4px; vertical-align: top; }
.playerBox input[type=button] {width:100;}
.hidden{display: none;}
#logs{font-size: 70%;}
</style>
<script><!--
function createElem(type,attributes){
var elem=document.createElement(type);
for (var i in attributes)
{elem.setAttribute(i,attributes[i]);}
return elem;
}
function makeid(){
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
function changeRandom(index,newValue){
if (newValue == "random" ){
document.getElementById("posX" + index).className = "hidden";
document.getElementById("posY" + index).className = "hidden";
}else{
document.getElementById("posX" + index).className = "";
document.getElementById("posY" + index).className = "";
}
}
function changeTypePlayer(index,newValue){
//alert("botUrl" + index);
if (newValue == "human") document.getElementById("botUrl" + index).className = "hidden";
else document.getElementById("botUrl" + index).className= "";
}
function createElemWithLabel(type,attributes,labelTxt, id =''){
/*
* return an em element containing label and data like this:
* <em id='kjhjk'>
* <label for="plop"> the text of blah blah </label>
* <input type='someType' value='kjhjlkh' id='plop'/>
* </em>
*/
if( id == ''){
var em = createElem ('em',{});
}else{
var em = createElem ('em',{'id':id});
}
if (typeof attributes['id'] !== 'undefined') {
var forId = attributes['id'];
}else{
var forId = makeid();
}
var label = createElem('label',{'for' : forId});
label.innerHTML = labelTxt;
em.appendChild(label);
var elem = createElem(type,attributes);
if (typeof attributes['id'] !== 'undefined') {
em.setAttribute('id',forId);
}
em.appendChild(elem);
return em;
}
function createLineSelect(labelTxt,arrayOptions,attributes){
//attributes are the select 's attributes, not his container
var em = createElem('em',{});
if (typeof attributes['id'] !== 'undefined') {
var forId = attributes['id'];
}else{
var forId = makeid();
}
var label = createElem('label',{'for':forId});
label.innerHTML = labelTxt;
em.appendChild(label);
var select = createElem('select',attributes);
if (typeof attributes['id'] !== 'undefined') {
select.setAttribute('id',forId);
}
for(var i=0; i < arrayOptions.length; i++){
var option = createElem('option',{'value':arrayOptions[i]['value']});
option.innerHTML = arrayOptions[i]['text'];
select.appendChild(option);
}
em.appendChild(select);
return em;
}
function createPlayerForm(index){
var container = document.getElementById("playersSettings");
var divForm = createElem("div", {"id": "containerPlayer" + index,"class":"playerBox" } );
var subtitle = createElem('h3',{});
subtitle.innerHTML = 'Bot ' + index;
divForm.appendChild(subtitle);
divForm.appendChild(
createLineSelect('Type:',
[ {'value':'bot','text' : 'bot'},
{'value':'human','text' : 'human'}
],
{"id":"playerType" + index,
"onchange":"changeTypePlayer('" + index + "', this.value);"
}
)
);
divForm.appendChild(
createElemWithLabel(
'input',
{
"type": "text", "value":"",
"placeholder":"http://Bot.url"
},
'URL du Bot',
'botUrl' + index
)
);
divForm.appendChild(
createLineSelect('Starting cell:',
[ {'value':'random','text' : 'random'},
{'value':'defined','text' : 'Let me define it'}
],
{
"id": "randomOrNot" + index,
"onchange":"changeRandom('" + index + "', this.value);"
}
)
);
divForm.appendChild(
createElemWithLabel(
'input',
{"type":"text","value": "0"},
'X coord:',
"posX" + index
)
);
divForm.appendChild(
createElemWithLabel(
'input',
{"type":"text","value": "0"},
'Y coord:',
"posY" + index
)
);
divForm.appendChild(createElemWithLabel(
'input',
{
'type':'button',
'value':'Add another player',
'onclick':'createPlayerForm(\'' + (parseFloat(index) + 1) + '\');'
},
'',
'fightButton' + index
)
);
container.appendChild(divForm);
//delete the previous submit button
if(index > 0){
//alert('fightButton' +(parseFloat(index) - 1 ));
var theButton = document.getElementById('fightButton' +(parseFloat(index) - 1 ));
theButton.parentNode.removeChild(theButton);
}
//to hide by default:
//changeTypePlayer(index,'human');
changeRandom(index,'random');
//scroll down
window.scrollTo(0,document.body.scrollHeight);
//show (or not) button to launch the game
if( index > 0){
document.getElementById('buttonFight').className="large";
}else{
document.getElementById('buttonFight').className="hidden";
}
}
function initGame(playersSum){
//find all vars
//how many bots
}
--></script>
</head>
<body>
<header>
<h1>Tron's Ludus</h1>
</header>
<section>
<p>Here you can test and fix your bot, against himself, against human or against any other bot if you know the URL.
<br/>No scoring here, it's a Ludus (gladiators training center).</p>
<aside id="playersSettings">
<h2>Configure the test</h2>
</aside>
<article id="fightResult">
<p><input id='buttonFight' type='button' value='Fight' class="hidden" onclick='initGame();'/></p>
</article>
</section>
<footer>
<a href="/p/About">About</a><a href="https://github.com/gnieark/botsArena">Bots'Arena source code</a><a href="/p/legals">Mentions légales</a>
<script>
createPlayerForm(0);
</script>
</footer>
</body>
</html>