123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- var hidden = true;
- document.getElementById('show').onclick = function(){
- if(hidden) {
- document.getElementById('side').style.width = '200px';
- } else {
- document.getElementById('side').style.width = '0';
- }
- hidden = !hidden;
- };
- document.getElementById('full').onclick = function(){
- if(!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement)
- {
- var elem = document.getElementsByTagName('body')[0];
- var requestFullScreen = elem.requestFullscreen || elem.msRequestFullscreen || elem.mozRequestFullScreen || elem.webkitRequestFullscreen;
- requestFullScreen.call(elem);
- }
- else {
- var exitFullScreen = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
- exitFullScreen.call(document);
- }
- };
- var canvas = document.getElementById('canvas');
- var context = canvas.getContext('2d');
- function resize() {
- canvas.width = window.innerWidth;
- canvas.height = window.innerHeight;
- }
- window.addEventListener('resize', resize);
- resize();
- var dim = 100; // 10x10
- var sq = []
- for(var i = 0; i < dim*dim; i++) {
- if(i % dim < dim/2) {
- sq.push(true)
- } else {
- sq.push(false)
- }
- }
- var t0 = performance.now();
- function loop(t)
- {
- var dt = (t - t0) / 1000; // delta t, in seconds
- t0 = t;
- var fy = 0;
- var size = Math.min(canvas.height, canvas.width) / dim;
- let newArray = []; newArray.length = dim*dim
- for(var i = 0; i < sq.length; i++) {
- newArray[i] = decideOutcome(i)
- context.fillStyle = newArray[i] ? 'red' : 'blue'
- context.fillRect((i % dim)*size+1, Math.floor(i/dim) * size+1, size-2, size-2);
- }
- sq = newArray;
- window.requestAnimationFrame(loop);
- }
- function decideOutcome(i) {
- score = 0; // probability of true gaining control of this square
- divisor = 0;
- function op(b) {
- divisor += 1;
- if(b) {
- score += 1;
- }
- }
- if(i % dim == 0) {
- // first column
- op(sq[i+1]) // search right
- }
- else if(i % dim == dim-1) {
- //last column
- op(sq[i-1]) // search left
- }
- else {
- op(sq[i+1]) // search right
- op(sq[i-1]) // search left
- }
- if(i < dim) {
- // first row
- op(sq[i+dim]) // search down
- }
- else if(i >= sq.length - dim) {
- // last row
- op(sq[i-dim]) // search up
- }
- else {
- op(sq[i+dim]) // search down
- op(sq[i-dim]) // search up
- }
- return (Math.random() < (score/divisor))
- }
-
- window.requestAnimationFrame(loop);
|