Tell us what’s happening:
Firstly I want to point out that from the user stories you have to guess a number between 1 and 1000, but if your random number is between 1 and 1000 the tests run for too long I assume and you won’t never have it correct. That’s why I had to create a random number between 1 and 10. But I still have 2 tasks that are not correct according to the tests, but I assume my script is correct.
Those tasks are:
1.
If that username has been used before, it should print Welcome back, <username>! You have played <games_played> games, and your best game took <best_game> guesses., with <username> being a users name from the database, <games_played> being the total number of games that user has played, and <best_game> being the fewest number of guesses it took that user to win the game
When the secret number is guessed, your script should print `You guessed it in <number_of_guesses> tries. The secret number was <secret_number>. Nice job!` and finish running
I assume it has something to do with me counting the guesses. I assume when a user guess the number and also guess non integer number that is one count. I also tried to count only guesses for just a integer number but it doesn’t work either.
Also I’m not sure how the game for a user should be counted. I assume that when a user finishes a game succesfully that counts as a one game.
I’m not sure though I’m kinda desparate and don’t know what to do.
solution: universe-freecodecamp/number_guessing_game at main · jamm3e3333/universe-freecodecamp · GitHub
number_guess.sh:
#!/bin/bash
PSQL="psql --username=freecodecamp --dbname=number_guess -t --no-align -c"
echo "Enter your username:"
read USERNAME
EXISTING_USER=$($PSQL "select username from users where username='$USERNAME';")
if [[ -z $EXISTING_USER ]]
then
echo "Welcome, $USERNAME! It looks like this is your first time here."
$PSQL "insert into users (username) values ('$USERNAME')"
else
USER_ID=$($PSQL "select user_id from users where username='$USERNAME';")
GAMES_COUNT=$($PSQL "select count(*) from won_user_games where user_id='$USER_ID';")
BEST_GAME_GUESS_COUNT=$($PSQL "select coalesce(min(guess_count), -1) from won_user_games where user_id=$USER_ID;")
echo "Welcome back, $USERNAME! You have played $GAMES_COUNT games, and your best game took $BEST_GAME_GUESS_COUNT guesses."
fi
GUESS_COUNT=0
RANDOM_NUMBER=$(( RANDOM % 10 + 1 ))
NUMBER_GUESSED=-1
until [ $RANDOM_NUMBER == $NUMBER_GUESSED ]
do
echo "Guess the secret number between 1 and 1000:"
read NUMBER_GUESSED
if [[ ! $NUMBER_GUESSED =~ ^[0-9]+$ ]]
then
echo "That is not an integer, guess again:"
else
(( GUESS_COUNT++ ))
if [[ $NUMBER_GUESSED -gt $RANDOM_NUMBER ]]
then
echo "It's lower than that, guess again:"
elif [[ $NUMBER_GUESSED -lt $RANDOM_NUMBER ]]
then
echo "It's higher than that, guess again:"
fi
fi
done
USER_ID=$($PSQL "select user_id from users where username='$USERNAME';")
$PSQL "insert into won_user_games (user_id, guess_count) values ('$USER_ID', $GUESS_COUNT);"
# finish the game
echo "You guessed it in $GUESS_COUNT tries. The secret number was $RANDOM_NUMBER. Nice job!"
number_guess.sql:
--
-- PostgreSQL database dump
--
-- Dumped from database version 12.9 (Ubuntu 12.9-2.pgdg20.04+1)
-- Dumped by pg_dump version 12.9 (Ubuntu 12.9-2.pgdg20.04+1)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
DROP DATABASE number_guess;
--
-- Name: number_guess; Type: DATABASE; Schema: -; Owner: freecodecamp
--
CREATE DATABASE number_guess WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'C.UTF-8' LC_CTYPE = 'C.UTF-8';
ALTER DATABASE number_guess OWNER TO freecodecamp;
\connect number_guess
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: users; Type: TABLE; Schema: public; Owner: freecodecamp
--
CREATE TABLE public.users (
user_id integer NOT NULL,
username character varying(22) NOT NULL,
games_played bigint DEFAULT 0 NOT NULL
);
ALTER TABLE public.users OWNER TO freecodecamp;
--
-- Name: users_user_id_seq; Type: SEQUENCE; Schema: public; Owner: freecodecamp
--
CREATE SEQUENCE public.users_user_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.users_user_id_seq OWNER TO freecodecamp;
--
-- Name: users_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: freecodecamp
--
ALTER SEQUENCE public.users_user_id_seq OWNED BY public.users.user_id;
--
-- Name: won_user_games; Type: TABLE; Schema: public; Owner: freecodecamp
--
CREATE TABLE public.won_user_games (
won_game_id integer NOT NULL,
user_id integer NOT NULL,
guess_count integer
);
ALTER TABLE public.won_user_games OWNER TO freecodecamp;
--
-- Name: won_user_games_won_game_id_seq; Type: SEQUENCE; Schema: public; Owner: freecodecamp
--
CREATE SEQUENCE public.won_user_games_won_game_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.won_user_games_won_game_id_seq OWNER TO freecodecamp;
--
-- Name: won_user_games_won_game_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: freecodecamp
--
ALTER SEQUENCE public.won_user_games_won_game_id_seq OWNED BY public.won_user_games.won_game_id;
--
-- Name: users user_id; Type: DEFAULT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users ALTER COLUMN user_id SET DEFAULT nextval('public.users_user_id_seq'::regclass);
--
-- Name: won_user_games won_game_id; Type: DEFAULT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.won_user_games ALTER COLUMN won_game_id SET DEFAULT nextval('public.won_user_games_won_game_id_seq'::regclass);
--
-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: freecodecamp
--
INSERT INTO public.users VALUES (67, 'user_1672954897659', 0);
INSERT INTO public.users VALUES (68, 'user_1672954897658', 0);
--
-- Data for Name: won_user_games; Type: TABLE DATA; Schema: public; Owner: freecodecamp
--
INSERT INTO public.won_user_games VALUES (180, 67, 9);
INSERT INTO public.won_user_games VALUES (181, 67, 2);
INSERT INTO public.won_user_games VALUES (182, 68, 8);
INSERT INTO public.won_user_games VALUES (183, 68, 5);
INSERT INTO public.won_user_games VALUES (184, 67, 1);
INSERT INTO public.won_user_games VALUES (185, 67, 7);
INSERT INTO public.won_user_games VALUES (186, 67, 6);
--
-- Name: users_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: freecodecamp
--
SELECT pg_catalog.setval('public.users_user_id_seq', 68, true);
--
-- Name: won_user_games_won_game_id_seq; Type: SEQUENCE SET; Schema: public; Owner: freecodecamp
--
SELECT pg_catalog.setval('public.won_user_games_won_game_id_seq', 186, true);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (user_id);
--
-- Name: users users_username_unique; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_username_unique UNIQUE (username);
--
-- Name: won_user_games won_user_games_pkey; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.won_user_games
ADD CONSTRAINT won_user_games_pkey PRIMARY KEY (won_game_id);
--
-- Name: won_user_games won_user_games_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.won_user_games
ADD CONSTRAINT won_user_games_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(user_id);
--
-- PostgreSQL database dump complete
--
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Challenge: Number Guessing Game - Build a Number Guessing Game
Link to the challenge: