Skip to content

Commit

Permalink
challenge
Browse files Browse the repository at this point in the history
  • Loading branch information
Rdeisenroth committed Oct 6, 2023
1 parent 1723c37 commit 37ddbdb
Show file tree
Hide file tree
Showing 2 changed files with 224 additions and 0 deletions.
78 changes: 78 additions & 0 deletions codingchallenges/2023/Programmierchallenge_2023.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
\RequirePackage{import}
\subimport{../../exercises}{preamble.tex}

% Packages
\usepackage{hyperref}
\usepackage{fancyvrb}

%\usepackage{ClearSans}
\usepackage{csquotes}
\usepackage{tikz}
\usetikzlibrary{fit,backgrounds}


\usepackage[font=normalsize, labelfont=sf, position=bottom]{caption}
\usepackage[labelfont=normalfont, position=bottom]{subcaption}

\setlength{\parindent}{0pt}

\def\gamefont{\bfseries\sffamily}

% Document
\begin{document}


\title{Programmierchallenge Wintersemester 2023/24 \\ {\small der Fachschaft Informatik}}
\subtitle{Wintersemester 2023/24}
\author{Autoren: Ruben Deisenroth}
\maketitle

\section*{Käsekästchen \hyperref[footnote:1]{\footnotemark[1]}}
\footnotetext[1]{\label{footnote:1}\url{https://de.wikipedia.org/wiki/Käsekästchen}}
\subsection*{Ablauf des Spiels}
\subsubsection*{Spielbetrieb}
\begin{minipage}[t]{.7\textwidth}
Das Spielfeld besteht aus Karierten Kästchen. Jedes Kästchen hat vier Rand-Linien (Kanten), die Die Spieler mit Strichen überschreiben können.
Die Spieler sind immer abwechselnd am Zug. Jeder Spieler kann eine beliebige Kante eines Kästchens auswählen, und dort einen Strich setzen. Es können nur dort Striche gesetzt werden, wo noch keine sind. Wenn ein Kästchen von allen Seiten mit einem Strich umgeben ist, erobert derjenige Spieler das Feld, der den letzten Strich gesetzt hat. Wenn man ein Feld erobert hat, darf man so lange weiter Spielen, bis der letzte Strich den man gesetzt hat kein Feld mehr erobert. Danach ist der nächste Spieler wieder an der Reihe.
Wenn alle Striche gesetzt sind ist das Spiel zu Ende. Gewonnen hat derjenige Spieler, der die meisten Felder erobert hat.
\end{minipage}%
\begin{minipage}[t]{.3\textwidth}%
\centering%
\captionsetup{type=figure}
% \begin{noindent}
\begin{BVerbatim}
1 2 3 4 5 6 7
A +-----+ +-----+
| O |
B +-----+-----+-----+
| X | | O |
C +-----+ +-----+
|
D + +-----+-----+
\end{BVerbatim}
% \end{noindent}
\captionof*{figure}{Beispielhafte Darstellung einer Spielesituation\\- der erste Spieler hat Zwei Felder erobert \\- der zweite Spieler hat ein Feld erobert}
\end{minipage}%

\subsection*{Die Aufgabe}
Programmiert in Kotlin Script eine Spieladaption des oben beschriebenen \emph{Käsekästchen}.
Dieses soll auf und in der Konsole funktionieren.
Nach jedem Zug soll der*die Spieler*in mittels der Konsole einen Buchstaben zum Raten auswählen können und eine entsprechende Rückmeldung erhalten.

Das Programm soll selbst erkennen wann das Spiel für eine*n der Spieler*innen gewonnen oder verloren ist.
Im Anschluss zeigt das Programm den Ausgang des Spiels an und beendet sich.

\clearpage
\subsection*{Rahmen}
Es existiert kein \enquote{Rahmen} oder \enquote{Framework}.
Das Projekt besitzt außer diesem Dokument keine weiteren Unterlagen.
Bei Fragen könnt ihr euch am besten an die Tutor*innen oder an die Orga wenden.
Bitte haltet euch an das KISS-Prinzip\footnote[2]{\url{https://de.wikipedia.org/wiki/KISS-Prinzip}} (Keep it simple, stupid), versucht also eine möglichst einfache Lösung zu erstellen.
Es muss auch kein Wunderwerk der Technik sein.
Dennoch sind kreative Ideen gerne gesehen.

\subsection*{Die Abgabe}
Es gibt zwei Möglichkeiten der Abgabe: Bis spätestens 23:59 Uhr am Sonntag (13.10.2023) könnt ihr eure \texttt{.kts}-Datei in Moodle hochladen oder ihr schickt uns eine Mail an \href{mailto:[email protected]}{\nolinkurl{[email protected]}}.
Dort hängt ihr die Datei bitte als Anhang an.
Dabei gilt die Ankunftszeit bei uns.
\end{document}
146 changes: 146 additions & 0 deletions codingchallenges/2023/Programmierchallenge_2023_vorstellung.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
%\PassOptionsToClass{handout}{beamer}
\input{../../lecture/global}
\logo*{\includegraphics{../../lecture/globalMedia/bildmarke_ohne_rand}}
% Packages
\usepackage{hyperref}
\usepackage{csquotes}
\usepackage{tikz}
\usetikzlibrary{fit,backgrounds}

\usepackage[font=normalsize, labelfont=sf, position=bottom]{caption}
\usepackage[labelfont=normalfont, position=bottom]{subcaption}
% Stylistic Changes
\captionsetup[figure]{justification=centering}
\setlength{\parindent}{0pt}

\def\gamefont{\bfseries\sffamily}


\begin{document}

%Deckblatt
\subtitle{Programmierchallenge}

\begin{frame}[fragile]
\titlepage
\begin{columns}[c]
\begin{column}{4cm}
\begin{center}
{\huge Käsekästchen}
\end{center}
\end{column}
\begin{column}{4cm}
\begin{figure}
% \begin{noindent}
\begin{BVerbatim}
1 2 3 4 5 6 7
A +-----+ +-----+
| O |
B +-----+-----+-----+
| X | | O |
C +-----+ +-----+
|
D + +-----+-----+
\end{BVerbatim}
% \end{noindent}
\\ \sffamily\raggedright\tiny Beispielhafte Darstellung einer Spielesituation\\- der erste Spieler hat Zwei Felder erobert \\- der zweite Spieler hat ein Feld erobert
\end{figure}
\end{column}
\end{columns}
\end{frame}
\section{Programmierchallenge}
\subsection{Was ist das?}
\begin{frame}
\slidehead
\pause
\begin{itemize}
\item Ein größeres freiwilliges Projekt, dass man nach oder alternativ zu den Aufgaben machen kann (empfohlen ist nach der Übung!)
\item Ihr bekommt die Möglichkeit eure Spiele abzugeben
\item Die besten Ideen werden am Montag gezeigt
\end{itemize}
\end{frame}

\subsection{Warum?}
\begin{frame}
\slidehead
\pause
\begin{itemize}
\item Euch eine mögliche Anwendung eures gelerntes Wissens zeigen
\item Ein Spiel programmieren
\item Euch herausfordern
\end{itemize}
\pause
\vspace{\fill}
\begin{center}
\textbf{\huge Und deswegen gibt es heute eine Programmierchallenge!}
\end{center}
\vspace{\fill}
\end{frame}

\subsection{Wie soll das gehen?}
\begin{frame}
\slidehead
\begin{itemize}
\item Keine Vorerfahrung
\item Nur vier Tage Programmiervorkurs-Vorlesungen
\item Und dann ein komplettes Spiel programmieren?
\end{itemize}
\pause
\vspace{\fill}
\begin{center}
\textbf{\huge Wie sollen wir da schon bereit für ein größeres Projekt sein?}
\end{center}
\vspace{\fill}
\end{frame}

\subsection{Ihr seid bereit.}
\begin{frame}
\slidehead
\begin{itemize}
\item Ihr kennt jetzt die wichtigsten Grundkonzepte in Kotlin Script
\item Die Challenge lässt sich mit dem Wissen des Vorkurses lösen
\item So riesig ist das Projekt dann doch nicht $\Rightarrow$ gut schaffbar in einer Woche
\item Ihr dürft in Gruppen abgeben (beliebige Größe)
\item Wir helfen euch gerne
\end{itemize}
\pause
\vspace{\fill}
\begin{center}
\textbf{\huge Ihr Schafft das!}
\end{center}
\vspace{\fill}
\end{frame}

\subsection{Ablauf}
\begin{frame}
\slidehead
\begin{itemize}
\item Freischaltung der genauen Aufgabenstellung nach dieser Vorstellung (Moodle)
\item Sucht euch Gruppen
\item Abgabe bis 13.10.2023 23:59 Uhr in Moodle
\item Die besten Abgaben werden nach der O-Phase vorgestellt (genauer Termin wird noch bekannt gegeben)
\end{itemize}
\end{frame}

\subsection{Was muss man beachten?}
\begin{frame}
\slidehead
\begin{itemize}
\item KISS
\item Eine Datei, keine Projekte
\item Kommentiert euren Code
\item Ihr dürft \textbf{keine} Imports verwenden
\item euer Programm \textbf{muss} ohne Fehler gestartet werden können
\end{itemize}
\end{frame}

\section{Ansonsten...}
\begin{frame}
\slidehead
\vspace{\fill}
\begin{center}
\huge ...noch viel Spaß !
\end{center}
\vspace{\fill}
\end{frame}
\end{document}

0 comments on commit 37ddbdb

Please sign in to comment.