class SnakeWorld{ Snake [] snake; Egg [] egg; Pathfinder world; int wide, high, deep; SnakeWorld(int wide, int high, int deep, int snakes){ this.wide = wide; this.high = high; this.deep = deep; world = new Pathfinder(wide, high, deep, snakes, 2); snake = new Snake[snakes]; } void initSnakes(){ for(int i = 0; i < snake.length; i++){ snake[i] = new Snake(i, 20, color(random(200, 255), 200, 200), rand(2, gridSize - 2), rand(2, gridSize - 2), rand(2, gridSize - 2)); } } void initEggs(){ egg = new Egg[2]; for(int i = 0; i < egg.length; i++){ egg[i] = new Egg(i, 0); } game.world.setTarget(1, -1, -1, -1); } void draw(){ noStroke(); for(int i = 0; i < egg.length; i++){ egg[i].draw(); if (rand(200) == 0 && i > 0 && egg[i].timer == 0){ egg[i] = new Egg(i, 300); } } for(int i = 0; i < snake.length; i++){ snake[i].draw(); snake[i].AI(); snake[i].move(); if(!snake[i].alive){ println(i + " dead"); for(int j = 0; j < snake[i].s.length; j++){ if(snake[i].s[j].x < game.world.wide && snake[i].s[j].x > -1 && snake[i].s[j].x < game.world.high && snake[i].s[j].x > -1 && snake[i].s[j].z < game.world.deep && snake[i].s[j].z > -1){ game.world.grid[snake[i].s[j].x][snake[i].s[j].y][snake[i].s[j].z] = 0; } } snake[i] = new Snake(i, 20, color(random(200, 255), 200, 200), rand(2, gridSize - 2), rand(2, gridSize - 2), rand(2, gridSize - 2)); } } } } class Egg{ int id, timer; Egg(int id, int timer){ this.id = id; this.timer = timer; int xEgg = 0; int yEgg = 0; int zEgg = 0; while(true){ xEgg = rand(0,gridSize-1); yEgg = rand(0,gridSize-1); zEgg = rand(0,gridSize-1); if(game.world.grid[xEgg][yEgg][zEgg] == 0){ break; } } game.world.setTarget(id, xEgg, yEgg, zEgg); } void draw(){ switch(id){ case 0: fill(255, 0, 0); break; case 1: fill(0, 0, 255); break; } if(game.world.target[id].x > 0){ pushMatrix(); translate(game.world.target[id].x*gridUnit,game.world.target[id].y*gridUnit,game.world.target[id].z*gridUnit); box(gridUnit, gridUnit, gridUnit); popMatrix(); } if(timer > 0){ timer--; if(id > 0 && timer == 0){ game.world.setTarget(id, -1, -1, -1); } } } }