diff --git a/Kemirdin.md b/Kemirdin.md new file mode 100644 index 0000000..0129b18 --- /dev/null +++ b/Kemirdin.md @@ -0,0 +1,2 @@ +Hello Teacher +could you please accept my pull request? diff --git a/week3/final/robot-text/.eslintrc.json b/week3/final/robot-text/.eslintrc.json new file mode 100644 index 0000000..0a15453 --- /dev/null +++ b/week3/final/robot-text/.eslintrc.json @@ -0,0 +1,46 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "sourceType": "module" + }, + "extends": [ + "eslint:recommended" + ], + "rules": { + "no-const-assign": "warn", + "no-this-before-super": "warn", + "no-undef": "warn", + "no-unreachable": "warn", + "no-unused-vars": "warn", + "constructor-super": "warn", + "valid-typeof": "warn", + "no-var": "warn", + "prefer-const": "warn", + "no-multiple-empty-lines": "warn", + "eol-last": [ + "error", + "always" + ], + "no-console": "off", + "camelcase": "warn", + "eqeqeq": [ + "error", + "always", + { + "null": "ignore" + } + ], + "semi": [ + "warn", + "always" + ] + } +} \ No newline at end of file diff --git a/week3/final/robot-text/robot.js b/week3/final/robot-text/robot.js index f2eb96d..e8bc4f8 100644 --- a/week3/final/robot-text/robot.js +++ b/week3/final/robot-text/robot.js @@ -1,110 +1,124 @@ -(function () { - 'use strict'; - - const board = [ - ['T', 'T', '.', 'F'], - ['T', '.', '.', '.'], - ['.', '.', '.', '.'], - ['R', '.', '.', 'W'] - ]; - - const robot = { - x: 0, - y: 0, - dir: 'up', - }; - - let flagReached = false; - let moves = 0; - - board.reverse(); - - const trailIndicators = { - left: '←', - right: '→', - up: '↑', - down: '↓' - }; - - function render() { - console.log('\n ' + moves + ':'); - for (let row = board.length - 1; row >= 0; row--) { - const cells = board[row]; - let line = ''; - for (let col = 0; col < cells.length; col++) { - line += ' ' + cells[col] + ' '; - } - console.log(line); - } - if (flagReached) { - console.log('\nHurray! Flag reached in ' + moves + ' steps!'); - } - } +'use strict'; - function move() { - let x = robot.x; - let y = robot.y; - - switch (robot.dir) { - case 'up': - y = y < board.length - 1 ? y + 1 : y; - break; - case 'down': - y = y > 0 ? y - 1 : y; - break; - case 'left': - x = x > 0 ? x - 1 : x; - break; - case 'right': - x = x < board[y].length - 1 ? x + 1 : x; - break; - } +const board = [ + ['.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.'], + ['R', '.', '.', '.', 'F'], + ['.', 'A', 'A', 'A', '.'], + ['.', '.', '.', '.', '.'] +]; + +const robot = { + x: 0, + y: 2, + dir: 'right', +}; - const cellContents = board[y][x]; +let moves = 0; +let flagReached = false; +let appleEaten = false; +let applesEaten = 0; - if (cellContents === '.' || cellContents === 'F') { - board[robot.y][robot.x] = trailIndicators[robot.dir]; - robot.x = x; - robot.y = y; - board[y][x] = 'R'; - if (cellContents === 'F') { - flagReached = true; - } +board.reverse(); + +const trailIndicators = { + left: '←', + right: '→', + up: '↑', + down: '↓' +}; + +function render() { + console.log('\n ' + moves + ':'); + for (let row = board.length - 1; row >= 0; row--) { + const cells = board[row]; + let line = ''; + for (let col = 0; col < cells.length; col++) { + line += ' ' + cells[col] + ' '; } + console.log(line); + } + if (appleEaten) { + console.log("YUM!"); + } + if (flagReached) { + console.log('\nHurray! Flag reached in ' + moves + ' steps!'); + console.log(applesEaten + " apples were eaten!"); + } +} + +function move() { + let x = robot.x; + let y = robot.y; + appleEaten = false; - moves += 1; - render(); + switch (robot.dir) { + case 'up': + y = y < board.length - 1 ? y + 1 : y; + break; + case 'down': + y = y > 0 ? y - 1 : y; + break; + case 'left': + x = x > 0 ? x - 1 : x; + break; + case 'right': + x = x < board[y].length - 1 ? x + 1 : x; + break; } - function turn(turnDirection) { - if (turnDirection !== 'left' && turnDirection !== 'right') { - console.log('ignoring invalid turn', turnDirection); + const cellContents = board[y][x]; + + if (cellContents === '.' || cellContents === 'A' || cellContents === 'F') { + board[robot.y][robot.x] = trailIndicators[robot.dir]; + robot.x = x; + robot.y = y; + board[y][x] = 'R'; + if (cellContents === 'F') { + flagReached = true; } - switch (robot.dir) { - case 'up': - robot.dir = turnDirection === 'left' ? 'left' : 'right'; - break; - case 'down': - robot.dir = turnDirection === 'left' ? 'right' : 'left'; - break; - case 'left': - robot.dir = turnDirection === 'left' ? 'down' : 'up'; - break; - case 'right': - robot.dir = turnDirection === 'left' ? 'up' : 'down'; - break; + if (cellContents === 'A') { + appleEaten = true; + applesEaten++; } + } + + moves += 1; render(); +} + +function turn(turnDirection) { + if (turnDirection !== 'left' && turnDirection !== 'right') { + console.log('ignoring invalid turn', turnDirection); + } + switch (robot.dir) { + case 'up': + robot.dir = turnDirection === 'left' ? 'left' : 'right'; + break; + case 'down': + robot.dir = turnDirection === 'left' ? 'right' : 'left'; + break; + case 'left': + robot.dir = turnDirection === 'left' ? 'down' : 'up'; + break; + case 'right': + robot.dir = turnDirection === 'left' ? 'up' : 'down'; + break; + } +} - move(); - turn('right'); - move(); - move(); - move(); - turn('left'); - move(); - move(); +render(); -})(); +// start of robot game instructions +turn('down'); +move(); +turn('left'); +move(); +move(); +move(); +move(); +turn('left'); +move(); +// end of robot game instructions \ No newline at end of file