Giter Club home page Giter Club logo

stadt_land_fluss's Introduction

toboxOS

This is a simple operating system for learning purposes.

My goal is to learn more about the x86 architecture and operating system development. That means, I want to write a fully functional bootloader which loads the kernel into memory and give execution to that. The kernel than should setup an basic environment with interrupt handling. From there the kernel should be very modular for testing and learning different ways of operating system functionality.

The whole kernel should support a file system, protected memory, syscalls, multitasking and drivers, which not part of the kernel itself.

One special goal I have is to implement a interpreter into the kernel which then could run a very high level language like python. The interpreter environment should provide the ability to interact with the hardware so the rest of the kernel could be implemented with a much simpler language than c

Requirements

  • nasm
  • gcc
  • make

How to build

make boot

This command produces a file called boot. This file can be written to a usb or booted directly with bochs or qemu or any other emulator.

Contact

I´m always searching for new contacts and possibilities to learn something new. Feel free to contact me if you want to be part of this process or have some great hints for me to do things better.

stadt_land_fluss's People

Contributors

alaexle avatar duzilia avatar toboxos avatar

Watchers

 avatar

stadt_land_fluss's Issues

Eingetragene Antworten an Server senden

Die Clientlogik soll über eine Funktion alle eingeben Antworten über ein Packet an den Server senden. Es braucht keine ID mitgesendet werden. Der Spieler wird automatisch über sein Verbindung (ClientSocket) identifiziert

Spieler Verbindung entgegennehmen

Wenn der Server ein neues PlayerJoinPacket erhält, ein neues Spielerobjekt mit dem im Packet enthaltenen Namen erstellen.

Bitte Beachten!
ServerSocket sendet Signal mit PlayerJoinPacket und unsigned int als ID. ID kennzeichnt die Verbindung. Die ID muss abgespeichert werden um später Packete zu versenden. Am Besten einfach als ID des Spieler nehmen

Starten einer neuen Runden

Nach dem die Runde abgearbeitet ist, soll eine neue Runde gestartet werden indem ein neuer Buchstabe generiert und an alle Clients gesendet wurde

Eingegebene Antworten an Server senden

Alle eingetragenen Antworten aus dem Hauptspielfenster an der Server schicken. Packet ist SendAnswersPacket. Antworten müssen in der Reihenfolge sein, wie die Kategorien

Countdown starten wenn erster Spieler fertig ist

Wenn für die aktuelle Runde das erste SendAnwersPacket von einem Spieler empfangen wurde, sollen alle andere Spieler darüber benachrichtigt werden. Auf dem Server soll ein Countdown gestartet werden. Wenn der Countdown abgelaufen ist soll die Runde beendet werden.

Neuem Spieler bereits verbunden Spieler mitteilen

Wenn sich ein Spieler neu zum Server verbindet soll er eine Liste mit allen bereits verbundenen Spielername erhalten.

Hierfür kann ein PlayerListPacket gesendet werden. Aktuell ist das Packet noch nicht implementiert

Rundenstart an alle Clients senden

Der Server soll an alle Clients den Rundenstart senden. Hierfür wird es noch ein eigens Paket geben. Der Rundenstart muss auch den Buchstabe für die Runde enthalten

Verbindung mit Server herstellen und Anmelden

Über die Klasse ClientSocket soll ich mit dem Server verbunden werden. Danach soll ein PlayerJoinPacket an den Server gesendet werden. Das PlayerJoinPacket soll den eingeben Spielernamen enthalten

Paket Spielstart

Parameter: Kategorienliste
Sender: Server
Empfänger: Alle Clients

Countdown wenn erster Spieler fertig [Client]

Wenn der erste Spieler fertig ist, bekommt der Client ein PlayerFinishedPacke vom Server. Wenn dieses Packet erhalten wurde, soll ein Countdown gestartet werden. Wenn der Countdown abgelaufen ist, sollen alle Eingaben an den Server gesendet werden und die Eingaben im Fenster gesperrt werden

Timer-Management

Server startet timer für alle nicht fertigen Spieler, wenn er PlayerFinishedPacket erhält

Bewertung der Antworten

Die abgebenen Antworten sollen nach Rundenende bewertet werden und die Punkte sollen an den Spieler zurückgesendet werden

Akzeptanz der Antworten

Wenn das Paket für die Bewertung der Antworten (siehe #40) empfangen wurde, soll der Spieler in einem extra Fenster alle Antworten bewerten können. Antworten die nicht akzeptiert werden sollen mit einer Checkbox markiert werden. Wenn der Spieler fertig mit der Bewertung ist, soll das Packet zurück an der Server gesendet werden.

Anzeigen von Spielern bei neuem Spieler

Wenn sich der Client neu zum Server verbindet bekommt er eine PlayerListPacket mit den Namen aller bereits verbunden Spielern. Diese Spielerliste soll in die Spielerliste vom Client übernommen werden und in der Lobby angezeigt werden. Verbinden sich später neue Spieler bekommt der Client über ein PlayerJoinPacket bescheid. Siehe #21

PlayerListPacket nocht nicht implementiert

Eingabe Tabelle erstellen

Die Tablle für die Eingaben für die Kategorien soll angzeigt werden. Der Client bekommt über ein Packet die Spieleinstellungen mit den Kategorien

Runde starten

Wenn ein RoundStartPacket empfangen wurde soll eine neue Reihe in der Tabelle ersellt werden, in der der Spieler seine Antworten eintragen kann. Der Buchstabe für die aktuelle Runde ist im Paket enthalten

Andere Spieler über neuen Spieler informieren

Wenn sich ein neuer Spieler verbindet muss allen anderen Spielern, außer dem bereits verbundenen, ein PlayerJoinPacket mit dem Namen des neuen Spielers gesendet werden um diese zu benachrichtigen

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.