var flagman_chip = 1 var pandora_crystal = 3 var module_chip = 3 var mine_crystal = 4 var mine_crystal = 4 var gal_core = 4 var gal_core = 4 var robot = 6 var robot = 6 var gal_energy = 7 var gal_energy = 7 var gal_energy = 7 var tech_points = 9 var tech_points = 9 var tech_points = 9 var cubite = 12 var cubite = 12 var cubite = 12 var credits = 6000; var items_arr = []; var ranges_arr = []; var item_names = [ "flag_chip", "pandora_crystal", "module_chip", "mine_crystal", "mine_crystal", "gal_core", "gal_core", "robot", "robot", "gal_energy", "gal_energy", "gal_energy", "tech_points", "tech_points", "tech_points", "cubite", "cubite", "cubite" ] function plot() { var g = d3.select("svg").selectAll("g") g .append("image") .attr("x", -15) .attr("y", -15) .attr("width", 80) .attr("height", 80) .attr("preserveAspectRatio", "none") .attr("href", "http://www.picshare.ru/uploads/170216/NCrh81b57M.png"); g .append("image") .attr("x", 0) .attr("y", 0) .attr("width", 50) .attr("height", 50) .attr("href", "http://www.picshare.ru/uploads/170215/X7MZdQ600E.png") .on("click", () => {openBox(d3.event.target);}); } function init() { items_arr = []; items_arr.push(flagman_chip); items_arr.push(pandora_crystal); items_arr.push(module_chip); items_arr.push(mine_crystal); items_arr.push(mine_crystal); items_arr.push(gal_core); items_arr.push(gal_core); items_arr.push(robot); items_arr.push(robot); items_arr.push(gal_energy); items_arr.push(gal_energy); items_arr.push(gal_energy); items_arr.push(tech_points); items_arr.push(tech_points); items_arr.push(tech_points); items_arr.push(cubite); items_arr.push(cubite); items_arr.push(cubite); var sum = items_arr.reduce((sum, curr) => { return sum += curr; }, 0); console.log(sum); var k = 100 / sum; items_arr = items_arr.map((item) => { return item *= k / 100; }); sum = items_arr.reduce((sum, curr) => { return sum += curr; }, 0); console.log(sum); } function calculateItem() { var randomValue = Math.random(); var lowBound = 0; var topBound = 0; var interval = 17; items_arr.forEach((item, i) => { topBound += item; if (randomValue >= lowBound && randomValue < topBound) { interval = i; } lowBound += item; }); return interval; } // Новые вероятности для всех предметов. function calculateProbabilities() { var sum = items_arr.reduce((sum, curr) => { return sum += curr; }, 0); var k = 100 / sum; items_arr = items_arr.map((item) => { return item *= k / 100; }); } function setImage(context, itemOpened) { if (context.nodeName !== "image") return; switch (itemOpened) { case "flag_chip": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/6934tC67Fl.png"); break; case "tech_points": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/n0i933el6U.png"); break; case "cubite": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/52Lo125IK1.png"); break; case "gal_energy": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/jwJZKSEpTG.png"); break; case "gal_core": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/ePj4E5Le3e.png"); break; case "pandora_crystal": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/5C8x3HXEi1.png"); break; case "mine_crystal": context.setAttribute("href", "http://www.picshare.ru/uploads/170215/890s715aUT.png"); break; case "module_chip": context.setAttribute("href", "http://www.picshare.ru/uploads/170216/XNBa30U571.png"); break; case "robot": context.setAttribute("href", "http://www.picshare.ru/uploads/170216/jYCA8c9WCG.png"); break; default: context.setAttribute("href", ""); break; } var elem = d3.select(context) .on("click", null); } function openBox(context) { if (items_arr.length == 0) return; var item = calculateItem(); items_arr.splice(item, 1); var opened = item_names.splice(item, 1)[0]; setImage(context, opened); console.log(opened); calculateProbabilities(); } plot(); init(); //openBox();
<body style = "background-color: #000; "> <svg width="600" height="300"> <g transform="translate(25, 25)" ></g> <g transform="translate(100, 25)" /> <g transform="translate(175, 25)" /> <g transform="translate(250, 25)" /> <g transform="translate(325, 25)" /> <g transform="translate(400, 25)" /> <g transform="translate(25, 100)" /> <g transform="translate(100, 100)" /> <g transform="translate(175, 100)" /> <g transform="translate(250, 100)" /> <g transform="translate(325, 100)" /> <g transform="translate(400, 100)" /> <g transform="translate(25, 175)" /> <g transform="translate(100, 175)" /> <g transform="translate(175, 175)" /> <g transform="translate(250, 175)" /> <g transform="translate(325, 175)" /> <g transform="translate(400, 175)" /> </svg> </body>