Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
[submodule "Homeworks/2-Git/hw-project"]
path = Homeworks/02-Git/hw-project
url = git@github.com:czertyaka/CppDevCourse-hw2.git
[submodule "Homeworks/04-Guessing-Game/hw-project"]
path = Homeworks/04-Guessing-Game/hw-project
url = git@github.com:czertyaka/CppDevCourse-hw-guessing-game.git
147 changes: 147 additions & 0 deletions Homeworks/04-Guessing-Game/guessing-game.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
\documentclass[14pt]{extarticle}

\usepackage{homeworktemplate}
\usepackage[askip=3mm, bskip=3mm]{mylisting}
\usepackage[stable]{footmisc}
\usepackage{csquotes}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary {arrows.meta}

\title{Домашняя работа 3 \\ The Guessing Game}

\begin{document}

\maketitle

\tableofcontents

\section{Задание} \label{requirements}

В этом домашнем задании вам предлагается реализовать простейший случай
игры Guessing Game.
Её суть сводится к тому, что программа \enquote{загадывает} число в известном
диапазоне, а пользователь должен это число угадать с нескольких попыток.

\subsection{Требования}

\begin{enumerate}

\item Программа после начала выполнения должна \enquote{загадывать} случайное число в
диапазоне от 0 до 9.
Программа на протяжении всей дальнейшей работы не должна менять это число.

\item Количество попыток пользователя не ограничено.
Программа штатно завершает работу только после удачной попытки угадать число.

\item Программа должна выводить строку \framebox{Guess a number from 0 to 9: }
(обратите внимание на пробел в конце строки) перед каждой попыткой
пользователя угадать число.

\item Программа должна выводить \framebox{Wrong!}, когда введенное пользователем число
не совпало с \enquote{загаданным}, и \framebox{Correct!}, когда совпало.

\end{enumerate}

\subsection{Алгоритм}

Алгоритм игры изображен на рис.~\ref{fig:algorithm}.

\begin{figure}[h!]

\centering

\begin{tikzpicture}

\tikzstyle{every node}=[draw]

\node (start) [rounded corners=10pt] {Начало работы};
\node (generation) [rectangle, below=1cm of start] {Генерация случайного числа};
\node (input) [trapezium, trapezium right angle=120, trapezium left angle=60, below=1cm of generation] {Ввод числа пользователем};
\node (decision) [diamond, aspect=2, below=1cm of input] {Числа равны?};
\node (end) [rounded corners=10pt, below=1cm of decision] {Завершение работы};

\node (no) [draw=none, fill=none, below right=0.1cm and 0.1cm of decision.east] {Нет};
\node (no) [draw=none, fill=none, below right=0.1cm and 0.1cm of decision.south] {Да};

\draw[-{>[length=1mm]}] (start) -- (generation);
\draw[-{>[length=1mm]}] (generation) -- (input);
\draw[-{>[length=1mm]}] (input) -- (decision);
\draw[-{>[length=1mm]}] (decision) -- (end);
\draw[-{>[length=1mm]}] (decision.east) to[bend right=90] (input.east);

\end{tikzpicture}

\caption{Алгоритм игры}\label{fig:algorithm}

\end{figure}

\subsection{Ограничения}

\begin{itemize}

\item Можно считать, что в поток ввода всегда поступает строка,
корректно преобразующаяся в число.
Т.е., не нужно добавлять в программу валидацию ввода пользователя.

\end{itemize}

\section{Порядок выполнения}

\begin{enumerate}

