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

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. 二分法求解方程的根java_C语言二分法求解方程根的两种方法

    本文实例为大家分享了C语言二分法求解方程根的具体代码,供大家参考,具体内容如下 对于二分法求根,其实和弦截法思想很像,甚至更简单. 原理:先看如下的图 A,B两个点为跟的一个边界,通过一直缩小跟的边界 ...

  2. 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc

    基于c语言表达式求解课程设计修改 摘 要 通过数据结构这门课程,我们较深入的了解到了栈,栈是一种重要的线性结构,它广泛应用于各种软件系统中,因此在面向对象的程序设计中,它们是多型数据类型. 本次试验我 ...

  3. java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...

    本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 项目需要做趋势预测,采用线性拟合.2阶曲线拟合和指数拟合的算法,各种线 ...

  4. 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值。

    一.题目描述 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值. 二.分析求解 这是一道类似数列的求和问题,考察的是循环的使用, ...

  5. c语言程序编程线性方程,C语言编程求解线性方程.doc

    C语言编程求解线性方程 本 科 专 业 学 年 论 文 题目:线性方程组求解方法比较 姓 名 郭 凤 专 业 计算机科学与技术专业 班 级 08级本科(2)班 指导教师 刘 晓 娜 完成日期:2010 ...

  6. 弦截法c语言程序,用弦截法求解一元三次方程的根(利用c语言实现)

    用弦截法求解一元三次方程的根(利用c语言实现)0 特别v2013.09.24浏览296次分享举报 #include #include float f(x) { float a,b,c,d; float ...

  7. 已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)

    已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解) 在一个二维平面上给定两个圆的圆心横纵坐标.半径共6个参数, 求交点. 这个问题无非是解二元二次方程组.普通二元二次方程联立消元求解的困难在于 ...

  8. C语言链表求解多项式乘法问题

    C语言链表求解多项式乘法问题 解决多项式乘法问题最容易想到的就是将乘法运算转换为加法运算.从p1的第一项开始,依此乘以p2的每一项,合并同类项后放入结果多项式中.然而项数太多时,合并同类项的过程过于复 ...

  9. C语言程序设计第3版黄维通,C语言程序设计(第3版)课件-黄维通

    C语言程序设计(第3版)课件-黄维通 C语言程序设计(第3版)课件-黄维通,语言程序设计,课件,黄维通 清华大学黄维通设计制作 1 第2章C语言程序的基本数据类型及其运算 清华大学黄维通设计制作 2 ...

最新文章

  1. 一起学WP7 XNA游戏开发(八. 让3d model动起来)
  2. Mybatis动态的添加删除列
  3. 怎么向后删除?(删除光标后的字符)(按delete键)
  4. Linux学习之遇到的小问题---查看系统版本,虚拟机创建共享文件夹,用到的命令记录。
  5. LeetCode 66. 加一
  6. LeetCode 5178. 四因数
  7. Xcode pch文件配置及object c 单例创建
  8. 一键 caddy php h5ai_H5ai 在线播放搭建
  9. 修改XP系统的注册名
  10. arcmap 10.2 shp合并
  11. [转]禅修程序员十诫
  12. mp3转wav,详细方法介绍
  13. 岗位、职位、职级、职务的区别
  14. java罗马帝国下载,Java程序设计2020满分完整版考 试题库大全
  15. c语言算术运算的作用,C语言算术运算符和算术表达式
  16. 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)
  17. Codeforces-686C Robbers' watch
  18. EXCEL 单元格内换行内容改成两行单元格内容
  19. 2022年美赛e题资料(森林固碳)
  20. PHP socket demo

热门文章

  1. 我的angularjs源码学习之旅2——依赖注入
  2. Banana PI A20开发板 通过了CE,FCC,RoHS认证
  3. 分布式系统设计注意点
  4. 【心情】还有5分钟回苏州了!
  5. Linux系统守护进程详解
  6. 麦克纳姆轮运动原理_【带字幕视频】麦克纳姆轮你了解多少?ESP32的WIFI信号,居然能覆盖10公里?...
  7. Nginx(OpenResty)+Lua+Redis IP限流 10s内
  8. c语言中 char怎样用,C语言中char*和char[]用法区别分析
  9. index.html安全文件,restorecon - 恢复文件的安全上下文
  10. 计算机教育的发展,计算机教育发展方向研究