daily pastebin goal
34%
SHARE
TWEET

StackOverflow-UnderageLoli-Q1

a guest Jan 23rd, 2019 68 in 1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //GAMEPLAY
  2. var running = 1;
  3.  
  4.  
  5. //Render Options
  6. var ww = 10; wh = 10; //World Width/Height
  7. var bw, bh; //World Width/Length/Height;
  8.  
  9.  
  10. //Block Colours
  11. var bc = [[0, 255, 255, 255], [0, 175, 0, 255], [100, 100, 100, 255], [139, 69, 19, 255],
  12. [255, 215, 0, 255], [0, 0, 0, 255], [255, 255, 255, 100]];
  13.  
  14.  
  15. //World Gen
  16. var world = [];
  17. var maxBlockHeight = 5;
  18. var chunkLimit = 5;
  19. var currentChunk = 0;
  20.  
  21.  
  22. //HOTBAR
  23. var hb = new Hotbar;
  24. var hbs = 50;
  25. var hbl = 9;
  26.  
  27.  
  28. //PLAYER
  29. var p;
  30. var pspawn = [1, 1];
  31. var range = 2;
  32.  
  33.  
  34. function setup() {
  35.     createCanvas(501, 551);
  36.     bw = floor(width / ww);
  37.     bh = floor((height - hbs) / wh);
  38.  
  39.     for (i = 0; i < chunkLimit; i++) {
  40.         world.push(new Chunk());
  41.         console.log("Pushed Chunk");
  42.     }
  43.     for (j = 0; j < chunkLimit; j++) {
  44.         world[j].create();
  45.         console.log("Created Chunk");
  46.     }
  47.  
  48.     p = new Player(pspawn[0], pspawn[1]);
  49.     hb.create();
  50.  
  51.     console.log(hb.i);
  52.     console.log(world);
  53. }
  54.  
  55. function draw() {
  56.     //Game Loop
  57.     frameRate(15);
  58.     if (running) {
  59.         background(0);
  60.        
  61.         //WORLD//
  62.         world[currentChunk].render();
  63.  
  64.         //PLAYER//
  65.         p.frame();
  66.         p.render();
  67.  
  68.         //HOTBAR//
  69.         hb.render();
  70.     }
  71. }
  72.  
  73. function Player(x, y) {
  74.     //POS
  75.     this.x = x;
  76.     this.y = y;
  77.  
  78.     //JUMP
  79.     this.m = 0;
  80.     this.g = 1;
  81.     this.jmpHeight = 2
  82.     this.jmpDelay = 0;
  83.  
  84.     //FUNCTIONS
  85.     this.render = function() {
  86.         fill(0);
  87.         stroke(255);
  88.         rect(this.x * bw, this.y * bh, bw, bh);
  89.     }
  90.  
  91.     this.frame = function() {
  92.         this.grav();
  93.         this.move();
  94.     }
  95.  
  96.     this.grav = function() {
  97.         //console.log(this.jmpDelay);
  98.         //console.log(world[currentChunk].world[this.x][this.y+1].t);
  99.         if (world[currentChunk].world[this.x][this.y+1].t == 0 && this.jmpDelay <= 0) {
  100.             this.y += this.g;
  101.             this.g += 1;
  102.             if (this.g > 1) {
  103.                 this.g = 1;
  104.             }
  105.         } else {
  106.             if(this.jmpDelay > 0) {this.jmpDelay -= 1;}
  107.             this.g = 0;
  108.         }
  109.     }
  110.  
  111.     this.jump = function() {
  112.         if (world[currentChunk].world[this.x][this.y+1].t != 0) {
  113.             if (world[currentChunk].world[this.x][this.y-1].t == 0) {
  114.                 if (world[currentChunk].world[this.x][this.y-2].t == 0) {
  115.                     this.y -= 2;
  116.                     if (this.y <= -1) {
  117.                         this.y = 0;
  118.                     }
  119.                     this.jmpDelay = 2;
  120.                 } else {
  121.                     this.y -= 1;
  122.                     if (this.y <= -1) {
  123.                         this.y = 0;
  124.                     }
  125.                     this.jmpDelay = 2;
  126.                 }
  127.             }
  128.         }
  129.     }
  130.  
  131.     this.move = function() {
  132.         if (world[currentChunk].world[this.x+this.m][this.y].t == 0) {
  133.             this.x += this.m;
  134.             if (this.x < 0) {
  135.                 currentChunk -= 1;
  136.                 this.x = ww;
  137.             }
  138.         }
  139.     }
  140. }
  141.  
  142. function Block(x, y, t) {
  143.     this.x = x;
  144.     this.y = y;
  145.  
  146.     this.t = t;
  147.  
  148.     this.render = function() {
  149.         fill (bc[this.t][0], bc[this.t][1], bc[this.t][2], bc[this.t][3])
  150.         if (this.t == 0) {
  151.             stroke(0, 0);
  152.         } else {stroke(0, 200);}
  153.        
  154.         rect(this.x * bw, this.y * bh, bw, bh)
  155.     }
  156.  
  157.     this.mine = function() {
  158.         var foundslot = false;
  159.         if (this.t != 0) {
  160.             for (i = 0; i < hb.i.length; i++) {
  161.                 if (hb.i[i].t != null) {
  162.                     if (hb.i[i].t == this.t) {
  163.                         hb.i[i].a += 1;
  164.                         foundslot = true;
  165.                         break;
  166.                     }
  167.                 }
  168.             }
  169.             if (foundslot == false) {
  170.                 for (i = 0; i < hb.i.length; i++) {
  171.                     if (hb.i[i].t == null) {
  172.                         hb.i[i].t = this.t;
  173.                         hb.i[i].a += 1;
  174.                         foundslot = true;
  175.                         break;
  176.                     }
  177.                 }
  178.             }
  179.             if (foundslot == false) {console.log("UNABLE TO PICK UP");}
  180.             //console.log("mine");
  181.             this.t = 0;
  182.         }
  183.     }
  184.  
  185.     this.place = function() {
  186.         this.t = hb.i[hb.s].t;
  187.         hb.i[hb.s].a -= 1;
  188.  
  189.         if (hb.i[hb.s].a == 0) {
  190.             hb.i[hb.s].t = null;
  191.         }
  192.     }
  193. }
  194.  
  195. function keyPressed() {
  196.     if (keyCode == UP_ARROW || key == 'w') {
  197.         p.jump();
  198.     }
  199.  
  200.     if (keyCode == LEFT_ARROW || key == 'a') {
  201.         p.m = -1;
  202.     } else if (keyCode == RIGHT_ARROW || key == 'd') {
  203.         p.m = 1;
  204.     }
  205. }
  206.  
  207. function keyReleased() {
  208.     if (((keyCode == LEFT_ARROW || key == 'a') && p.m == -1) ||
  209.         ((keyCode == RIGHT_ARROW || key == 'd') && p.m == 1)) {p.m = 0;}
  210. }
  211.  
  212. function mousePressed() {
  213.     //console.log(floor(mouseX/bw), floor(mouseY/bh));
  214.     click = [floor(mouseX/bw), floor(mouseY/bh)];
  215.     console.log(click);
  216.     if (click[0] >= p.x-range && click[0] <= p.x+range) {
  217.         //console.log("NEXT TO ON X AXIS");
  218.         if (click[1] >= p.y-range && click[1] <= p.y+range) {
  219.             //console.log("NEXT TO PLAYER");
  220.             if (world[currentChunk].world[click[0]][click[1]].t == 0
  221.                 && hb.i[hb.s].a >= 1 && (p.x != click[0] || p.y != click[1])) {
  222.                 world[currentChunk].world[click[0]][click[1]].place();
  223.             } else {
  224.                 world[currentChunk].world[click[0]][click[1]].mine();
  225.             }
  226.         }
  227.     }
  228.  
  229.     if (click[1] == 10) {
  230.         hb.s = click[0];
  231.         console.log(hb.i[hb.s].t)
  232.     }
  233. }
  234.  
  235. function Chunk() {
  236.     //CHUNK
  237.     this.world = [];
  238.  
  239.     this.create = function() {
  240.         console.log("Creating Chunk");
  241.         for (i = 0; i < ww; i++) {
  242.             this.world.push([]);
  243.             for (j = 0; j < wh; j++) {
  244.                 if (j > maxBlockHeight) {this.world[i].push(new Block(i, j, 1));}
  245.                 else {this.world[i].push(new Block(i, j, 0));}
  246.             }
  247.         }
  248.     }
  249.  
  250.     this.render = function() {
  251.         for (i = 0; i < this.world.length; i++) {
  252.             for (j = 0; j < this.world[i].length; j++) {
  253.                 this.world[i][j].render();
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. function Hotbar() {
  260.  
  261.     this.i = [];
  262.     this.c = 0;
  263.     this.s = 0;
  264.     this.create = function() {
  265.         for (i = 0; i < hbl; i++) {
  266.             this.i.push(new hbslot());
  267.         }
  268.     }
  269.     this.render = function() {
  270.         for (i = 0; i < hbl; i++) {
  271.             if (this.i[i].t == null) {
  272.                 fill(0);
  273.                 stroke(255);
  274.             } else {
  275.                 fill(bc[this.i[i].t][0], bc[this.i[i].t][1], bc[this.i[i].t][2], bc[this.i[i].t][3]);
  276.                 stroke(0, 255, 0);
  277.             }
  278.             rect(i * bw, height-hbs-1, bw, bh);
  279.             //console.log(this.i)
  280.             //console.log(bc[this.i[i]][0], bc[this.i[i]][1], bc[this.i[i]][2]);
  281.             //console.log(this.i[i])
  282.         }
  283.         //SELECTED
  284.         noFill();
  285.         strokeWeight(3);
  286.         stroke(255, 0, 0);
  287.         rect(this.s * bw, height-hbs-1, bw, bh);
  288.         stroke(255);
  289.         strokeWeight(1);
  290.         //rect(width-bw, height-hbs-1, bw, bh);
  291.     }
  292. }
  293.  
  294. function hbslot() {
  295.     this.t = null;
  296.     this.a = 0;
  297. }
  298.  
  299. //Luke Poulter
  300. //JS && P5.JS - 2D SURVIVAL GAME
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Pastebin PRO 'WINTER SPECIAL'!
Get 40% OFF Pastebin PRO accounts!
 
Top