\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{ProjectSB19} \pdfinfo{ /Title (pygame.pdf) /Creator (Cheatography) /Author (ProjectSB19) /Subject (Pygame Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{72B943} \definecolor{LightBackground}{HTML}{F6FAF3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Pygame Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{ProjectSB19} via \textcolor{DarkBackground}{\uline{cheatography.com/81531/cs/19525/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}ProjectSB19 \\ \uline{cheatography.com/projectsb19} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 29th May, 2019.\\ Updated 29th May, 2019.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Import \& Initialisierung}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{`import pygame\{\{nl\}\}pygame.init()`} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Dieser Code importiert das Pygame-Modul. Mit der Init-Funktion k{\"o}nnt ihr Pygame initialisieren, sodass Sie mit der Spielentwicklung loslegen k{\"o}nnt.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Fenster erzeugen}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{screen = \seqsplit{pygame.display.set\_mode((width}, height))} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Erstellt ein Fenster für dein Spiel, dass einer Leinwand {\"a}hnelt und eine Oberfl{\"a}che zurückgibt. Die Oberfl{\"a}che ist in einer Variable screen gespeichert. Die Argumente sind Breite (width) und H{\"o}he (heigth) des Bildschirms.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{p{0.8 cm} p{0.8 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Fenstername festlegen}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{\seqsplit{`display.set\_caption(SummerBYTE} 2019!)`} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{Diese Funktion legt das übergebene Argument als Titel des Fensters fest.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Hauptschleife}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{for event in pygame.event.get(): \newline if event.type == pygame.QUIT: \newline pygame.quit()} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Dies ist eine Schleife, die st{\"a}ndig nach Ereignissen sucht. Wird das Ereignis QUIT gelesen, wird sie verlassen weiterhin wird das Einfrieren des Spiels verhindert.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Fenster aktualisieren}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{`pygame.display.update()`}} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Aktualisiert das Fenster und erneuert lediglich die Oberfl{\"a}che, wenn keine Argumente angegeben werden. Wenn Du allerdings die Variablen spezifizierst, werden die von Dir angegebenen Teile entsprechend neu gezeichnet.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Farbe}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{`pygame.Color(R, G, B)`} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Erzeugt ein farbiges Objekt mit RGB als Argumente.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Oberfl{\"a}che f{\"a}rben}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{`Surface.fill(color)`} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Mit dieser Funktion kannst Du den ganzen Bildschirm in einer Farbe ausfüllen. Argumente sollten RGBA-Werte (Rot, Grün, Blau, Alpha) sein.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Gruppen}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Eine Gruppe bilden und füllen}}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`from pygame.sprite import Sprite, Group \{\{nl\}\} \{\{nl\}\}def Sphere(Sprite): \{\{nl\}\}... \{\{nl\}\}def draw\_sphere(self):\{\{nl\}\} ... \{\{nl\}\} def update(self): \{\{nl\}\}...\{\{nl\}\} spheres = Group() \{\{nl\}\} \{\{nl\}\} new\_sphere = Sphere() \{\{nl\}\}sphere.add(new\_bullet)`} \tn % Row Count 6 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Durchlaufen der Elemente einer Gruppe}} \{\{nl\}\} \textasciicircum{}Die sprites()-Methode gibt alle Mitglieder einer Gruppe zurück.\textasciicircum{}} \tn % Row Count 9 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`for sphere in spheres.sprites():\{\{nl\}\} sphere.draw\_sphere()`} \tn % Row Count 11 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{update() auf einer Gruppe aufrufen}} \{\{nl\}\} \textasciicircum{}Beim Aufruf von update() für eine Gruppe wird automatisch update() für jedes Mitglied der Gruppe aufgerufen.\textasciicircum{}} \tn % Row Count 15 (+ 4) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`spheres.update()`} \tn % Row Count 16 (+ 1) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Element einer Gruppe entfernen}}} \tn % Row Count 17 (+ 1) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`spheres.remove(bullet)`} \tn % Row Count 18 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Pygame hat eine Group-Klasse, die das Arbeiten mit einer Gruppe {\"a}hnlicher Objekte vereinfacht. Eine Gruppe ist wie eine Liste mit einigen zus{\"a}tzlichen Funktionen, die beim Erstellen von Spielen hilfreich sind.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Sprites}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Sprite erstellen}}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`class \seqsplit{Player(pygame.sprite.Sprite):} \{\{nl\}\} ~~~def \_\_init\_\_(self): \{\{nl\}\} \seqsplit{~~~~~~pygame.sprite.Sprite.\_\_init\_\_(self)} \{\{nl\}\} ~~~~~ self.image = pygame.Surface((50, 50))`\{\{nl\}\} Erzeugt ein 50x50 Pixel gro{\ss}es Quadrat...` \{\{nl\}\} ~~~~~~~ self.image.fill(GREEN) \{\{nl\}\} `...und f{\"a}rbt es grün ein.`\{\{nl\}\} ~~~~~~~ self.rect = self.image.get\_rect() ` \{\{nl\}\} Berechent das, das Objekt umschlie{\ss}ende, Rechteck, um die Koordinaten eines Objekts zu verfolgen.} \tn % Row Count 13 (+ 12) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Sprite spawnen lassen}}} \tn % Row Count 14 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`all\_sprites = pygame.sprite.Group() \{\{nl\}\} player = Player() \{\{nl\}\} all\_sprites.add(player) ` \{\{nl\}\} Erst wird eine leere Gruppe für die Sprites erstellt, dann eine Sprite Player (also das Quadrat) erstellt und dieser dann auch in die Gruppe hinzugefügt.} \tn % Row Count 20 (+ 6) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Sprite bewegen}}} \tn % Row Count 21 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`class Player (pygame.sprite.Sprite): \{\{nl\}\} ... \{\{nl\}\}~~~def update(self): \{\{nl\}\} ~~~~~ self.rect.x += 5` \{\{nl\}\} Um Deinen Sprite zu bewegen, musst Du zuerst Deine Klasse Player erweitern, denn es wird nun die Funktion update(self) hinzugefügt, die Dein Quadart updatet, wenn sie aufgerufen wird. In diesem Fall erh{\"o}hst Du die x-Koordinate um 5, d.h. Dein Quadrat bewegt sich nach rechts.} \tn % Row Count 30 (+ 9) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Kollisionen erkennen}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Kollisionen zwischen einem einzelnen Objekt und einer Gruppe}} \{\{nl\}\} \textasciicircum{}Die Funktion spritecollideany() nimmt ein Objekt und eine Gruppe und gibt True zurück, wenn das Objekt mit einem Mitglied der Gruppe überlappt.\textasciicircum{}} \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`if \seqsplit{pg.sprite.spritecollideany(ball}, pins): pins\_left -= 1`} \tn % Row Count 7 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Kollisionen zwischen zwei Gruppen}} \{\{nl\}\} \textasciicircum{}sprite.groupcollide() umfasst zwei Gruppen und zwei Booleans. Sie gibt ein W{\"o}rterbuch zurück, das Infos zu den kollidierten Mitgliedern hat. Die Booleans geben an, ob entsprechende Mitglieder einer Gruppe gel{\"o}scht werden sollen.\textasciicircum{}} \tn % Row Count 13 (+ 6) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`collisions = pg.sprite.groupcollide( \{\{nl\}\} ships, aliens, True, True) \{\{nl\}\} score += len(collisions) * alien\_point\_value`} \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Du kannst erkennen, wenn ein einzelnes Objekt mit einem Mitglied einer Gruppe kollidiert. Oder auch, wenn ein Mitglied einer Gruppe mit einem Mitglied einer anderen Gruppe kollidiert.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Ereignisse}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{`pygame.event.post()` \{\{nl\}\} Platziert ein neues Ereigniss, welches Du in der Warteschlange spezifizierst.} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`pygame.event.Event()` \{\{nl\}\} Erzeugt ein neues Ereignisobjekt.} \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{`pygame.event.get()` \{\{nl\}\} Entnimmt der Warteschlange das n{\"a}chste Ereignis.} \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`pygame.event.clear()` \{\{nl\}\} Entfernt alle Ereignisse in der Warteschlange.} \tn % Row Count 9 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Alle Ereignisse befinden sicher immer in einer Warteschlange. Dabei ist auch die Reihenfolge dieser zu beachten.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Mit mehreren Ereignissen arbeiten}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{for event in pygame.event.get(): \newline if event.type == pygame.KEYDOWN: \newline print("Eine Taste wurde gedrückt") \newline if event.type == pygame.KEYUP: \newline print("Eine Taste wurde losgelassen!") \newline if event.type == pygame.K\_UP: \newline print("Die Pfeil-Nach-Oben Taste wurde gedrückt!") \newline if event.type == pygame.K\_DOWN: \newline print("Die Pfeil-Nach-Unten Taste wurde gedrückt!") \newline if event.type == pygame.K\_q: \newline print("Der Buchstabe Q wurde gedrückt") \newline if event.type == pygame.QUIT: \newline pygame.quit()} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Dieser Code kann beliebig ver{\"a}ndert werden, um auch mit anderen Event Arten / Ereignis Arten zu arbeiten.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.76 cm} x{4.24 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Beenden}} \tn % Row 0 \SetRowColor{LightBackground} `pygame.quit()` & Beendet das Spiel \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.44 cm} x{4.56 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Ausgew{\"a}hlte Event Arten}} \tn % Row 0 \SetRowColor{LightBackground} `pygame.KEYDOWN` & Eine Taste wird gedrückt \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `pygame.KEYUP` & Eine Taste wird losgelassen \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \seqsplit{`pygame.MOUSEMOTION`} & Maus Bewegung festgestellt \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} \seqsplit{`pygame.K\_BACKSPACE`} & Rücktaste \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} \seqsplit{`pygame.K\_RETURN`} & Enter \tn % Row Count 9 (+ 1) % Row 5 \SetRowColor{white} \seqsplit{`pygame.K\_ESCAPE`} & ESC - Taste \tn % Row Count 10 (+ 1) % Row 6 \SetRowColor{LightBackground} `pygame.K\_SPACE` & Leertaste \tn % Row Count 11 (+ 1) % Row 7 \SetRowColor{white} `pygame.K\_a` & a \tn % Row Count 12 (+ 1) % Row 8 \SetRowColor{LightBackground} `pygame.K\_b` & b \tn % Row Count 13 (+ 1) % Row 9 \SetRowColor{white} ... & ... \tn % Row Count 14 (+ 1) % Row 10 \SetRowColor{LightBackground} `pygame.K\_z` & z \tn % Row Count 15 (+ 1) % Row 11 \SetRowColor{white} `pygame.K\_KP0` & Numpad 0 \tn % Row Count 16 (+ 1) % Row 12 \SetRowColor{LightBackground} `pygame.K\_KP1` & Numpad 1 \tn % Row Count 17 (+ 1) % Row 13 \SetRowColor{white} ... & ... \tn % Row Count 18 (+ 1) % Row 14 \SetRowColor{LightBackground} `pygame.K\_KP9` & Numpad 9 \tn % Row Count 19 (+ 1) % Row 15 \SetRowColor{white} `pygame.K\_UP` & Pfeil Taste nach oben \tn % Row Count 20 (+ 1) % Row 16 \SetRowColor{LightBackground} `pygame.K\_DOWN` & Pfeil Taste nach unten \tn % Row Count 21 (+ 1) % Row 17 \SetRowColor{white} `pygame.K\_LEFT` & Pfeil Taste nach Links \tn % Row Count 22 (+ 1) % Row 18 \SetRowColor{LightBackground} `pygame.K\_RIGHT` & Pfeil Taste nach Rechts \tn % Row Count 24 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Rechtecke}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Ein rect Objekt}}\{\{nl\}\}Wir haben bereits ein Fensterobjekt. Wir k{\"o}nnen leicht auf das Rect Objekt zugreifen, welches wir dem Fensterobjekt zuordnen.} \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`screen\_rect = screen.get\_rect()`} \tn % Row Count 5 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Mittelpunkt des Fensters bestimmen}}\{\{nl\}\}Rect-Objekte haben ein Attribut, das den Mittelpunkt speichert.} \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`screen\_center = screen\_rect.center`} \tn % Row Count 9 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Nützliche rect Attribute}}\{\{nl\}\}Wenn Ihr ein rect Objekt haben, gibt es eine Reihe von nützlichen Attributen, die beim Positionieren von Objekten und dem Ermitteln relativer Positionen von Objekten hilfreich sind. (Weitere Attribute findet Ihr in der Pygame Dokumentation.)} \tn % Row Count 15 (+ 6) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`screen\_rect.left, screen\_rect.right\{\{nl\}\}screen\_rect.top, screen\_rect.bottom\{\{nl\}\}screen\_rect.centerx, screen\_rect.centery\{\{nl\}\}screen\_rect.width, screen\_rect.height \{\{nl\}\}\{\{nl\}\} screen\_rect.center\{\{nl\}\}screen\_rect.size`} \tn % Row Count 20 (+ 5) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Erstellen eines rect Objektes}}\{\{nl\}\}Ihr k{\"o}nnt ein Rechteck Objekt erstellen, welches eine Kugel in einem Spiel darstellen soll. Die Rect() Klasse nimmt die Koordinaten der oberen linken Ecke an. Die Werte für Breite und H{\"o}he des Rechtecks gebt ihr als Argumente mit. Die Funktion draw.rect () ben{\"o}tigt zum eines das Fenster Objekt, zum zweiten die Farbe und zu guter Letzt das Rechteck Objekt.} \tn % Row Count 28 (+ 8) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{`bullet\_rect = pygame.Rect(100, 100, 3, 15)\{\{nl\}\}color = (100, 100, 100)\{\{nl\}\}pygame.draw.rect(screen, color, bullet\_rect)`} \tn % Row Count 31 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Viele Objekte in einem Spiel k{\"o}nnen als einfache Rechtecke behandelt werden. Das vereinfacht den Code, ohne das Spiel merklich zu beeinflussen. Pygame hat eine „Rect"-Objekt, das das Arbeiten mit Spielobjekten erleichtert} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}