Skip to content

Instantly share code, notes, and snippets.

@rogerzanoni
Created August 29, 2013 17:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rogerzanoni/6381027 to your computer and use it in GitHub Desktop.
Save rogerzanoni/6381027 to your computer and use it in GitHub Desktop.
File for syntax highlight test
import QtQuick 1.1
Rectangle {
id: root
width: world.cellsWidth + world.horizontalSpacing
height: world.cellsHeight + world.verticalCells
ListModel {
id: worldModel
}
Grid {
id: world
property int horizontalSpacing: world.spacing * world.columns
property int verticalSpacing: world.spacing * world.rows
property int cellWidth: 5
property int cellHeight: 5
property int horizontalCells: 10
property int verticalCells: 10
property int cellsWidth: world.cellWidth * world.horizontalCells
property int cellsHeight: world.cellHeight * world.verticalCells
anchors.fill: parent
rows: world.verticalCells
columns: world.horizontalCells
spacing: 1
Repeater {
model: worldModel
Rectangle {
width: world.cellWidth
height: world.cellHeight
color: alive ? "black" : "white"
}
}
}
Component.onCompleted: {
generateLife();
}
function gameStep() {
var aliveNeighborsMatrix = generateNeighbors();
for (var i = 0; i < worldModel.count; ++i) {
if (worldModel.get(i).alive)
worldModel.setProperty(i, "alive", (aliveNeighborsMatrix[i] == 2 || aliveNeighborsMatrix[i] == 3))
else
worldModel.setProperty(i, "alive", (aliveNeighborsMatrix[i] == 3))
}
}
function generateNeighbors() {
var aliveNeighborsMatrix = []
for (var i = 0; i < world.horizontalCells; ++i) {
for (var j = 0; j < world.verticalCells; ++j) {
var cellIndex = i*world.horizontalCells + j;
aliveNeighborsMatrix[cellIndex] = 0;
for (var k = (i -1); k < (i + 2); ++k) {
for (var l = (j - 1); l < (j + 2); ++l) {
if (k < 0 || l < 0)
continue;
if (k >= world.horizontalCells || l >= world.verticalCells)
continue;
var neighborIndex = k*world.horizontalCells + l;
if (neighborIndex == cellIndex)
continue;
var neighborValue = worldModel.get(neighborIndex).alive
aliveNeighborsMatrix[cellIndex] += (neighborValue ? 1 : 0)
}
}
}
}
return aliveNeighborsMatrix;
}
function generateLife() {
for (var i = 0; i < (world.horizontalCells * world.verticalCells); ++i) {
worldModel.append({"alive" : (Math.random() <= 0.5)})
}
}
Timer {
id: updateTimer
interval: 500
running: true
repeat: true
onTriggered: gameStep()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment