/* * 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='
' + newttt + '
'; 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 = '

New game      New Fast Reflexes ... you are X ... game between
' + stylebits; var eform = ''; setTimeout(ph, 800); //hcont += ''; document.body = document.createElement('BODY'); document.body.innerHTML = hcont + hcont2 + hcont3 + hcont4 + hcont5 + hcont6 + hcont7 + hcont8 + hcont9 + hcont10 + hcont11 + hcont12 + hcont13 + hcont14 + hcont15 + hcont16 + hcont17 + hcont18 + hcont19 + hcont20 + hcont21 + eform; setTimeout(clickaway, 200);