JSFiddle - React, Tailwind, and code Playground
by gajyuma
HTML
<canvas id="circle_canvas" width=830 height=910 style="border:1px solid gray;">
</canvas>
<br>
830×910のサイズ内にゲームマップの要領で<br>
100*100のマスに、スプライトマップを配列で作成。
約50%の領域に●を描画。そのうち、<br>
赤…40%<br>
緑…30%<br>
紫…20%<br>
黒…10%<br>
をランダムの順番に表示。
JavaScript
var row=100; //横の数
var col=100; //縦の数
var radiusBase = 4; // 円の大きさ
var mouseX = -1000; // マウスX座標
var mouseY = -1000; // マウスY座標
var mapArs = []; //ドットを打つマップ配列【0 or 1】
var colAr = []; //ドットを打つポイントの数と配色【0~4(種類分)】
var setNum; //ドットを打つ個数
var drawLine = 0;
//割合(以下、全部足して100とする)
var perD1 = 40;
var perD2 = 30;
var perD3 = 20;
var perD4 = 10;
//*** mapArs = row × col のマスに、0か1を配置させる***//
for(var i = 0 ; i < row ; i++){
mapArs[i] = new Array();
for(var j = 0 ; j < col ; j++){
var num = Math.floor(Math.random()*2);
mapArs[i][j] = num;
if(num == 1){
colAr.push(_setColor());
}
}
}
setNum = colAr.length;
//*** 1~4を返す***//
//【例】40% 30% 20% 10%
function _setColor(){
var num;
var rndm = Math.floor(Math.random()*100)+1;
//___console.log(rndm);
if(rndm <= 40){num = 1;}
else if(41 <= rndm && rndm <= 70){num = 2;}
else if(71 <= rndm && rndm <= 90){num = 3;}
else {num = 4;}
return num;
}
//*** デバッグ 2次元配列の表示 ***//
_consoleTable(mapArs);
function _consoleTable(datas){
if(datas==null){
debug('データはnullです');
}else{
for (var i=0;i<datas.length;i++){
var num = datas[i];
if(num == null){
console.log('エンティティはnull');
}else{
msg=num.join(',');
console.log(msg);
}
}
}
}
$(document).ready(function(){
init();
});
function init() {
// canvas対応しているか判定
var canvas = document.getElementById('circle_canvas');
if ( ! canvas || ! canvas.getContext ) { alert('error');return false; }
// canvasサイズをとる
var ctx = canvas.getContext('2d');
var cWidth = canvas.width;
var cHeight = canvas.height;
timer1 = setInterval(function(){
drawLine ++;
console.log(drawLine);
if (drawLine >= col)
{
clearInterval(timer1);
//____console.log("stop");
}
},17);
// 初期表示の処理
drawCircle(cWidth, cHeight, ctx);
}
function...