/*
* This is a JavaScript Scratchpad.
*
* Enter some JavaScript, then Right Click or choose from the Execute Menu:
* 1. Run to evaluate the selected text (Cmd-R),
* 2. Inspect to bring up an Object Inspector on the result (Cmd-I), or,
* 3. Display to insert the result in a comment after the selection. (Cmd-L)
TicTacToe - RJM Programming - November, 2014
tictactoe.js
Usage: Firefox Scratchpad tool
*/
var between=location.search.split('between=')[1] ? decodeURIComponent(location.search.split('between=')[1].split('&')[0]) : '1.0';
var idvsclass=location.search.split('idvsclass=')[1] ? decodeURIComponent(location.search.split('idvsclass=')[1].split('&')[0]) : 'id';
var exbidvsclass=location.search.split('idvsclass=')[1] ? '&idvsclass=' + decodeURIComponent(location.search.split('idvsclass=')[1].split('&')[0]) : '';
var atend='?reflexes=y' + exbidvsclass + '&between=';
var obetween=null;
var threedots=location.search.split('idvsclass=')[1] ? "" : "";
var letter='X';
var idprefix='';
var cgoes="";
var v11=0;
var v12=0;
var v13=0;
var v21=0;
var v22=0;
var v23=0;
var v31=0;
var v32=0;
var v33=0;
var oemail=location.search.split('oemail=')[1] ? decodeURIComponent(location.search.split('oemail=')[1].split('&')[0]) : '';
var otherclicks=location.search.split('otherclicks=')[1] ? decodeURIComponent(location.search.split('otherclicks=')[1].split('&')[0]) : '';
var origc=otherclicks;
var cscore=0;
var dscore=0;
var yscore=0;
var scols=['red','olive','orange','brown','green','blue','magenta','pink','purple'];
var scolsofar=',,';
var stylebits=location.search.split('idvsclass=')[1] ? '' : '';
function isok(iou) {
if (iou.value == '') {
if (iou.placeholder == letter) {
if (letter == 'X') {
letter='X'; //'O';
} else {
letter='X';
}
return true;
} else {
return false;
}
} else {
return false;
}
}
function newgame() {
origc='';
cgoes="";
v11=0;
v12=0;
v13=0;
v21=0;
v22=0;
v23=0;
v31=0;
v32=0;
v33=0;
var huh;
if (!document.getElementById("11")) { // must be class approach
var ils=document.getElementsByTagName('img');
for (var jils=0; jils/g, '').replace(/\/\>/g, '>').replace(/\ src\=\"\/\//g, ' src="' + document.URL.split(':')[0] + '://').replace(/\ style=\"/g, ' style="' + ' width:' + rect.width + 'px !important; height:' + rect.height + 'px !important; ');
if (uptonow == '') { cdelim=''; }
var imgs=newttt.split('')[0] + '>';
thisid=thisimg.split(' id="')[1].split('"')[0];
if (thisimg.indexOf(' src="') == -1) { alert('oops! ' + thisimg); }
thissrc=thisimg.split(' src="')[1].split('"')[0];
if (thissrc.indexOf('ttcircle.') != -1) {
newttt=newttt.replace(thisimg, '⭕');
} else if (thissrc.indexOf('ttcross.') != -1) {
newttt=newttt.replace(thisimg, '❌');
} else if (thissrc.indexOf('ttnone.') != -1) {
newttt=newttt.replace(thisimg, '');
}
}
//
//
//
var newtttoh='';
document.getElementById('tdhuhta').value=newtttoh;
document.getElementById('tdto').value=oemail;
document.getElementById('fsubm').click();
orickclicks='';
origc='';
if (uptonow == '') {
alert('An email invitation to play first Noughts and Crosses move has been sent to ' + oemail + ' or you can interactively finish the game here if you like.');
} else {
alert('Computer has moved and an email invitation to play next Noughts and Crosses move sent to ' + oemail + ' or you can interactively finish the game here if you like.');
}
}
function doit(imgo) {
if (origc != '' && otherclicks == '' && oemail == '') {
location.href=document.URL.replace(encodeURIComponent(origc), encodeURIComponent(origc + ',' + imgo.id));
}
var wi = 0;
var nxt;
var suffix = '' + imgo.id;
var parentclass='', childsclass='';
if (suffix == '') { // we are using class instead
suffix = '' + imgo.className;
if (suffix != '') {
if (suffix.indexOf(' ') != -1) {
var sarr=suffix.split(' ');
for (var isarr=0; isarr= '0' && (sarr[isarr] + ' ').substring(0,1) <= '9')) {
childclass=sarr[isarr];
} else if (parentclass == '') {
parentclass=sarr[isarr];
} else {
parentclass+=' ' + sarr[isarr];
}
}
suffix=childclass;
}
}
}
if (idprefix != '') {
suffix=suffix.replace(idprefix,'');
}
if (cgoes.indexOf(";" + suffix + ";") != -1) {
alert(cvgoes + "Huh?");
} else {
if (idprefix != '') {
imgo.value = "X";
} else {
imgo.src = "//www.rjmprogramming.com.au/wordpress/ttcross.png";
}
cgoes = cgoes + ";" + suffix + ";";
switch(suffix)
{
case '11':
v11 = 1;
if (eval(v11 + v12 + v13) == 3 || eval(v11 + v21 + v31) == 3 || eval(v11 + v22 + v33) == 3) wi = 1;
break;
case '12':
v12 = 1;
if (eval(v11 + v12 + v13) == 3 || eval(v12 + v22 + v32) == 3) wi = 1;
break;
case '13':
v13 = 1;
if (eval(v11 + v12 + v13) == 3 || eval(v13 + v23 + v33) == 3 || eval(v13 + v22 + v31) == 3) wi = 1;
break;
case '21':
v21 = 1;
if (eval(v21 + v22 + v23) == 3 || eval(v11 + v21 + v31) == 3) wi = 1;
break;
case '22':
v22 = 1;
if (eval(v21 + v22 + v23) == 3 || eval(v12 + v22 + v32) == 3 || eval(v11 + v22 + v33) == 3 || eval(v13 + v22 + v31) == 3) wi = 1;
break;
case '23':
v23 = 1;
if (eval(v21 + v22 + v23) == 3 || eval(v13 + v23 + v33) == 3) wi = 1;
break;
case '31':
v31 = 1;
if (eval(v31 + v32 + v33) == 3 || eval(v13 + v22 + v31) == 3 || eval(v11 + v21 + v31) == 3) wi = 1;
break;
case '32':
v32 = 1;
if (eval(v31 + v32 + v33) == 3 || eval(v12 + v22 + v32) == 3) wi = 1;
break;
case '33':
v33 = 1;
if (eval(v31 + v32 + v33) == 3 || eval(v13 + v23 + v33) == 3 || eval(v11 + v22 + v33) == 3) wi = 1;
break;
default:
break;
}
if (wi == 1) {
yscore = yscore + 1;
alert("Congratulations! You win. Scores: Computer " + cscore + " vs You " + yscore + " (" + dscore + " draws)");
newgame();
} else if (wi == 0) {
if (v22 == 0 && (eval(v21 + v22 + v23) == -2 || eval(v12 + v22 + v32) == -2 || eval(v11 + v22 + v33) == -2 || eval(v13 + v22 + v31) == -2)) {
v22 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '22');
} else if (v11 == 0 && (eval(v11 + v12 + v13) == -2 || eval(v11 + v21 + v31) == -2 || eval(v11 + v22 + v33) == -2)) {
v11 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '11');
} else if (v13 == 0 && (eval(v11 + v12 + v13) == -2 || eval(v13 + v23 + v33) == -2 || eval(v13 + v22 + v31) == -2)) {
v13 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '13');
} else if (v31 == 0 && (eval(v31 + v32 + v33) == -2 || eval(v13 + v22 + v31) == -2 || eval(v11 + v21 + v31) == -2)) {
v31 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '31');
} else if (v33 == 0 && (eval(v31 + v32 + v33) == -2 || eval(v13 + v23 + v33) == -2 || eval(v11 + v22 + v33) == -2)) {
v33 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '33');
} else if (v12 == 0 && (eval(v11 + v12 + v13) == -2 || eval(v12 + v22 + v32) == -2)) {
v12 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '12');
} else if (v21 == 0 && (eval(v21 + v22 + v23) == -2 || eval(v11 + v21 + v31) == -2)) {
v21 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '21');
} else if (v23 == 0 && (eval(v21 + v22 + v23) == -2 || eval(v13 + v23 + v33) == -2)) {
v23 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '23');
} else if (v32 == 0 && (eval(v31 + v32 + v33) == -2 || eval(v12 + v22 + v32) == -2)) {
v32 = -1;
wi = -1;
nxt = documentgetElementById(idprefix + '32');
}
if (wi != 0) {
if (idprefix != '') {
nxt.value = "O";
} else {
nxt.src = "//www.rjmprogramming.com.au/wordpress/ttcircle.png";
}
if (idprefix != '') {
cgoes = cgoes + ";" + nxt.id.replace(idprefix,'') + ";";
} else {
cgoes = cgoes + ";" + nxt.id + ";";
}
cscore = cscore + 1;
alert("Computer wins! Bad luck. Scores: Computer " + cscore + " vs You " + yscore + " (" + dscore + " draws)");
newgame();
}
if (wi == 0) {
if (v22 == 0 && (eval(v21 + v22 + v23) == 2 || eval(v12 + v22 + v32) == 2 || eval(v11 + v22 + v33) == 2 || eval(v13 + v22 + v31) == 2)) {
v22 = -1;
nxt = documentgetElementById(idprefix + '22');
} else if (v11 == 0 && (eval(v11 + v12 + v13) == 2 || eval(v11 + v21 + v31) == 2 || eval(v11 + v22 + v33) == 2)) {
v11 = -1;
nxt = documentgetElementById(idprefix + '11');
} else if (v13 == 0 && (eval(v11 + v12 + v13) == 2 || eval(v13 + v23 + v33) == 2 || eval(v13 + v22 + v31) == 2)) {
v13 = -1;
nxt = documentgetElementById(idprefix + '13');
} else if (v31 == 0 && (eval(v31 + v32 + v33) == 2 || eval(v13 + v22 + v31) == 2 || eval(v11 + v21 + v31) == 2)) {
v31 = -1;
nxt = documentgetElementById(idprefix + '31');
} else if (v33 == 0 && (eval(v31 + v32 + v33) == 2 || eval(v13 + v23 + v33) == 2 || eval(v11 + v22 + v33) == 2)) {
v33 = -1;
nxt = documentgetElementById(idprefix + '33');
} else if (v12 == 0 && (eval(v11 + v12 + v13) == 2 || eval(v12 + v22 + v32) == 2)) {
v12 = -1;
nxt = documentgetElementById(idprefix + '12');
} else if (v21 == 0 && (eval(v21 + v22 + v23) == 2 || eval(v11 + v21 + v31) == 2)) {
v21 = -1;
nxt = documentgetElementById(idprefix + '21');
} else if (v23 == 0 && (eval(v21 + v22 + v23) == 2 || eval(v13 + v23 + v33) == 2)) {
v23 = -1;
nxt = documentgetElementById(idprefix + '23');
} else if (v32 == 0 && (eval(v31 + v32 + v33) == 2 || eval(v12 + v22 + v32) == 2)) {
v32 = -1;
nxt = documentgetElementById(idprefix + '32');
} else if (v22 == 0) {
v22 = -1;
nxt = documentgetElementById(idprefix + '22');
} else if (v11 == 0) {
v11 = -1;
nxt = documentgetElementById(idprefix + '11');
} else if (v13 == 0) {
v13 = -1;
nxt = documentgetElementById(idprefix + '13');
} else if (v31 == 0) {
v31 = -1;
nxt = documentgetElementById(idprefix + '31');
} else if (v33 == 0) {
v33 = -1;
nxt = documentgetElementById(idprefix + '33');
} else if (v12 == 0) {
v12 = -1;
nxt = documentgetElementById(idprefix + '12');
} else if (v21 == 0) {
v21 = -1;
nxt = documentgetElementById(idprefix + '21');
} else if (v23 == 0) {
v23 = -1;
nxt = documentgetElementById(idprefix + '23');
} else if (v32 == 0) {
v32 = -1;
nxt = documentgetElementById(idprefix + '32');
} else {
dscore = dscore + 1;
alert("It is a draw. Well played. Scores: Computer " + cscore + " vs You " + yscore + " (" + dscore + " draws)");
newgame();
}
if (idprefix != '') {
nxt.value = "O";
} else {
nxt.src = "//www.rjmprogramming.com.au/wordpress/ttcircle.png";
}
if (idprefix != '') {
if (('' + nxt.id) == '') {
cgoes = cgoes + ";" + nxt.className.split(' ')[0].replace(idprefix,'') + ";";
} else {
cgoes = cgoes + ";" + nxt.id.replace(idprefix,'') + ";";
}
} else {
if (('' + nxt.id) == '') {
cgoes = cgoes + ";" + nxt.className.split(' ')[0];
} else {
cgoes = cgoes + ";" + nxt.id + ";";
}
}
if (origc != '' && otherclicks == '' && oemail != '') {
tdhuhtais(document.getElementById('tttable').outerHTML, origc + ',' + nxt.id);
}
}
}
}
}
function randp() {
var ir=0,ims=document.getElementsByTagName('input');
for (var jms=0; jms').replace(' onclick="doit(this);"',' onclick="if (isok(this)) { doit(this); }"').replace('').replace(' onclick="doit(this);"',' onclick="if (isok(this)) { doit(this); }"').replace('Optionally for Emailee ';
var hcont2 = ' ';
var hcont3 = '';
var hcont4 = '';
var hcont5 = ' | ';
var hcont6 = ' | ';
var hcont7 = ' | ';
var hcont8 = '
';
var hcont9 = '';
var hcont10 = ' | ';
var hcont11 = ' | ';
var hcont12 = ' | ';
var hcont13 = '
';
var hcont14 = '';
var hcont15 = ' | ';
var hcont16 = ' | ';
var hcont17 = ' | ';
var hcont18 = '
';
var hcont19 = '';
var hcont20 = '
';
var hcont21 = '' + stylebits;
var eform = '';
setTimeout(ph, 800);
//hcont += '