fickle chilpaekpal Follow 2011-10-26 12:23:20 License: MIT License Fork1 Fav0 View327 Play Stop Reload Fullscreen Smart Phone Fork tree Readme JavaScript 120 lines HTML 1 lines CSS 1 lines fickle function Fickle(){ var origin_x = 0; var origin_y = 0; var spacing = 1; var square_side_length = 20; var num_columns = 20; var num_rows = 20; // borrowed color palette from krmt // krmt borrowed from http://colourlovers.com/palette/694737/Thought_Provoking var color_palette = ["#ECD078", "#D95B43", "#C02942", "#542347", "#53777A"]; var square_big_border = 5; var width; var height; var square_array = []; var big_square_array = []; var canvas; var ctx; canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d"); width = window.innerWidth; height = window.innerHeight; canvas.width = width; canvas.height = height; num_columns = width / (square_side_length + spacing); num_rows = height / (square_side_length + spacing); function ClearCanvas(){ ctx.clearRect(0, 0, width, height); } function Square(topleft_x, topleft_y, square_side){ this.topleft_x = topleft_x; this.topleft_y = topleft_y; this.square_side = square_side; this.color = color_palette[Math.floor(Math.random()*color_palette.length)]; this.checkMerge = function(){ return false; }; this.isTouched = function(mouse_x, mouse_y){ return (mouse_x >= this.topleft_x) && (mouse_y >= this.topleft_y) && (mouse_x < this.topleft_x+this.square_side) && (mouse_y < this.topleft_y+this.square_side); }; this.drawBigger = function(pixel_border){ ctx.fillStyle = this.color; ctx.fillRect(this.topleft_x-pixel_border, this.topleft_y-pixel_border, this.square_side+2*pixel_border, this.square_side+2*pixel_border); ctx.strokeRect(this.topleft_x-pixel_border, this.topleft_y-pixel_border, this.square_side+2*pixel_border, this.square_side+2*pixel_border); }; this.draw = function(){ ctx.fillStyle = this.color; ctx.fillRect(this.topleft_x, this.topleft_y, this.square_side, this.square_side); }; } this.Run = function(){ ctx.strokeStyle="#DDDDDD"; var j; var new_square; for ( i = 0; i<num_columns; i++){ for ( j = 0; j<num_rows; j++){ new_square = new Square(origin_x + i*(square_side_length+spacing), origin_y + j*(square_side_length+spacing), square_side_length); square_array.push(new_square); } } canvas.addEventListener('mousemove', Update, false); }; function Update(e){ ClearCanvas(); var x; var sq; for(x = 0; x<square_array.length; x++){ sq = square_array[x]; if(sq.isTouched(e.offsetX, e.offsetY)){ big_square_array.push(sq); } else{ sq.draw(); } } // fill in the big squares so there's no drawing over them while(big_square_array.length > 0){ sq = big_square_array.pop() sq.drawBigger(square_big_border); sq.color = color_palette[Math.floor(Math.random()*color_palette.length)]; } } this.DrawPage = function(){ ClearCanvas(); var c; var sqr; for(c = 0; c<square_array.length; c++){ sqr = square_array[c]; sqr.draw(); } }; } var app = new Fickle(); app.Run(); app.DrawPage(); <canvas id='canvas'></canvas> fickle body { background-color: #DDDDDD; font: 30px sans-serif; overflow: hidden;} function Fickle(){ var origin_x = 0; var origin_y = 0; var spacing = 1; var square_side_length = 20; var num_columns = 20; var num_rows = 20; // borrowed color palette from krmt // krmt borrowed from http://colourlovers.com/palette/694737/Thought_Provoking var color_palette = ["#ECD078", "#D95B43", "#C02942", "#542347", "#53777A"]; var square_big_border = 5; var width; var height; var square_array = []; var big_square_array = []; var canvas; var ctx; canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d"); width = window.innerWidth; height = window.innerHeight; canvas.width = width; canvas.height = height; num_columns = width / (square_side_length + spacing); num_rows = height / (square_side_length + spacing); function ClearCanvas(){ ctx.clearRect(0, 0, width, height); } function Square(topleft_x, topleft_y, square_side){ this.topleft_x = topleft_x; this.topleft_y = topleft_y; this.square_side = square_side; this.color = color_palette[Math.floor(Math.random()*color_palette.length)]; this.checkMerge = function(){ return false; }; this.isTouched = function(mouse_x, mouse_y){ return (mouse_x >= this.topleft_x) && (mouse_y >= this.topleft_y) && (mouse_x < this.topleft_x+this.square_side) && (mouse_y < this.topleft_y+this.square_side); }; this.drawBigger = function(pixel_border){ ctx.fillStyle = this.color; ctx.fillRect(this.topleft_x-pixel_border, this.topleft_y-pixel_border, this.square_side+2*pixel_border, this.square_side+2*pixel_border); ctx.strokeRect(this.topleft_x-pixel_border, this.topleft_y-pixel_border, this.square_side+2*pixel_border, this.square_side+2*pixel_border); }; this.draw = function(){ ctx.fillStyle = this.color; ctx.fillRect(this.topleft_x, this.topleft_y, this.square_side, this.square_side); }; } this.Run = function(){ ctx.strokeStyle="#DDDDDD"; var j; var new_square; for ( i = 0; i<num_columns; i++){ for ( j = 0; j<num_rows; j++){ new_square = new Square(origin_x + i*(square_side_length+spacing), origin_y + j*(square_side_length+spacing), square_side_length); square_array.push(new_square); } } canvas.addEventListener('mousemove', Update, false); }; function Update(e){ ClearCanvas(); var x; var sq; for(x = 0; x<square_array.length; x++){ sq = square_array[x]; if(sq.isTouched(e.offsetX, e.offsetY)){ big_square_array.push(sq); } else{ sq.draw(); } } // fill in the big squares so there's no drawing over them while(big_square_array.length > 0){ sq = big_square_array.pop() sq.drawBigger(square_big_border); sq.color = color_palette[Math.floor(Math.random()*color_palette.length)]; } } this.DrawPage = function(){ ClearCanvas(); var c; var sqr; for(c = 0; c<square_array.length; c++){ sqr = square_array[c]; sqr.draw(); } }; } var app = new Fickle(); app.Run(); app.DrawPage(); <canvas id='canvas'></canvas> body { background-color: #DDDDDD; font: 30px sans-serif; overflow: hidden;} use an iframe compat browser, deer Play on jsdo.it games Author Share ブログに埋め込む QR Tag Download Complete! Description What kind of game? Control Device Smartphone Controllerjsdo.it WebSocket Controller» Mouse Keyboard Touch Device Fullscreen Activated Inactivated jsdo.it games から削除する Submit Author chilpaekpal Tweet Default Panel Auto play Screenshot Readme JavaScript HTML CSS Size Width: px Height: px code <script type="text/javascript" src="http://jsdo.it/blogparts/A24h/js"></script> canvas color fickle html5 javascript krmt squares thanks Tweet Twitter Discussion Questions on this code? Tags canvas color fickle html5 javascript krmt squares thanks Forked sort by latest page views favorite forked forked: fickle teetteet 00 159 121/1/1 art&design canvas color fickle html5 html5_elements&api javascript krmt squares thanks