该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Life Simulator

body {

margin: 10px;

}

#title {

text-align: center;

margin: auto;

position: absolute;

left: 0;

right: 0;

}

#myGraph {

height: 1000px;

margin-top: 50px;

width: 100%;

border: solid;

border-width: 1px;

}

Size:

Life Chance:

Refresh frequence:

Start Simulation

Stop Simulation

Continue Simulation

Save Data

let cp = document.getElementById('myGraph')

let ctx = cp.getContext('2d')

let width = document.getElementById('board').offsetWidth;

let height = document.getElementById('board').offsetHeight;

let size = document.getElementById('size')

let sizeVal = +size.value;

let rffVal = 500;

let arr = [];

let myInterval;

function initCanvas() {

let dpr = window.devicePixelRatio || 1;

let bsr = ctx.webkitBackingStorePixelRatio ||

ctx.mozBackingStorePixelRatio ||

ctx.msBackingStorePixelRatio ||

ctx.oBackingStorePixelRatio ||

ctx.backingStorePixelRatio || 1;

let PIXEL_RATIO = dpr / bsr;

cp.style.width = width + "px";

cp.style.height = height + "px";

cp.width = width * PIXEL_RATIO;

cp.height = height * PIXEL_RATIO;

ctx.scale(PIXEL_RATIO, PIXEL_RATIO)

}

function paint() {

ctx.save();

ctx.clearRect(0, 0, width, height);

let lineNum = arr.length;

let colNum = arr[0].length;

for (let i = 0; i < lineNum; i += 1) {

for (let j = 0; j < colNum; j += 1) {

if (arr[i][j] === 0) {

ctx.fillStyle = '#000000'

} else {

ctx.fillStyle = '#FFFFFF'

}

ctx.fillRect(j*sizeVal, i*sizeVal, sizeVal, sizeVal)

}

}

ctx.restore();

}

function initData(lifeChance) {

arr = [];

let sumVal = 0;

let aliveVal = 0;

for (let j = 0; j < height; j += sizeVal) {

let oneLine = [];

for (let i = 0; i < width; i += sizeVal) {

let a = Math.random();

if (a >= lifeChance) {

oneLine.push(0)

} else {

aliveVal += 1;

oneLine.push(1)

}

sumVal += 1;

}

arr.push(oneLine)

}

console.log((aliveVal/sumVal*100).toFixed(2) + '% chance to live!')

}

function updateData() {

let lineNum = arr.length;

let colNum = arr[0].length;

let newArr = []

for (let i = 0; i < lineNum; i += 1) {

let oneLine = [];

for (let j = 0; j < colNum; j += 1) {

let neighborLifeNum = 0;

for (let left = j-1; left <= j+1; left += 1) {

for (let top = i-1; top <= i+1; top += 1) {

if (left < 0 || top < 0 || left >= colNum || top >= lineNum) {

continue;

}

if (left === j && top === i) {

continue;

}

neighborLifeNum += arr[top][left];

}

}

if (neighborLifeNum === 3) {

oneLine.push(1)

} else if (neighborLifeNum === 2) {

oneLine.push(arr[i][j]);

} else {

oneLine.push(0)

}

}

newArr.push(oneLine)

}

arr = newArr;

}

function startSimulation() {

paint();

myInterval = setInterval(d=>{

updateData();

paint();

}, rffVal)

}

function saveData() {

var content = JSON.stringify(arr);

var blob = new Blob([content], {type: "text/plain;charset=utf-8"});

if(navigator.appVersion.toString().indexOf(".NET")>0){

window.navigator.msSaveBlob(blob, "lifeSimulationData.json");

}

else{

var a = document.createElement("a");

a.href =window.URL.createObjectURL(blob);

a.download = "lifeSimulationData.json";

a.click();

document.body.appendChild(a);

}

}

function loadData() {

var file = document.getElementById("uploadFile").files[0];

var reader = new FileReader();

reader.onload = function(event) {

let content = event.target.result;

arr = JSON.parse(content)

startSimulation();

}

reader.readAsText(file,"UTF-8");

}

function init() {

initCanvas();

document.getElementById('go').addEventListener('click', d=>{

sizeVal = +size.value;

let lifeChance = +document.getElementById('lfc').value * 0.01;

rffVal = +document.getElementById('rff').value*100;

initData(lifeChance);

startSimulation();

});

document.getElementById('stop').addEventListener('click', d=>{

console.log('stop')

clearInterval(myInterval)

});

document.getElementById('continue').addEventListener('click', d=>{

startSimulation();

});

document.getElementById('save').addEventListener('click', d=>{

saveData();

})

document.getElementById('uploadFile').onchange = function() {

loadData();

}

}

init();

