{"id":15157891,"url":"https://github.com/waldohidalgo/number_guessing_game","last_synced_at":"2026-01-19T08:31:48.415Z","repository":{"id":256302154,"uuid":"854889031","full_name":"waldohidalgo/number_guessing_game","owner":"waldohidalgo","description":"Repositorio con los archivos necesarios para aprobar el proyecto número 5: Build a Number Guessing Game necesario para obtener la Relational Database Certification de freecodecamp","archived":false,"fork":false,"pushed_at":"2024-09-10T00:42:45.000Z","size":221,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T17:19:15.727Z","etag":null,"topics":["bash","bashscripting","freecodecamp","freecodecamp-challenge","freecodecamp-project","postgresql"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/waldohidalgo.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}},"created_at":"2024-09-10T00:00:08.000Z","updated_at":"2024-09-10T00:42:48.000Z","dependencies_parsed_at":"2024-09-10T04:02:03.437Z","dependency_job_id":"3d9837e8-148b-4f04-a534-4b16267c2d40","html_url":"https://github.com/waldohidalgo/number_guessing_game","commit_stats":null,"previous_names":["waldohidalgo/number_guessing_game"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldohidalgo%2Fnumber_guessing_game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldohidalgo%2Fnumber_guessing_game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldohidalgo%2Fnumber_guessing_game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldohidalgo%2Fnumber_guessing_game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waldohidalgo","download_url":"https://codeload.github.com/waldohidalgo/number_guessing_game/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247675632,"owners_count":20977376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bash","bashscripting","freecodecamp","freecodecamp-challenge","freecodecamp-project","postgresql"],"created_at":"2024-09-26T20:20:24.041Z","updated_at":"2026-01-19T08:31:48.409Z","avatar_url":"https://github.com/waldohidalgo.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Build a Number Guessing Game\n\nRepositorio con el código solución al [proyecto quinto y último](https://www.freecodecamp.org/learn/relational-database/build-a-number-guessing-game-project/build-a-number-guessing-game) el cual es requisito obligatorio para obtener la [Relational Database Certification](https://www.freecodecamp.org/learn/relational-database) de freecodecamp\n\n## Tabla de Contenidos\n\n- [Build a Number Guessing Game](#build-a-number-guessing-game)\n  - [Tabla de Contenidos](#tabla-de-contenidos)\n  - [Instrucciones y All Tests Passed](#instrucciones-y-all-tests-passed)\n  - [Proyecto Aprobado](#proyecto-aprobado)\n  - [Comandos SQL](#comandos-sql)\n  - [Bash Script](#bash-script)\n\n## Instrucciones y All Tests Passed\n\n![All Tests Passed Screenshot](./screenshots/all_tests_passed.png)\n\n## Proyecto Aprobado\n\n![Proyecto Aprobado Screenshot](./screenshots/passed.webp)\n\n## Comandos SQL\n\n```sql\nCREATE DATABASE number_guess;\n\nCREATE TABLE users(user_id SERIAL PRIMARY KEY, username VARCHAR(22) NOT NULL);\n\nCREATE TABLE games(game_id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(user_id), number_guess INTEGER NOT NULL, games_played INTEGER NOT NULL DEFAULT 0);\n```\n\n## Bash Script\n\n```bash\n#!/bin/bash\n\nPSQL=\"psql --username=freecodecamp --dbname=number_guess -t --no-align -c\"\n\nGUESS_NUMBER() {\n    USERNAME=$1\n    echo \"Guess the secret number between 1 and 1000:\"\n    NUMBER_OF_GUESSES=0\n    read NUMBER_INPUT\n    NUMBER_OF_GUESSES=$((NUMBER_OF_GUESSES + 1))\n    while [[ ! $NUMBER_INPUT =~ ^[0-9]+$ ]]; do\n        echo \"That is not an integer, guess again:\"\n        read NUMBER_INPUT\n        NUMBER_OF_GUESSES=$((NUMBER_OF_GUESSES + 1))\n    done\n    while [[ $NUMBER_INPUT -ne $SECRET_NUMBER ]]; do\n        if [[ $NUMBER_INPUT -lt $SECRET_NUMBER ]]; then\n            echo \"It's higher than that, guess again:\"\n        else\n            echo \"It's lower than that, guess again:\"\n        fi\n        read NUMBER_INPUT\n        NUMBER_OF_GUESSES=$((NUMBER_OF_GUESSES + 1))\n        while [[ ! $NUMBER_INPUT =~ ^[0-9]+$ ]]; do\n            echo \"That is not an integer, guess again:\"\n            read NUMBER_INPUT\n            NUMBER_OF_GUESSES=$((NUMBER_OF_GUESSES + 1))\n        done\n    done\n    INSERT_GAME=$($PSQL \"INSERT INTO games(user_id, games_played, number_guess) VALUES((SELECT user_id FROM users WHERE username='$USERNAME'), $NUMBER_OF_GUESSES, $SECRET_NUMBER)\")\n\n    echo \"You guessed it in $NUMBER_OF_GUESSES tries. The secret number was $SECRET_NUMBER. Nice job!\"\n}\n\nSECRET_NUMBER=$((1 + $RANDOM % 1000))\n\necho \"Enter your username:\"\n\nread USERNAME\n\nif [[ -z $USERNAME ]]; then\n    echo \"Error: Username cannot be empty\"\nelse\n    SEARCH_USERNAME=$($PSQL \"SELECT user_id FROM users WHERE username='$USERNAME'\")\n    if [[ -z $SEARCH_USERNAME ]]; then\n        echo \"Welcome, $USERNAME! It looks like this is your first time here.\"\n        INSERT_USER=$($PSQL \"INSERT INTO users(username) VALUES('$USERNAME')\")\n    else\n        QUERY_GAMES=$($PSQL \"SELECT count(*), MIN(games_played) FROM games INNER JOIN users ON games.user_id=users.user_id WHERE username='$USERNAME'\")\n        echo \"$QUERY_GAMES\" | while IFS=\"|\" read GAMES_PLAYED BEST_SCORE; do\n            echo \"Welcome back, $USERNAME! You have played $GAMES_PLAYED games, and your best game took $BEST_SCORE guesses.\"\n        done\n    fi\n    GUESS_NUMBER $USERNAME\nfi\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaldohidalgo%2Fnumber_guessing_game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaldohidalgo%2Fnumber_guessing_game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaldohidalgo%2Fnumber_guessing_game/lists"}