Javascript 关于使代码更干净的选项
我做了一个简单的模拟生活的游戏,想知道我是否能让代码更简洁 我有什么选择 jsfiddle:Javascript 关于使代码更干净的选项,javascript,conways-game-of-life,Javascript,Conways Game Of Life,我做了一个简单的模拟生活的游戏,想知道我是否能让代码更简洁 我有什么选择 jsfiddle: /* 康威的JavaScript生活游戏 */ window.onload=函数(){ var-gridHeight=400; var gridWidth=400; var theGrid=createCellar(网格宽度); var mirrorGrid=createCeller(网格宽度); var-genCounter=0; 种子(); 勾选(); //主回路 函数tick(){ 拉丝研磨();
/*
康威的JavaScript生活游戏
*/
window.onload=函数(){
var-gridHeight=400;
var gridWidth=400;
var theGrid=createCellar(网格宽度);
var mirrorGrid=createCeller(网格宽度);
var-genCounter=0;
种子();
勾选();
//主回路
函数tick(){
拉丝研磨();
updateGrid();
计数器();
requestAnimationFrame(勾号);
}
/*返回一个包含n个元素的数组,并放置一个空数组
使用FOR循环在它们中的每一个中创建一个数组。
*/
函数createCeller(行){
var-arr=[];
对于(变量i=0;i
您可以去掉开关,用简单的if语句替换它
switch (totalCells) {
case 0:
case 1:
mirrorGrid[j][k] = 0; //die of lonelines
break;
case 2:
case 3:
mirrorGrid[j][k] = 1; //carry on living
break;
case 4:
case 5:
case 6:
case 7:
case 8:
mirrorGrid[j][k] = 0; //die of overcrowding
break;
default:
mirrorGrid[j][k] = 0; //
}
替换为:
if ((totalCells == 2) || (totalCells == 3)) {
mirrorGrid[j][k] = 1; //Cell lives on
}else {
mirrorGrid[j][k] = 0; //Cell dies
}
此外,您可能希望使用“x”和“y”而不是“j”和“k”,因为它们是坐标。您可以抽象出在其自身函数中循环每个单元格的操作,如下所示:
function forEachCell(doSomething) {
// Iterate through rows
for (var y = 0; y < gridHeight; y++) {
// Iterate through columns
for (var x = 0; x < gridWidth; x++) {
doSomething(x, y);
}
}
}
函数forEachCell(剂量测量){
//遍历行
对于(变量y=0;y
看一看:当我在js fiddle中尝试此功能时,请提供一个JSFIDLE。除此之外,我还有什么其他选择?对不起,我不知道。我现在想不出任何其他主要的选择。只是一些小的调整,比如变量和函数名。这太棒了@NiñoScript,你知道如何缩短开关的大小写。Nightmar版本在我试用时不起作用。NinñoScript,你在吗?是的,我在这里,如果你想聊天,请到这里来:
function forEachCell(doSomething) {
// Iterate through rows
for (var y = 0; y < gridHeight; y++) {
// Iterate through columns
for (var x = 0; x < gridWidth; x++) {
doSomething(x, y);
}
}
}