Giter Site home page Giter Site logo

pitendo's Introduction

pitendo

Gaming on Raspberry Pi in C++.

To Do:

  1. Bereitstellung der Controller inkl. der Ansteuerung. --> CHECK
  2. Menü. --> CHECK
  3. Zeichen-Funktionen. --> CHECK
  4. Beispiel-Spiel. --> CHECK
  5. Joystick-Kalibrierung. --> CHECK
  6. Musik für Startbildschirm und Menüs. --> OFFEN.

Installations-Anweisung.

  1. Empfohlene Ordnerstruktur: Erstelle im Ordner "Documents" den Ordner "repos" und wechsele in diesen.
cd Documents
mkdir repos
cd repos
  1. Downloade das Git-Repository und wechsele in den gedownloadeten Ordner.
git clone https://github.com/startbit96/pitendo.git
cd pitendo
  1. Installiere den Terminal-Emulator "xterm":
sudo apt-get install xterm
  1. Aktiviere die quadratische Schriftart "square". Hierzu musst du dich in dem Ordner pitendo befinden:
mkdir ~/.fonts
cp res/square.ttf ~/.fonts/
fc-cache
  1. Das Projekt wird mittels cmake gelinkt und kompiliert. Gegebenfalls muss cmake heruntergeladen werden und die IDE angepasst werden.

  2. Aktivieren von SPI auf dem Raspberry Pi (unter Interface).

sudo raspi-config

Übersicht der Dateien.

  1. framework: display.h und display.cpp

Diese Dateien stellen grundlegende Zeichenfunktionen sowie eine Klasse für das Erstellen von Menüs analog Haupt- und Pausenmenü zur Verfügung.

  1. framework: controller.h und controller.cpp

Diese Dateien binden die Controller ein. Es werden Funktionen zur Taster-Drücker-Erkennung sowie zur Positionsauslesung des Joysticks gestellt.

  1. framework: pitendo_game_engine.h und pitendo_game_engine.cpp

Diese Dateien beinhalten die Game-Engine, welche den zeitlichen Ablauf im Programm steuert (FPS-Einstellung, ...). Außerdem werden hier das Hauptmenü und das Optionsmenü (Pausenmenü) gemanaged.

  1. Hauptdatei: pitendo.cpp

Diese Datei ist die grundlegende Pitendo-Datei, welche den Pitendo-Start, die Pitendo-Dauerschleife und das Pitendo-Herunterfahren beinhaltet. Außerdem werden an dieser Stelle die Spiele eingebunden.

  1. Vorlage-Spiel: template.h und template.cpp

Diese beiden Dateien zeigen beispielhaft die Implementierung eines Spiels in Pitendo auf. Es werden die Grundfunktionen definiert, welche jedes Spiel zu stellen hat. Es kann als Vorlage fuer die Entwicklung eines eigenen Spiels genutzt werden. (Bitte hierfür kopieren und umbenennen. Nicht in der ursprünglichen Datei arbeiten.)

Positionen, welche anzupassen sind, sind mit "##### MUSS ANGEPASST WERDEN #####" gekennzeichnet.

Grundlegende Funktionen (Details siehe Header-Files).

  1. Ermittlung der Terminalgröße als Spielfeldbegrenzer.
pitendeGE->screenWidth
pitendoGE->screenHeight
  1. Nutzung der Buttons eines Controllers. Möglichkeit 1: Hinterlegen der Funktionen, welche bei Buttondrücken aufgerufen werden sollen. Memberfunktion der Objekte controllerP1, controllerP2:
void setButtonFunctions(    void (*buttonFunktionGruen)(void),
                            void (*buttonFunktionRot)(void),
                            void (*buttonFunktionGelb)(void),
                            void (*buttonFunktionBlau)(void),
                            void (*buttonFunktionStart)(void),
                            void (*buttonFunktionJoystick)(void));

Ausführen, sofern gedrückt:

void execute();

Möglichkeit 2: Manuelle Abfrage der Button-Zustände. Zugriff über Memberfunktion jedes Buttons. z.B.

controllerP1->buttonGruen->wasPressed()

Vorteil Möglichkeit 1:

  • Nutzung der Implementierung

Nachteil Möglichkeit 1:

  • Es können keine Memberfunktionen von Objekten verknüpft werden.
  • Es müssen Funktionen ohne Rückgabe- und Übergabewert sein (void ()()).

Einsatzmöglichkeit:

  • Im Spiel.

Vorteil Möglichkeit 2:

  • Individuelle Nutzung.

Nachteil Möglichkeit 2:

  • Vermutlich ein wenig mehr Code-Aufwand, da bereits bestehende Implementierung nicht genutzt wird.

Einsatzmöglichkeit:

  • In Menüs.
  1. Nutzung des Joysticks. Zugriff auf Joystick:
controllerP1->joystick
controllerP2->joystick

Digitale Nutzung über Memberfunktion (wurde Ausschlag über Schwellwert festgestellt?):

void getMovement(bool &up, bool &down, bool &left, bool &right);

Analoge Nutzung über Memberfunktion:

void getPosition(float &x, float &y);

pitendo's People

Contributors

startbit96 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.