c语言边界条件的设置,求解能不能用c或c++语言实现下面的约束条件相关推荐

  1. android代码打开语言和输入法设置,Android默认输入法勾选多国语言,并默许其中一种语言...

    Android默认输入法勾选多国语言,并默认其中一种语言 1.首先在设备上调整输入法 设置>语言输入法>Android键盘(AOSP),在输入语言里勾选要选择的语言,比如选"英语 ...

  2. r语言plot函数设置y轴的范围及刻度_R语言之简单绘图

    一:引例 plot()是R中为对象作图的一个泛型函数(它的输出将根据所绘制对象类型的不同而变化). 本例中,plot(x, y, type="b")将x置于横轴,将y置于纵轴,绘制 ...

  3. 线性规划编程求解C语言,C语言大作报告线性规划求解基科3字班.doc

    C语言大作报告线性规划求解基科3字班.doc C语言大作业选题设计报告线性规划求解程序一. 概述运筹学(OR)作为强有力的数学工具,在管理科学.决策科学中起到了举足轻重的作用.当最优化的约束条件是线性 ...

  4. c语言填数字游戏求解过程解读,c语言编程--数字游戏.doc

    c语言编程--数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...

  5. OpenFoam收缩扩张喷管(拉瓦尔喷管)边界条件的设置

    简介 收缩扩张喷管(也成拉瓦尔喷管)广泛应用于火箭推进.将其流动特性定性描述如下: (1)当入口流量较小时,不出现雍塞,流速先增大后减小,全程为亚声速.出口压力即为大气压,入口压力由出口压力决定. ( ...

  6. R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis

    R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis 目录 R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:d

  7. R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据、单的黑白主题theme_bw主题(theme)、默认的主题(theme)可视化数据

    R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据.单的黑白主题theme_bw主题(theme).默认的主题(theme)可视化数据 目录

  8. R语言应用uniroot函数求解方程的根(一元解):仿真数据(方程式可视化、并添加y=0的水平横线)、uniroot函数求解方程的根(并添加方程根对应的垂直竖线)

    R语言应用uniroot函数求解方程的根(一元解):仿真数据(方程式可视化.并添加y=0的水平横线).uniroot函数求解方程的根(并添加方程根对应的垂直竖线) 目录

  9. R语言ggplot2可视化设置数据点的大小、设置数据点的颜色、设置数据点边缘线条的厚度(point border thickness)实战

    R语言ggplot2可视化设置数据点的大小.设置数据点的颜色.设置数据点边缘线条的厚度(point border thickness)实战 目录

最新文章

  1. LoadRunner11录制脚本出现的问题
  2. qemu模拟Cortex-A57运行Linux4.5.1
  3. centos 打包某个目录_Linux目录基础,带你了解Linux神秘面纱
  4. 关于jetbrains系列产品2018.1.5以后的使用(crack)方法
  5. uwsgi 的app变量名称必须为application
  6. Ajax — 第四天
  7. CentOS7设置自定义开机启动,添加自定义系统服务
  8. 从服务器检索时出错dfdferh01_基于客户端-服务器的网络编程模型
  9. python中narc是什么意思_python中@是什么意思
  10. SQL Server 2016 SP1 标准版等同企业版?!
  11. python中的排序方法都有哪些_有没有办法在python中对列表进行排序,直到找到第一个排序的k元素?...
  12. python控制安捷伦频谱仪_安捷伦频谱仪使用说明
  13. 大学生 生活小技巧:利用插件(Tampermonkey )学习网课 | 查题
  14. Win7系统怎么强制格式化U盘
  15. win的反义词_133个英语单词反义词,小学生必须要掌握!为孩子收藏吧
  16. qduoj 分辣条2
  17. 【免费】Linux命令行与Shell脚本编程大全 第3版 PDF全本 21MB 百度网盘下载
  18. 上大学的四年---以此结束四年的时光
  19. 单烤FPU怎么操作 单烤FPU多少度可以稳定使用
  20. 计算机网络(第7版) - 第五章 运输层 - 习题

热门文章

  1. 未给员工足额缴纳公积金!董明珠曾豪言:每人一套房不需要公积金
  2. 3月3日发布!realme V25正式官宣:超大内存的国潮手机
  3. 罗永浩将重返高科技行业创业 将涉足AR/VR/MR领域
  4. 男子趁前女友熟睡翻开眼皮,刷脸转走15万!支付宝:几率很小
  5. 三天内出现多次晃动,华强北最高楼今日起已被封闭了
  6. 2020魔幻“商战”:抢公章、发黄图、半夜翻工厂...最烂的小说都不敢这么写
  7. 奥飞娱乐:贝肯熊和镇魂街盲盒产品计划于2021年下半年上市
  8. 提前为小米11让路?小米10高配版官网已缺货
  9. 2020年天猫双11官宣:分两波购买 比往年多3天
  10. 索尼收购挪威公司Nevion 进一步增强其业务组合