forked from b00tc4mp/isdi-bootcamp-202405
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
separate logic from view b00tc4mp#84
- Loading branch information
Showing
29 changed files
with
681 additions
and
463 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import player from './player.js' | ||
import obstacles from './obstacles.js' | ||
|
||
const data = { | ||
player, | ||
obstacles | ||
} | ||
|
||
export default data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
import randomNumberGenerator from '../util/randomNumberGenerator.js' | ||
import { SCREEN_WIDTH, SCREEN_HEIGHT } from '../util/constants' | ||
|
||
import player from './player.js' | ||
|
||
class Obstacle { | ||
constructor(id) { | ||
this.id = id | ||
const type = randomNumberGenerator(1, 3) | ||
const side = randomNumberGenerator(1, 4) | ||
|
||
switch (type) { | ||
case 1: | ||
this.width = 15 | ||
this.height = 15 | ||
this.color = 'blue' | ||
break | ||
case 2: | ||
this.width = 25 | ||
this.height = 25 | ||
this.color = 'red' | ||
break | ||
case 3: | ||
this.width = 35 | ||
this.height = 35 | ||
this.color = 'purple' | ||
break | ||
default: | ||
break | ||
} | ||
|
||
switch (side) { | ||
case 1: | ||
this.top = randomNumberGenerator(50, SCREEN_HEIGHT - this.height - 50) | ||
this.left = 50 | ||
break | ||
case 2: | ||
this.top = 50 | ||
this.left = randomNumberGenerator(50, SCREEN_WIDTH - this.width - 50) | ||
break | ||
case 3: | ||
this.top = SCREEN_HEIGHT - this.height - 50 | ||
this.left = randomNumberGenerator(50, SCREEN_WIDTH - this.width - 50) | ||
break | ||
case 4: | ||
this.top = randomNumberGenerator(50, SCREEN_HEIGHT - this.height - 50) | ||
this.left = SCREEN_WIDTH - this.width - 50 | ||
break | ||
default: | ||
break | ||
} | ||
|
||
const dirY = player.item.top - this.top | ||
const dirX = player.item.left - this.left | ||
|
||
const magnitude = Math.sqrt(dirY ** 2 + dirX ** 2) | ||
|
||
this.yMovement = dirY / magnitude | ||
this.xMovement = dirX / magnitude | ||
} | ||
} | ||
|
||
const obstacles = { | ||
items: [], | ||
addObstacle: function (id) { this.items.push(new Obstacle(id)) }, | ||
removeObstacle: function (id) { this.items = this.items.filter(obstacle => obstacle.id !== id) }, | ||
clear: function () { this.items = [] } | ||
} | ||
|
||
export default obstacles |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import { SCREEN_WIDTH, SCREEN_HEIGHT } from '../util/constants' | ||
|
||
class Player { | ||
constructor() { | ||
this.width = 25 | ||
this.height = 25 | ||
this.top = (SCREEN_HEIGHT - 25) / 2 | ||
this.left = (SCREEN_WIDTH - 25) / 2 | ||
this.points = 0 | ||
} | ||
} | ||
|
||
const player = { | ||
item: new Player(), | ||
clear: function () { this.item = new Player() } | ||
} | ||
|
||
export default player |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import data from '../data' | ||
|
||
import { OBS_SIZE, PLAYER_SIZE } from '../util/constants' | ||
|
||
export default () => { | ||
const boolean = data.obstacles.items.some(obstacle => { | ||
const obsTop = obstacle.top | ||
const obsLeft = obstacle.left | ||
const obsRight = obstacle.left + obstacle.width | ||
const obsBottom = obstacle.top + obstacle.height | ||
|
||
const playerTop = data.player.item.top | ||
const playerLeft = data.player.item.left | ||
const playerRight = data.player.item.left + PLAYER_SIZE | ||
const playerBottom = data.player.item.top + PLAYER_SIZE | ||
|
||
if (obsTop > playerTop && obsTop < playerBottom && obsLeft > playerLeft && obsLeft < playerRight || | ||
obsBottom > playerTop && obsBottom < playerBottom && obsLeft > playerLeft && obsLeft < playerRight || | ||
obsTop > playerTop && obsTop < playerBottom && obsRight > playerLeft && obsRight < playerRight || | ||
obsBottom > playerTop && obsBottom < playerBottom && obsRight > playerLeft && obsRight < playerRight) { | ||
return true | ||
} | ||
return false | ||
}) | ||
|
||
return boolean | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import data from '../data' | ||
|
||
import { SCREEN_WIDTH, SCREEN_HEIGHT } from '../util/constants' | ||
|
||
export default (id) => { | ||
const obstacle = data.obstacles.items.find(obstacle => obstacle.id === id) | ||
|
||
if (obstacle.top >= SCREEN_HEIGHT - obstacle.height - 10 || obstacle.top < 0 || obstacle.left >= SCREEN_WIDTH - obstacle.width - 10 || obstacle.left < 0) { | ||
return true | ||
} | ||
return false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default () => { | ||
data.obstacles.clear() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default () => { | ||
data.player.clear() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default (id) => { | ||
data.obstacles.addObstacle(id) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default () => { | ||
return data.obstacles.items | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default () => { | ||
return data.player.item | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default () => { | ||
return data.player.item.points | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import getPlayer from './getPlayer' | ||
import movePlayer from './movePlayer' | ||
import createObstacle from './createObstacle' | ||
import clearPlayer from './clearPlayer' | ||
import clearObstacles from './clearObstacles' | ||
import removeObstacle from './removeObstacle' | ||
import getObstacles from './getObstacles' | ||
import checkCollision from './checkCollision' | ||
import moveObstacles from './moveObstacles' | ||
import checkOutOfBounds from './checkOutOfBounds' | ||
import getPoints from './getPoints' | ||
import setPoints from './setPoints' | ||
|
||
const logic = { | ||
movePlayer, | ||
getPlayer, | ||
createObstacle, | ||
clearObstacles, | ||
clearPlayer, | ||
removeObstacle, | ||
getObstacles, | ||
checkCollision, | ||
moveObstacles, | ||
checkOutOfBounds, | ||
getPoints, | ||
setPoints | ||
} | ||
|
||
export default logic |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import data from '../data' | ||
|
||
import { OBS_PACE } from '../util/constants' | ||
|
||
export default () => { | ||
data.obstacles.items = data.obstacles.items.map(obstacle => { | ||
obstacle.top += obstacle.yMovement * OBS_PACE | ||
obstacle.left += obstacle.xMovement * OBS_PACE | ||
|
||
return obstacle | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
import data from '../data' | ||
|
||
import { SCREEN_WIDTH, SCREEN_HEIGHT } from '../util/constants' | ||
|
||
export default (e) => { | ||
const moveUp = () => { | ||
data.player.item.top = Math.max(0, data.player.item.top - 10) | ||
} | ||
|
||
const moveLeft = () => { | ||
data.player.item.left = Math.max(0, data.player.item.left - 10) | ||
} | ||
|
||
const moveRight = () => { | ||
data.player.item.left = Math.min(SCREEN_WIDTH - 25, data.player.item.left + 10) | ||
} | ||
|
||
const moveDown = () => { | ||
data.player.item.top = Math.min(SCREEN_HEIGHT - 25, data.player.item.top + 10) | ||
} | ||
|
||
if (typeof e === 'object') | ||
switch (e.key) { | ||
case 'ArrowUp': | ||
case 'w': | ||
moveUp() | ||
break | ||
case 'ArrowLeft': | ||
case 'a': | ||
moveLeft() | ||
break | ||
case 'ArrowRight': | ||
case 'd': | ||
moveRight() | ||
break | ||
case 'ArrowDown': | ||
case 's': | ||
moveDown() | ||
break | ||
default: | ||
break | ||
} | ||
else { | ||
switch (e) { | ||
case 'up': | ||
moveUp() | ||
break | ||
case 'left': | ||
moveLeft() | ||
break | ||
case 'right': | ||
moveRight() | ||
break | ||
case 'down': | ||
moveDown() | ||
break | ||
default: | ||
break | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import data from '../data' | ||
|
||
export default (id) => { | ||
data.obstacles.removeObstacle(id) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import data from '../data' | ||
|
||
export default (seconds) => { | ||
if (seconds === 0) | ||
data.player.item.points = 0 | ||
else if (seconds < 20) | ||
data.player.item.points += 1 | ||
else if (seconds < 30) | ||
data.player.item.points += 5 | ||
else if (seconds < 60) | ||
data.player.item.points += 10 | ||
else if (seconds < 120) | ||
data.player.item.points += 20 | ||
else if (seconds < 240) | ||
data.player.item.points += 40 | ||
else if (seconds >= 240) | ||
data.player.item.points += 100 | ||
} |
Oops, something went wrong.