diff --git a/frontend/src/Blackjack/Player.js b/frontend/src/Blackjack/Player.js new file mode 100644 index 0000000..9a491aa --- /dev/null +++ b/frontend/src/Blackjack/Player.js @@ -0,0 +1,39 @@ +import React from "react"; +import Card from "./Card"; + +class Player extends React.Component { + constructor() { + reset(); + this.state = { + currentGrab: undefined, + currentTotal: 0, + previouscards: [] + }; + } + reset() { + this.setState(({ round }) => ({ + previouscards: [], + currentTotal: 0 + })); + } + render() { + return ( +
+
+ {previouscards.map((card, index) => { + return ; + })} +
+ {currentGrab && ( + + )} +

{JSON.stringify(currentGrab || {})}

+

+ Total score: {this.state.currentTotal} +
+ Game status: {this.state.gameStatus} +

+
+ ); + } +} diff --git a/frontend/src/Blackjack/index.js b/frontend/src/Blackjack/index.js index 3d8280a..42f481b 100644 --- a/frontend/src/Blackjack/index.js +++ b/frontend/src/Blackjack/index.js @@ -1,81 +1,67 @@ -import React from 'react'; -import Deck from './Deck'; -import Card from './Card'; -//import { bindExpression } from '@babel/types'; +import React from "react"; +import Deck from "./Deck"; +import Player from "./Player"; class Blackjack extends React.Component { - constructor(props) { - super(props); + constructor(props) { + super(props); - this.state = { - currentGrab: undefined, - currentTotal: 0, - gameStatus: 'playing', - previouscards: [], - round: 0 - }; + this.state = { + gameStatus: "playing", + round: 0, + players: [new Player(), new Player()] + }; - this.onGrab = this.onGrab.bind(this); - } + this.onGrab = this.onGrab.bind(this); + } - onGrab(card) { - let { currentTotal, gameStatus, previouscards } = this.state; - let valueToAdd; - if (card && gameStatus === 'playing') { - if (card.card === 0 && ((card.value + currentTotal) > 21)) { - valueToAdd = 1; - } else { - valueToAdd = card.value; - } + onGrab(card) { + let { currentTotal, gameStatus, previouscards } = this.state; + let valueToAdd; + if (card && gameStatus === "playing") { + if (card.card === 0 && card.value + currentTotal > 21) { + valueToAdd = 1; + } else { + valueToAdd = card.value; + } - currentTotal += valueToAdd; - this.setState({ currentGrab: card, currentTotal: currentTotal }); - previouscards.push(card); - if (currentTotal === 21) { - this.setState({ gameStatus: 'win' }); - } else if (currentTotal > 21) { - this.setState({ gameStatus: 'lose' }); - } - } + currentTotal += valueToAdd; + this.setState({ currentGrab: card, currentTotal: currentTotal }); + previouscards.push(card); + if (currentTotal === 21) { + this.setState({ gameStatus: "win" }); + } else if (currentTotal > 21) { + this.setState({ gameStatus: "lose" }); + } } + } - startNewRound(){ - this.setState(({round}) => ({ - previouscards: [], - currentTotal: 0, - gameStatus: 'playing', - round: round + 1 - })); - } + startNewRound() { + this.setState(({ round }) => ({ + gameStatus: "playing", + round: round + 1 + })); + } - render() { - let { currentGrab, gameStatus, previouscards, round } = this.state; - return ( - - - - - - - -
- {previouscards.map((card, index) => { - return - })} -
- - {currentGrab && } -

{ - JSON.stringify(currentGrab || {}) - }

-

- Total score: {this.state.currentTotal} -
Game status: {this.state.gameStatus} -

- -
- ) - } + render() { + let { gameStatus, players, round } = this.state; + return ( + + + + + + + +
+ {players.map((card, index) => { + return ; + })} +
+ +
+ ); + } } -export default Blackjack; \ No newline at end of file +export default Blackjack;