{"id":28445374,"url":"https://github.com/suptarr/rockpaperscissorsx99","last_synced_at":"2026-05-15T18:34:52.348Z","repository":{"id":195536533,"uuid":"693114658","full_name":"SupTarr/rockPaperScissorsX99","owner":"SupTarr","description":"Write functions to power a 3-round variation on the classic Rock Paper Scissors game!","archived":false,"fork":false,"pushed_at":"2023-09-18T14:12:09.000Z","size":458,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T03:42:53.464Z","etag":null,"topics":["css","html","javascript"],"latest_commit_sha":null,"homepage":"https://suptarr.github.io/rockPaperScissorsX99/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SupTarr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-09-18T11:32:16.000Z","updated_at":"2023-09-18T12:40:49.000Z","dependencies_parsed_at":"2025-10-08T03:40:41.326Z","dependency_job_id":null,"html_url":"https://github.com/SupTarr/rockPaperScissorsX99","commit_stats":null,"previous_names":["suptarr/rockpaperscissorsx99"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SupTarr/rockPaperScissorsX99","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SupTarr%2FrockPaperScissorsX99","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SupTarr%2FrockPaperScissorsX99/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SupTarr%2FrockPaperScissorsX99/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SupTarr%2FrockPaperScissorsX99/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SupTarr","download_url":"https://codeload.github.com/SupTarr/rockPaperScissorsX99/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SupTarr%2FrockPaperScissorsX99/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074874,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","html","javascript"],"created_at":"2025-06-06T10:12:45.421Z","updated_at":"2026-05-15T18:34:52.334Z","avatar_url":"https://github.com/SupTarr.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rock Paper Scissors x99\n\n## Project Overview\n\nIn this project, you will build all of the logic needed for a more intense version of\nRock Paper Scissors (RPS). Rather than selecting just one of Rock, Paper, or Scissors - each player\nwill select three moves. Each move will consist of a type (Rock, Paper, or Scissors) as well\nas a strength value. Each player will have 99 total points to use as strength between all\nthree of their moves. For example, an example set of moves might be:\n\n- Move 1: Rock - 30 Strength Points\n- Move 2: Rock - 60 Strength Points\n- Move 3: Paper - 9 Strength Points\n\nThe strength for each move must be at least 1.\n\nAfter each player's moves are chosen, they will compare moves in the order they were selected. If two moves have different types (for example, Rock vs Scissors), then normal RPS rules will apply (in this case, Rock beats Scissors).\nHowever, if two types are the same, then the move with more strength will win. If both strength values are\nequal, then a tie is declared.\n\nThe player that wins the majority of the three rounds will be the winner of the game.\n\nTo demo all of this functionality, try out a final version of this project, located [here](https://s3.amazonaws.com/codecademy-content/programs/build-apis/projects/build-apis-project-1-rock-paper-scissors-x99/project/index.html).\n\n## How To Begin\n\nTo start, download the starting code for this project [here](https://s3.amazonaws.com/codecademy-content/PRO/skill-paths/backend-javascript/projects/rock-paper-scissors-x99/project-1-rock-paper-scissors-x99-start.zip). To do this, you may either use the git command line tool\n(if you are comfortable with it) or click the green button labeled \"Clone or download\" at the top right of this page and select \"Download zip\". After downloading the zip folder, double click it to uncompress it and access the contents of this project.\n\n## Implementation Details\n\nAll of your code should be written in the file at the following path: **js/game-logic.js**. Use the descriptions and testing suite discussed below to guide implementation of all necessary functionality.\n\nTo complete this project, your code will need to contain the following:\n\n- Twelve global variables representing each player's move types and values (3 move types and 3 move values for each player). These variable names should be in the form of `playerOneMoveOneType`, `playerOneMoveOneValue`, etc.\n\n- A function called `setPlayerMoves`, which will take a string representing a player (in the form of `'Player One'` or `'Player Two'`), three move types, and three move values, and set the correct global move variables. The method signature for this function should be as follows: `setPlayerMoves(player, moveOneType, moveOneValue, moveTwoType, moveTwoValue, moveThreeType, moveThreeValue)`.\n\n- A function called `getRoundWinner`, which takes a round number (`1`, `2`, or `3`), compares both player's move types and values for that round, and returns the appropriate winner (`'Player One'`, `'Player Two'`, or `'Tie'`)\n\n- A function called `getGameWinner`, which compares both player's move\n  types and values for the whole game and returns the appropriate winner (`'Player One'`, `'Player Two'`, or `'Tie'`)\n\n- Bonus: A function called `setComputerMoves`, which chooses three random moves for player two. The move type for each move should be completely random, and the move values should be random but add up to 99.\n\nTo demo your version of the game, open **index.html** in your browser (by double clicking **index.html** in a file browser or dragging it into your Internet browser). You will be writing\nJavaScript code that uses new syntax (you will learn more about this later),\nso you will need to use the most up-to-date version of Chrome to ensure your code runs correctly. If your\nversion of Chrome is too old, correctly-written code may still not run as expected.\n\n_Disclaimer_: If you have prior JavaScript or programming experience, you might be able to come up with an implementation that uses language features or best practices that we haven't yet covered in Build Web APIs From Scratch. The implementation details and the tests for this project require a specific implementation based upon the material covered so far: JS types, variables, functions, and scope, but not topics that will be covered in later units.\n\nAs the projects in the Intensive continue, the project specifications and tests will become less granular, allowing you to implement the required functionality on your own.\n\n## Testing\n\nA testing suite has been provided for you, checking for all essential functionality and\nedge cases.\n\nTo run these tests, first open the root project directory in your terminal. Then run `npm install` to install\nall necessary testing dependencies (you will only need to do this step once).\nFinally, run `npm run test`. You will see a list of tests that ran with information\nabout whether or not each test passed. After this list, you will see more specific output\nabout why each failing test failed.\n\nAs you implement functionality, run the tests to\nensure you are creating correctly named variables and functions that return the proper values.\nThe tests will additionally help you identify edge cases that you may not have anticipated when first writing the functions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuptarr%2Frockpaperscissorsx99","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuptarr%2Frockpaperscissorsx99","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuptarr%2Frockpaperscissorsx99/lists"}