Advertisement
Qpel

444prakt

Nov 21st, 2019
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. pathfinderservice:
  2.  
  3.  
  4.  
  5. class PathFinderServise {
  6.     constructor(dice, activePosition, amount, coordinates){
  7.         this._dice = dice
  8.         this._activePosition = activePosition
  9.         this._amount = amount
  10.         this._coordinates = coordinates
  11.     }
  12.  
  13.     getPath() {
  14.       const lastPosition = this._getLastPosition()
  15.       const activePath = this._getActivePath(lastPosition)
  16.       return activePath
  17.     }
  18.  
  19.     _getLastPosition() {
  20.    
  21.         let lastPosition = this._activePosition + this._dice
  22.        
  23.         if (lastPosition > this._amount) lastPosition = this._amount//sitas isijungia tik jei virsyja
  24.         else if(lastPosition < 1) lastPosition = 1 //kas neitu i minusa bet i pirma laukeli
  25.         return lastPosition//current 3 dice 2 = 5
  26.     }
  27.  
  28.     _getActivePath(lastPosition) {
  29.        
  30.         let result = {}
  31.         for (let i = 1; i <= this._amount; i++) {
  32.             if(!this._coordinates[i] ){
  33.                
  34.                 break
  35.             }
  36.             let coordinate = this._coordinates[i]
  37.             if (coordinate.id == lastPosition) {
  38.                 result = coordinate
  39.                 break
  40.             }
  41.         }
  42.  
  43.         return result
  44.     }
  45.  
  46. }
  47. module.exports = PathFinderServise
  48.  
  49.  
  50.  
  51. app:
  52.  
  53. import React, {Component} from 'react'
  54.  
  55. class App extends Component {
  56.     constructor(props) {
  57.         super(props)
  58.         this.inputSelect = React.createRef()
  59.         this.onDice = this.onDice.bind(this)
  60.         this.state = {
  61.             isLoaded: false,
  62.             //shipLocation: [x: 0, y: 0],
  63.             value: '',
  64.             coordinates: [],
  65.             dice: 0,
  66.             activePath : 0
  67.     }
  68. }
  69.  
  70. onDice() {
  71.     fetch("http://localhost:3000/api/dice?actionType=dice&activePath="+ this.state.activePath)
  72.     .then(res => res.json())
  73.     .then(result => {
  74.      
  75.         this.setState({
  76.             coordinates: result.coordinates,
  77.             dice: result.dice,
  78.             activePath: result.coordinates.id
  79.         })
  80.     })
  81.     .catch(e => console.log(e))
  82. }
  83.  
  84. componentDidMount(){
  85.     //const result = {
  86.      //   actionType: 'start'
  87.     //}
  88.    /*
  89.     fetch('http://localhost:3000/api/action', {
  90.         method: 'POST',
  91.         body: JSON.stringify(result)
  92.     })
  93.     .then(res => res.json())
  94.     .then(result => {
  95.         this.setState({
  96.             currentCoordinate: result
  97.         })
  98.     })*/
  99.  
  100. }
  101.  /*
  102. _onHandleAction(actionType, bonus = {}){
  103.     const result = {
  104.         actionType,
  105.         bonus
  106.     }
  107.  
  108.     fetch('http://localhost:3000/api/action', {
  109.         method: 'POST',
  110.         body: JSON.stringify(result)
  111.     })
  112.     .then(res => res.json())
  113.     .then(result => {
  114.         this.setState({
  115.             currentCoordinate: result
  116.         })
  117.     })
  118. }
  119. */
  120.  
  121. showDice() {
  122.     let dicee = []
  123.     for (let i = 0; i < this.state.dice; i++){
  124.       dicee.push( <div className="grid-item"></div> )
  125.     }
  126.     return dicee
  127. }
  128.  
  129.  
  130.     render() {
  131.         console.log(this.state)
  132.         const {currentCoordinate}=this.state
  133.        
  134.         return (
  135.             <div className="fatherblock">
  136.                 <div className="firstdiv">
  137.                     <img className="imgmap" id="mapas" src="./images/zemelapis.png"/>
  138.                     <img style={{left: 660, top:730, position:"absolute", height: 150, width: 150}} src="./images/laivas.png"/>
  139.                    
  140.                 </div>
  141.                 <button onClick={this.onDice }>Kauliukas</button>
  142.                 <div>Iskrito: {this.state.dice} </div>
  143.                 <div className="grid-container">
  144.                 {this.showDice()}
  145.                 </div>
  146.             </div>
  147.         )
  148.     }
  149.    
  150. }
  151. export default App
  152.  
  153.  
  154.  
  155. gamecontroler:
  156.  
  157.  
  158. const PathFinderServise = require('../services/PathFinderService')
  159.  
  160. class GameControler {
  161.     constructor() {
  162.         this.findCoordinate = this.findCoordinate.bind(this)
  163.         this.getPath = this.getPath.bind(this)
  164.         //this.getDices = this.getDices.bind(this)
  165.        
  166.     }
  167.  
  168.     _shipCoordinates() {
  169.         return [
  170.            
  171.             {id: 1, x: 660  , y: 730 ,entity:1, obsticle: false},
  172.             {id: 2, x: 530  , y: 730 , entity:1,obsticle: {bonus: {multiply: true}}}, // daugiklis x2
  173.             {id: 3, x: 440  , y: 700 , entity:1,obsticle: {penalty: {newgame: true}}}, // new game
  174.             {id: 4, x: 495  , y: 610 ,entity:1, obsticle: false},
  175.             {id: 5, x: 540  , y: 530 , entity:1,obsticle: {penalty: {test: true}}}, // testas prides +1
  176.             {id: 6, x: 440  , y: 510 , entity:1,obsticle: {bonus: {multiply: true }}}, // daugiklis x2
  177.             {id: 7, x: 345  , y: 520, entity:1, obsticle: false},
  178.             {id: 8, x: 250  , y: 490 ,entity:1, obsticle: false},
  179.             {id: 9, x: 230  , y: 405, entity:1, obsticle: false},
  180.             {id: 10, x: 150  , y: 340 ,entity:1, obsticle: {penalty: {backstep: true}}}, //  3 zingsniai atgal
  181.             {id: 11, x: 190 , y:  260 , entity:2, obsticle: false},
  182.             {id: 12, x: 230 , y:  170  , entity:2, obsticle: false},
  183.             {id: 13, x: 280  ,y:  110 , entity:2, obsticle: false},
  184.             {id: 14, x: 270  , y: 120  , entity:2, obsticle: false},
  185.             {id: 15, x: 480  , y: 130  ,entity:2   , obsticle: {penalty: {backstep: true}}}, //  3 zingsniai atgal
  186.             {id: 16, x: 565  , y: 100  ,entity:2   , obsticle: {penalty: {newgame: true}}},
  187.             {id: 17, x: 650  , y: 120 , entity:2 , obsticle: {bonus: {stepfurther: true }}}, // 2 zingsniai i prieki ( laimi zaidima )
  188.             {id: 18, x: 690  , y: 180  ,entity:2   , obsticle: {penalty: {test: true}}}, // testas
  189.             {id: 19, x: 740  , y: 240 , entity:2, obsticle: false}
  190.         ]
  191.     }
  192.  
  193.  
  194.     findCoordinate(req, res, next) {
  195.         const coordinateId = parseInt(req.body.coordinateId) || 0
  196.         const coordinates = this._shipCoordinates()
  197.         const amount = coordinates.length
  198.         let result = {}
  199.         for (let i = 0; i < amount; i++) {
  200.             let coordinate = coordinates[i]
  201.             if (coordinate.id == coordinateId) {
  202.                 result = coordinate
  203.                 break
  204.             }
  205.         }
  206.     }
  207.  
  208.  
  209.  
  210.         _dice(){
  211.             return  Math.floor(Math.random() * 6) + 1;
  212.         }
  213.         /*
  214.         getDices(req, res, next) {
  215.             const dice = this._dice()
  216.             return res.json(dice)
  217.         }*/
  218.  
  219.     getPath(req, res, next) {
  220.         let newPosition = 0
  221.         let dice = this._dice()
  222.         let activePosition = req.query.activePath
  223.         let bonus = '-3'
  224.         let amount = 19
  225.        
  226.         //console.log(activePosition)
  227.         activePosition = parseInt(activePosition)
  228.         bonus = parseInt(bonus)
  229.         const actionType = req.query.actionType
  230.         if(actionType == 'dice') {
  231.             //turi kviesti dice funckija ir ispausdinti kiek gavo back ende skaicius i front enda
  232.             newPosition = dice
  233.         } else if (actionType == 'bonus') {
  234.             newPosition = activePosition + (bonus)
  235.         }
  236.         const pathFinderService = new PathFinderServise(newPosition, activePosition, amount, this._shipCoordinates())
  237.         const result = pathFinderService.getPath()
  238.         //console.log(newPosition)
  239.         return res.json(
  240.             {
  241.                 coordinates: result,
  242.                 dice: newPosition
  243.             }
  244.  
  245.         )
  246.     }
  247. }
  248.  
  249. module.exports = GameControler
  250.  
  251.  
  252.  
  253.  
  254.  
  255. style:
  256.  
  257.  
  258.  
  259. .fatherblock {
  260.   width: 100vh;
  261.   height: 100vh;
  262. }
  263. .firstdiv {
  264.   height: 1000px;
  265.   width: 1000px;
  266. }
  267. .imgmap{
  268.   max-width: 100%;
  269.   max-height: 100%;
  270. }
  271.  
  272.  
  273. .grid-container {
  274.   display: grid;
  275.   grid-template-columns: 100px 100px;
  276.   padding: 15px;
  277. }
  278.  
  279. .grid-item {
  280.   background-color: rgba(115, 115, 115, 0.8);
  281.   border: 1px solid rgba(89, 89, 89, 0.8);
  282.   padding: 40px;
  283.   border-radius: 50px;
  284. }
  285.     /*  .laivas {
  286.        
  287.         position: absolute;
  288.        
  289.         top: 671px;
  290.         left: 855px;
  291.          width:200px;
  292.          height: 200px;
  293.         }
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300. routes:
  301.  
  302. const GameControler = require('./controllers/GameControler')
  303. const gameControler = new GameControler()
  304.  
  305. module.exports = (app) => {
  306.     app.get('/', (req, res) => {
  307.         res.render('home')
  308.     })
  309.     //app.get('/', gameControler.getPath)
  310.     //app.get('/api/', gameControler.getPath)
  311.     //app.post('/api/', gameControler.getPath)
  312.    
  313.     app.get('/api/dice', gameControler.getPath)
  314.     return app
  315. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement