Code Monkey home page Code Monkey logo

brainysnake's People

Contributors

alexanderbrockmann avatar dariobraun avatar florianluediger avatar floriantim avatar frederikschlemmer avatar rudikl avatar silasmahler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

brainysnake's Issues

RoundEvents werden vor dem PlayerStatus Update gelöscht

Löschung der RoundEvents in der Methode endRoundForPlayer(PlayerHandler playerHandler) in der Klasse GameMaster.
Der Aufruf playerHandler.endround() sorgt für die Leerung. Der nachfolgende Aufruf this.playerController.updatePlayerState() arbeitet entsprechend mit einer leeren RoundEvents Liste.

Beispiel-Agenten ergänzen

Es soll ein Beispiel-Agent ergänzt werden, welcher als Vorlage für weitere Agenten dienen soll.

TODOS:

  • Vorhandene Agenten löschen und durch diesen neuen Agenten ersetzen
  • Beispiel-Code dokumentieren
  • Logik möglichst simpel halten

Multiplayermode

A gamemode where you can play with someone else on your keyboard.

Add Point-Labyrinths

This is a new feature to diversify the strategies for the agents. The point-labyrinths are special hotspots in level, where the agents can loot many points in match. The challenge to get this points is to find a way threw the labyrinth and get the snake to the exit.

Here ist an example how this labyrinths should look like:

brainysnakelabyrinth

acceptance criteria

  • Count of total labyrinths per level is adjustable in config
  • Entrance and Exit should not be blocked by other levelelements
  • Positioning and orientation of this asset should be random in level

Add CI Prozess for Github-Pull-Requests

acceptance criteria

  • After each commit to a pull request, the project is built by a CI process(with test-run) (Circle-CI for example)
  • There is a style guide for the desired clean code style
  • The CI process includes a linter to check the desired code style (sonarcloud for example)

Match Screen

requires #29
This screen appears after "Start Game" in the main menu was choosen

  • List all players (names) in the game and thair colors
  • number of rounds to play (time)
  • button: back to main menu
  • button: Start Game

brainysnakescreenmockup

Separate Playerlogic from Server

It is not necessary to compile the whole project for just adding a new agent oder playing around with agent logic. The Project should be devided in two parts. One for the Game-Graphic and Server-Logic which can be deployed for the second part, the player/agent Logic part.

Therefore the Server-Logic should be outsourced to an external project and delivered as own jar-File. TODO add further informations here

Game-Screen

The meta-information of a match a currently drawn within the level of a match. Therefore the layout of the gamescreen should be edited like this:

brainysnakegamescreenlayout

acceptance criteria

  • there is a special place in layout to draw meta-information
  • meta-information are outside the level
  • header added for meta-information

Winner Screen

Appears if the game ends

  • List all player
  • points
  • position
  • hightlight the winner

brainysnakescreenmockup

Positioning of Barriers should be random

Actually the initial positions of the barriers in level always the same.

acceptance criteria

  • Initial position is random in level
  • Barries should not be form a dead end (a way, which an agent can't pass)

Game lags when player takes too long to respond

"Slowest" player determines game update. E.g. when a player takes >500ms to respond, the whole game will have a significant delay.
Possible solution: Limit players to a response time of 100ms by configuring MAX_AGENT_PROCESSING_TIME_MS in config.
Drawbacks: Complex algorithms might not be viable.

Positioning of Player should be random

Actually the initial positions of the agents in match are fixed (also the orientations).

acceptance criteria

  • Initial position is random in level
  • Initial orientation ist random
  • Agent should not be blocked by level or barriers (no blocking elements in playerview)

Snake head reaches into FOV due to "lag"

The Snake's head is (or at least looks to be) part of the FOV instead of being outside the FOV, as intended. Not sure if this has any real drawbacks or is just being displayed delayed/wrong.

unbenannt

Settings Screen

requires #29
appeares if "Settings" was choosen

  • dropdown: size of the level in fields (like 50x50, 75x75, 100x100)

  • numeric: number of apples (red dots)

  • numeric: FPS

  • numeric: Number of rounds

  • numeric: initial length of the snake

  • number of barriers

  • try to add some basic validation

Player API Dokumentation aktualisieren

Die aktuell bestehende Player API Dokumentation beschreibt einen veralteten Stand der Software. Die Funktionsweise und Variablen wurden aktualisiert in der Software.

Pause Screen

Pause-Screen appears as overlay of the Game-Screen (there should be a hint anywhere, that the game is paused) if the player hits "Esc".

  • button: resume
  • button: exit

brainysnakescreenmockup

Add Game-Icon

  • Add icon for Game-Window and Taskbar

Here is an example:
brainysnakeicon

Feel free to make an own one (a better one ;))

Add Backgroundmusic for menu and match

Our game is way to silent

acceptance criteria

  • Backgroundmusic for the menu (looped)
  • Backgroundmusic for the match (looped)

The music should be free licensed and suitable the minimalistic pixelart style.

New Start not possible

After you've played a game you can't start another one because you simply end up in the Winning Screen of the game before.

Translate Readme to english

According to our Contribution-Guide we agreed to us english as our main project language. Therefore our readme should be translated, or provided in german and english.

Exception when restarting the game

java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at de.adesso.brainysnake.Gamelogic.Player.PlayerController.getPlayerStatus(PlayerController.java:111)
at de.adesso.brainysnake.Gamelogic.GameMaster.gameLoop(GameMaster.java:104)
at de.adesso.brainysnake.Gamelogic.GameMaster.update(GameMaster.java:87)
at de.adesso.brainysnake.Gamelogic.Game.update(Game.java:31)
at de.adesso.brainysnake.BrainySnake.render(BrainySnake.java:149)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Caused by: java.lang.NullPointerException
at de.adesso.brainysnake.sampleplayer.SamplePlayer.tellPlayerUpdate(SamplePlayer.java:31)
at de.adesso.brainysnake.Gamelogic.Player.PlayerHandler.requestPlayerUpdate(PlayerHandler.java:135)
at de.adesso.brainysnake.Gamelogic.Player.PlayerController$PlayerUpdateRequestCallable.call(PlayerController.java:180)
at de.adesso.brainysnake.Gamelogic.Player.PlayerController$PlayerUpdateRequestCallable.call(PlayerController.java:170)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at de.adesso.brainysnake.Gamelogic.Player.PlayerController.getPlayerStatus(PlayerController.java:111)
at de.adesso.brainysnake.Gamelogic.GameMaster.gameLoop(GameMaster.java:104)
at de.adesso.brainysnake.Gamelogic.GameMaster.update(GameMaster.java:87)
at de.adesso.brainysnake.Gamelogic.Game.update(Game.java:31)
at de.adesso.brainysnake.BrainySnake.render(BrainySnake.java:149)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Caused by: java.lang.NullPointerException
at de.adesso.brainysnake.sampleplayer.SamplePlayer.tellPlayerUpdate(SamplePlayer.java:31)
at de.adesso.brainysnake.Gamelogic.Player.PlayerHandler.requestPlayerUpdate(PlayerHandler.java:135)
at de.adesso.brainysnake.Gamelogic.Player.PlayerController$PlayerUpdateRequestCallable.call(PlayerController.java:180)
at de.adesso.brainysnake.Gamelogic.Player.PlayerController$PlayerUpdateRequestCallable.call(PlayerController.java:170)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)

Winner Screen

Appears if the game ends

  • List all players
  • points
  • ranking
  • highlight the winner

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.