xxxxxxxxxx
85
const numNearObstacles = 8 // (DO NOT CHANGE)
let player
let obstacles = []
let paused = false
let pauseFrame = 0
let speedSlider
let mutate, best, average, average10, high
function setup() {
createCanvas(400, 400)
noSmooth()
noStroke()
speedSlider = createSlider(0, 10, 0)
speedSlider.style('width:' + width + 'px')
mutate = createP("Mutation amount: ")
best = createP("Best score: ")
average = createP("Average score:")
high = createP("Highscore: ")
average10 = createP("Average of 10: ")
tf.setBackend('cpu') // Set the backend to CPU since GPU optimizations will slow down the sketch
// Why do I have these
midVector = createVector(width / 2, height / 2)
zeroVector = createVector(0, 0)
dimVector = createVector(width, height)
initSketch()
}
function initSketch() {
// For player and controls settings go to options.js. Change to "AIPlayer" to initiate a random network to control the player
player = new Player(width / 2, height / 2, 20, playerColour)
// For obstacles settings go to options.js
initObstacles()
initAlg(players)
}
function draw() {
background(45)
speed = pow(2, speedSlider.value())
// Update everything
for (let i = 0; i < speed; i++) {
// For every obstacle, update
if (!paused) {
for (const obstacle of obstacles)
obstacle.update()
// Update algorithm
updateAlg(players)
controls() // Check player controls
player.update(obstacles) // Update the player
}
}
// Draw everything
// Show algorithm
showAlg(players)
// Show every obstacle
for (const obstacle of obstacles) {
if (obstacle.overlaps(player)) {
obstacle.show(color(255, 0, 0))
} else obstacle.show()
}
player.show() // Show the player
// Trace lines to the nearest obstacles
nearestObstacles(numNearObstacles, player)
// If paused, show pause animation
pauseAnim()
}