\item Создайте форк репозитория \url{https://github.com/czertyaka/CppDevCourse-hw-guessing-game}.

\item Добавьте в форк файл \textit{main.cpp}.

\item В файл \textit{main.cpp} добавьте код Guessing Game.

\item Соберите проект и протестируйте решение.

\item Создайте pull request из вашего форка в оригинальный репозиторий,
в названии которого есть ваше ФИО.

\end{enumerate}

\section{Критерии выполнения}

\begin{itemize}

\item Выполнены все требования из \ref{requirements}.

\item Pull request проходит автоматизированные проверки.

\item Код в pull request прошел ревью преподавателем.

\end{itemize}

\section{Полезные ссылки}

\begin{itemize}

\item Операции ввода-вывода:

\begin{itemize}

\item \url{https://www.geeksforgeeks.org/cpp/basic-input-output-c/}

\item \url{http://en.cppreference.com/w/cpp/io/cin.html}

\item \url{http://en.cppreference.com/w/cpp/io/cout.html}

\item \url{https://en.cppreference.com/w/cpp/io/manip.html}

\end{itemize}

\item Генерация случайный чисел:

\begin{itemize}

\item \url{http://en.cppreference.com/w/cpp/numeric/random.html}

\end{itemize}

\end{itemize}

\end{document}

1 change: 1 addition & 0 deletions Homeworks/04-Guessing-Game/hw-project
Submodule hw-project added at d7ac2b
14 changes: 12 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ BUILD_DIR := build
hw-01 \
hw-02 \
hw-03 \
hw-04 \
install \
pr-01 \
pr-02 \
Expand All @@ -31,6 +32,7 @@ build: \
hw-01 \
hw-02 \
hw-03 \
hw-04 \
pr-01 \
pr-02 \
pr-03 \
Expand Down Expand Up @@ -64,6 +66,7 @@ install: build
cp "$(BUILD_DIR)/hw-01.pdf" "$(PREFIX)/Домашние задания/01 Hello World.pdf"
cp "$(BUILD_DIR)/hw-02.pdf" "$(PREFIX)/Домашние задания/02 Git & Github.pdf"
cp "$(BUILD_DIR)/hw-03.pdf" "$(PREFIX)/Домашние задания/03 Two Sum.pdf"
cp "$(BUILD_DIR)/hw-04.pdf" "$(PREFIX)/Домашние задания/04 The Guessing Game.pdf"
mkdir -p "$(PREFIX)/Проекты"
cp "$(BUILD_DIR)/prj-auth-lib.pdf" "$(PREFIX)/Проекты/Библиотека идентификации и аутентификации.pdf"
cp "$(BUILD_DIR)/prj-enc-exch.pdf" "$(PREFIX)/Проекты/Baremetal шифрование обмена.pdf"
Expand All @@ -79,6 +82,7 @@ help:
@printf "hw-01\tbuild homework hw-01.pdf\n"
@printf "hw-02\tbuild homework hw-02.pdf\n"
@printf "hw-03\tbuild homework hw-03.pdf\n"
@printf "hw-04\tbuild homework hw-04.pdf\n"
@printf "install\tinstall all presentations and homeworks\n"
@printf "pr-01\tbuild presentation pr-01.pdf\n"
@printf "pr-02\tbuild presentation pr-02.pdf\n"
Expand Down Expand Up @@ -111,6 +115,7 @@ pr-12: pr-12.pdf
hw-01: hw-01.pdf
hw-02: hw-02.pdf
hw-03: hw-03.pdf
hw-04: hw-04.pdf

prj-auth-lib: prj-auth-lib.pdf
prj-enc-exch: prj-enc-exch.pdf
Expand Down Expand Up @@ -275,8 +280,13 @@ hw-02.pdf: \
hw-03.pdf: \
Homeworks/03-TwoSum/two-sum.tex \
Homeworks/homeworktemplate.sty \
$(wildcard Homeworks/03-TwoSum/**/*.cpp) \
$(wildcard Homeworks/03-TwoSum/**/*.h) \
Packages/terminal.sty \
Packages/mylisting.sty
$(call generate_pdf,$<,$@)

hw-04.pdf: \
Homeworks/04-Guessing-Game/guessing-game.tex \
Homeworks/homeworktemplate.sty \
Packages/terminal.sty \
Packages/mylisting.sty
$(call generate_pdf,$<,$@)
Expand Down