import React from “react”;import ReactDOM from “react-dom”;import App from “./components/App.jsx”; const gridWidth = 80; const gridHeight = 60; const roomSizes = 7,12; const maxRooms = 15; const c = {gridHeight,gridWidth,roomSizes,maxRooms}; function randomNum(min, max) { return Math.floor(Math.random() * (max - min) + min);} function mapMaker(){ function placeRoom(grid, {y,x,roomSize,id=”floor”}) { for(let i = y ; i < y+roomSize; i++ ){ for(let j = x; j < x+roomSize; j++){ gridij={type:id}; } } } function roomCheck(grid,{x,y,roomSize}) { if (y<1||y+roomSize>grid.length-1){ return false; } else if (x<1||x+roomSize>grid0.length-1){ return false; } for(let i = y-1; i < y+roomSize+1; i++){ for(let j = x-1; j < x+roomSize+1; j++){ if(gridij.type==="floor"){ return false; } } } return true; } //function that tracks all rooms //using first room generates 4 rooms around it //takes 4rth room //runs the function that generates 4 rooms around it const makeOtherRooms = (grid, seedRooms, counter = 1, maxRooms = c.maxRooms) => { if (counter + seedRooms.length > maxRooms || !seedRooms.length) { return grid; } grid = roomFromOne(grid, seedRooms.pop()); seedRooms.push(…grid.placedRooms); counter += grid.placedRooms.length; return makeOtherRooms(grid.grid, seedRooms, counter); }; function roomFromOne(grid,{x,y,roomSize}, range = c.roomSizes){ // range for generating the random room heights and widths const min, max = range; // generate room values for each edge of the seed room const check = ; const north = { roomSize: randomNum(min, max) }; //dont get confused about theroomSizeandroomSizeproperty when declaring a room. //the x,y,height androomSizewe use from now on are the ones //we pass in the initial function declaration createRoomsFromSeed() north.x = randomNum(x, x +roomSize- 1); north.y = y - north.roomSize - 1; north.door={ y : north.y+north.roomSize, x : randomNum(north.x, (Math.min(north.x + north.roomSize, x + roomSize)) - 1) , roomSize:1, id:’door’ } check.push(north); const east = { roomSize: randomNum(min, max) }; east.x = x +roomSize+ 1; east.y = randomNum(y,roomSize + y - 1); east.door={ y : randomNum(east.y, (Math.min(east.y + east.roomSize, y + roomSize)) - 1), x : east.x-1, roomSize:1, id:’door’ } check.push(east); const south = { roomSize: randomNum(min, max) }; south.x = randomNum(x, roomSize + x - 1); south.y = y + roomSize + 1; south.door={ y : south.y-1, x : randomNum(south.x, (Math.min(south.x + south.roomSize, x + roomSize)) - 1), roomSize:1, id:’door’ } check.push(south); const west = { roomSize: randomNum(min, max)}; west.x = x - west.roomSize + 1; west.y = randomNum(y,roomSize+ y - 1); west.door={ y : randomNum(west.y, (Math.min(west.y + west.roomSize, y + roomSize)) - 1), x : west.x+west.roomSize+1, roomSize:1, id:’door’ } check.push(west); const placedRooms = ; check.forEach(side=>{ if(roomCheck(grid,side)){ placeRoom(grid,side); placeRoom(grid,side.door); placedRooms.push(side); } }) return {grid, placedRooms}; } let grid = ; //empty grid for(let i = 0; i < c.gridHeight; i++){ grid.push(); for(let j = 0; j < c.gridWidth; j++){ gridi.push({type:"cell"}) } } const firstRoom = { roomSize : roomSizesMath.floor(Math.random()*roomSizes.length), x : 4, y : 12, } placeRoom(grid,firstRoom); return makeOtherRooms(grid, firstRoom); } function createThings(levelMap, level=1){ const enemies = ; for(let i=0; i<10; i++){ const enemy = { health:50*level, attackLevel: randomNum(level-1?level-1:level,level+1), type:"enemy" } enemies.push(enemy); } const bosses = ; if(level%3==0){ bosses.push({ health:500*level, level:level+1, type:"boss" }) } const player = {type:"player"}; const weapons = ; const weaponOptions= {name:"canon", damage:10 } const powerUps = ; let playerPos = ; enemies,bosses,player,weapons,powerUps.forEach(thing=>{ while(thing.length){ const x = Math.floor(Math.random()*c.gridWidth); const y = Math.floor(Math.random()*c.gridHeight); if(levelMapyx.type===”floor”){ if(thing0.type==”player”){ playerPos = x,y; } levelMapyx= thing.pop(); } } }); for (let i = 0; i < levelMap.length; i++) { for (let j = 0; j < levelMap0.length; j++) { if (levelMapij.type === 'door') { levelMapij.type = 'floor'; } } } return {things:levelMap,playerPos} } let dungeon = mapMaker();let firstStore = { things:createThings(dungeon) }ReactDOM.render(