1+ // NPM moudles
2+ var express = require ( 'express' ) ;
3+ var app = express ( ) ;
4+ var http = require ( 'http' ) . Server ( app ) ;
5+ var io = require ( 'socket.io' ) ( http ) ;
6+
7+ app . use ( express . static ( '.' ) ) ;
8+
9+ app . get ( '/' , function ( req , res ) {
10+ res . redirect ( '/index.html' ) ;
11+ } ) ;
12+
13+ http . listen ( 3000 , function ( ) {
14+ console . log ( 'listening on *:3000' ) ;
15+ } ) ;
16+
17+
118var grassArray = [ ] ;
219var grassEaterArray = [ ] ;
320var predatorArray = [ ] ;
421var humanArray = [ ] ;
522var fireArray = [ ] ;
6- var matrix = [ //xotakerner@ ev gishatichner@ stugox matric -- piti uten xoter@ bazmanan heto satken (hnarhavor e cnvi gishatich)
23+ /* var matrix = [ //xotakerner@ ev gishatichner@ stugox matric -- piti uten xoter@ bazmanan heto satken (hnarhavor e cnvi gishatich)
724[1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
825[0, 2, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1],
926[1, 0, 1, 1, 2, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
1027[0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1],
1128[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
12- ]
13- // some npm installations
14- var express = require ( 'express' ) ;
15- var app = express ( ) ;
16- var server = require ( 'http' ) . Server ( app ) ;
17- var io = require ( 'socket.io' ) ( server ) ;
18- // get all the character modules
19- var Grass = require ( "./public/finalproject/grass.js" ) ;
20- var grassEater = require ( "./public/finalproject/grassEater.js" ) ;
21- var predator = require ( "./public/finalproject/predator.js" ) ;
22- var human = require ( "./public/finalproject/human.js" ) ;
23- var fire = require ( "./public/finalproject/fire.js" ) ;
24-
25- function random ( array ) { // there is no p5.js on server side so need to replace all it's functions
26- if ( Array . isArray ( array ) ) {
27- var index = Math . floor ( Math . random ( ) * array . length ) ;
28- return array [ index ] ;
29- }
30- }
29+ ]*/
30+ function getRandomMatrix ( ) {
31+ var n = 10 ; // y arancq
32+ var m = 20 ; // x arancq
33+ var percent1 = 30 ;
34+ var percent2 = 2 ;
35+ var greenNumber = parseInt ( n * m * percent1 / 100 ) ;
36+ var greenEaterNumber = parseInt ( n * m * percent2 / 100 ) ;
37+ var humanNumber = 1 ;
38+ var matrix = [ ] ;
39+ for ( var i = 0 ; i < n ; i ++ ) { //create empty array
40+ var arr = [ ] ;
41+ for ( var j = 0 ; j < m ; j ++ ) {
42+ arr [ j ] = 0 ;
43+ }
44+ matrix . push ( arr ) ;
45+ }
46+ for ( var i = 0 ; i < greenNumber ; i ++ ) { //fill with 1 => green (random slot);
47+ var x = Math . floor ( Math . random ( ) * matrix [ 0 ] . length ) ;
48+ var y = Math . floor ( Math . random ( ) * matrix . length ) ;
49+ if ( matrix [ y ] [ x ] == 0 ) { //check if the slot is empty
50+ matrix [ y ] [ x ] = 1 ;
51+ }
52+ else { // if not try once more
53+ i -- ;
54+ continue ;
55+ }
56+ }
3157
32- app . use ( express . static ( "." ) ) ; // set the directory
58+ for ( var j = 0 ; j < greenEaterNumber ; j ++ ) { //fill with 2 => yellow (random slot);
59+ var x = Math . floor ( Math . random ( ) * matrix [ 0 ] . length ) ;
60+ var y = Math . floor ( Math . random ( ) * matrix . length ) ;
61+ if ( matrix [ y ] [ x ] == 0 ) { //check if the slot is empty
62+ matrix [ y ] [ x ] = 2 ;
63+ }
64+ else { // if not try once more
65+ j -- ;
66+ continue ;
67+ }
68+ }
3369
34- app . get ( "/" , function ( req , res ) { //redirect to html file
35- res . redirect ( "index.html" ) ;
36- } ) ;
70+ for ( var e = 0 ; e < humanNumber ; e ++ ) { // add a hunter in a random empty slot
71+ var x = Math . floor ( Math . random ( ) * matrix [ 0 ] . length ) ;
72+ var y = Math . floor ( Math . random ( ) * matrix . length ) ;
73+ if ( matrix [ y ] [ x ] == 0 ) { //check if the slot is empty
74+ matrix [ y ] [ x ] = 7 ;
75+ }
76+ else { // if not try once more
77+ e -- ;
78+ continue ;
79+ }
80+ }
81+ return matrix ;
82+ }
83+ // get all the character modules
84+ var Grass = require ( "./grass.js" ) ;
85+ var grassEater = require ( "./grassEater.js" ) ;
86+ var predator = require ( "./predator.js" ) ;
87+ var human = require ( "./human.js" ) ;
88+ var fire = require ( "./fire.js" ) ;
3789
38- app . listen ( 3000 , function ( ) { // run the port
39- console . log ( "Example is running on port 3000" ) ;
40- } ) ;
90+ /*function random(array) { // there is no p5.js on server side so need to replace all it's functions
91+ if (Array.isArray(array)) {
92+ var index = Math.floor(Math.random() * array.length);
93+ return array[index];
94+ }
95+ }
4196
4297
43- for ( var y = 0 ; y < matrix . length ; y ++ ) {
98+ for (var y = 0; y < matrix.length; y++) {
4499 for (var x = 0; x < matrix[y].length; x++) {
45100 if (matrix[y][x] == 1) {
46101 var xot = new Grass(x, y, 1);
@@ -59,9 +114,9 @@ for (var y = 0; y < matrix.length; y++) {
59114 humanArray.push(mard);
60115 }
61116 }
62- }
117+ }*/
63118
64- function drawInfo ( ) {
119+ /* function drawInfo(){
65120if (fireArray[0]) {
66121 fireArray[0].spread();
67122 }
@@ -84,7 +139,11 @@ function drawInfo(){
84139
85140console.log(matrix);
86141}
87- setInterval ( drawInfo , 1000 ) ;
142+ setInterval(drawInfo, 1000);*/
143+
88144io . on ( 'connection' , function ( socket ) {
89- io . sockets . emit ( "get new matrix" , matrix ) ;
90- } )
145+ console . log ( 'a user connected' ) ;
146+ setInterval ( function ( ) {
147+ socket . emit ( "display new matrix" , getRandomMatrix ( ) ) ;
148+ } , 200 )
149+ } ) ;
0 commit comments