Advertisement
Guest User

aaa

a guest
Jun 20th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. sketch.js:
  2. var world;
  3.  
  4. function setup() {
  5.   createCanvas(1280,720);
  6.   frameRate(1);
  7.   world = new World(1,10,width,height,10);
  8.   world.init();
  9. }
  10.  
  11. function draw() {
  12.   background(0);
  13.   world.step();
  14.   world.drawWorld();
  15. }
  16.  
  17. function doubleArray(cols,rows,d){
  18.   var temp = [];
  19.   var temp2 = [];
  20.   for(var i=0;i<cols;i++){
  21.     temp[i] = [];
  22.     for(var j=0;j<rows;j++){
  23.       temp[i].push(d);
  24.     }
  25.   }
  26.   return temp;
  27. }
  28.  
  29. function generateDNA(){
  30.   temp = [];
  31.   temp.push(random(0.0,50.0));
  32.   temp.push(random(1,10));
  33.   temp.push(random(0,255));
  34.   temp.push(random(0,255));
  35.   temp.push(random(0,255));
  36.   for(var i=0;i<random(10);i++){
  37.     temp.push(random(1,4));
  38.     if(temp[i]==1){
  39.       temp.push(0,9);
  40.     } else if(temp[i]==2){
  41.       temp.push(0,9);
  42.     } else if(temp[i]==3){
  43.       temp.push(0,256);
  44.       temp.push(0,256);
  45.       temp.push(0,256);
  46.     } else if(temp[i]==4){
  47.       temp.push(0,5);
  48.     }
  49.   }
  50.   return temp;
  51. }
  52.  
  53. Creature.js
  54. function Creature(x,y,dna){
  55.   this.x=x;
  56.   this.y=y;
  57.  
  58.   if(dna!=null){
  59.     this.dna = dna;
  60.   } else {
  61.     this.dna = generateDNA();
  62.   }
  63.  
  64.   this.update = function(){
  65.     this.i=0;
  66.     while(this.i<this.dna.length){
  67.       switch(this.dna[this.i]){
  68.         case 1:
  69.           this.move(this.dna[this.i+1]);
  70.           i+=2;
  71.         default:
  72.           break;
  73.       }
  74.     }
  75.   }
  76.  
  77.   this.move = function(cell){
  78.     switch(cell){
  79.       case 1:
  80.         this.y--;
  81.         break;
  82.       case 2:
  83.         this.y--;
  84.         this.x++;
  85.         break;
  86.       case 3:
  87.         this.x++;
  88.         break;
  89.       case 4:
  90.         this.y++;
  91.         this.x++;
  92.         break;
  93.       case 5:
  94.         this.y++;
  95.         break;
  96.       case 6:
  97.         this.y++;
  98.         this.x--;
  99.         break;
  100.       case 7:
  101.         this.x--;
  102.         break;
  103.       case 8:
  104.         this.y--;
  105.         this.x--;
  106.         break;
  107.       case 9:
  108.         this.move(random(0,8));
  109.         break;
  110.     }
  111.   }
  112. }
  113.  
  114. Tile.js
  115. function Tile(type){
  116.   this.tile = type;
  117. }
  118.  
  119.  
  120. World.js
  121. function World(minPop,size,width,height,foodChance){
  122.   this.minPop = minPop;
  123.   this.pop = 0;
  124.   this.width = width;
  125.   this.height = height;
  126.   this.size = size;
  127.   this.tiles = doubleArray(this.width/this.size,this.height/this.size,new Tile(0));
  128.   this.creatures = [];
  129.   this.foodChance = foodChance;
  130.  
  131.   this.init = function(){
  132.     this.creatures.push(new Creature(random(this.width/this.size),random(this.height/this.size)));
  133.     this.pop++;
  134.     for(var x=0;x<this.tiles.length;x++){
  135.       for(var y=0;y<this.tiles[0].length;y++){
  136.         var r = random(0.0,100.0);
  137.         if(r<this.foodChance){
  138.           this.tiles[x][y] = new Tile(1);
  139.         }
  140.       }
  141.     }
  142.   }
  143.  
  144.   this.step = function(){
  145.     // for(var r=this.pop;r<this.minPop;r++){
  146.     //   this.creatures.push(new Creature(random(this.width/this.size),random(this.height/this.size)));
  147.     //   this.pop++;
  148.     // }
  149.     for(var v=0;v<this.pop;v++){
  150.       this.creatures[v].update();
  151.     }
  152.   }
  153.  
  154.   this.drawWorld = function(){
  155.     for(var x=0;x<this.tiles.length;x++){
  156.       for(var y=0;y<this.tiles[0].length;y++){
  157.         if(this.tiles[x][y].tile==1){
  158.           noStroke();
  159.           fill(0,255,0);
  160.           rect(x*this.size,y*this.size,this.size,this.size);
  161.         }
  162.       }
  163.     }
  164.     for(var b=0;b<this.pop;b++){
  165.       //fill(this.creatures[i].dna[3],this.creatures[i].dna[4],this.creatures[i].dna[5]);
  166.       //console.log(this.creatures[b].x);
  167.       fill(255,255,255);
  168.       rect(this.creatures[b].x*this.size,this.creatures[b].y*this.size,this.size,this.size);
  169.     }
  170.   }
  171. }
  172.  
  173.  
  174. index.html
  175. <!DOCTYPE html>
  176. <html>
  177.   <head>
  178.     <meta charset="utf-8">
  179.     <meta name="viewport" width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0>
  180.     <style> body {padding: 0; margin: 0;} </style>
  181.     <script src="../p5.min.js"></script>
  182.     <script src="../addons/p5.dom.min.js"></script>
  183.     <script src="../addons/p5.sound.min.js"></script>
  184.     <script src="sketch.js"></script>
  185.     <script src="World.js"></script>
  186.     <script src="Creature.js"></script>
  187.     <script src="Tile.js"></script>
  188.   </head>
  189.   <body>
  190.   </body>
  191. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement