Blogseiten konsolidiert

Wegen des Umzuges des Blogs auf die Neue Plattform habe ich die Chance genutzt (ur-)alte Inhalte zu konsolidieren. Sollte jemand irgendetwas vermissen, dann gibt es hier aus den alten Rubriken und Texten eine kurze Zusammenfassung.

Spiele und Programme

Einige der Spiele sind jetzt als Quellcode auf meiner GitHub Seite zu finden. Die Android Games gibt es im Google Play Store oder bei Amazon.

Spiele

Programme und Tools

Web Design

Die ehemaligen von mir erstellten und betreuten Webseiten. Als Content Management System (CMS) nutzte ich überwiegend WordPress und Drupal. Eigenentwicklungen basierten auf ASP.NET MVC oder PHP Frameworks. Das Web Design erfolgt in enger Abstimmung mit dem Kunden.

Firabica

Firabica hatte das Ziel die Benutzer ein Leben lang mit sinnvollen und zielgerichteten Trainingsplänen und hilfreichen Informationen gesundheitlich zu unterstützen. Der Schwerpunkt liegt auf Trainingsplänen die auf bewährten Systeme basieren, dabei sollen fundierte wissenschaftliche Erkenntnisse über kurzfristigen Modeerscheinungen liegen. Die Angaben des Benutzers bilden hierbei die Basis um mittels komplexer Algorithmen das passende Trainingssystem (und Trainingsplan) zu erstellen.

Features

  • Erstellung des Trainingsplan mittels intelligenter Algorithmen

Technology

  • ASP.NET MVC
  • .NET Core 2.0
  • Entity Framework Core
  • Bootstrap
  • Azure gehostet

MeinSportplan

Verwaltung einfach wie nie

Sie wollen ihre Mitglieder einfach und schnell erreichen? Sie wünschen sich weniger Stress bei der Verwaltung von Sportstunden? Sie möchten mehr Zeit für Ihre Kunden gewinnen? Sie haben Interesse daran die Auslastung der Trainer zu optimieren?

Dann ist der Sportstundenplaner MeinSportplan genau richtig für Sie.

Mit dem MeinSportplan – Sportstundenplaner erhalten Sie eine professionelle Plattform für die Verwaltung ihrer Mitglieder und Sportstunden. Ihre wichtigsten Daten (Mitglieder, Sportstätten, Sportstunden) verwalten Sie mit dieser Plattform einfach und übersichtlich.

Durch die online Planung der Sportstunden können Sie jederzeit Ihren aktuellen Sportstundenplan allen Mitgliedern anzeigen. Zudem gewinnen Sie mehr Flexibilität, indem Sie Ihre Mitglieder von überall aus erreichen können, um rechtzeitig Ankündigen oder Ausfälle bekannt zu geben. Telefonieren Sie nicht länger einzelnen Mitgliedern hinterher, sondern erreichen Sie mit einer Nachricht Ihre Kunden.

Mit dem Sportstundenplaner können Sie Events wie Vereinsfeiern, Turniere, u.ä. einfach erstellen und planen. Zugleich können Sie ohne großen Aufwand alle Vereinsmitglieder über die geplanten Veranstaltungen in Kenntnis setzen. Gewinnen Sie unkompliziert neue Mitglieder indem Sie ihren Verein vielen interessierten Menschen online präsentieren können.

Der Sportstundenplaner wurde durch den direkten Kontakt zu Vereinen und Personal Trainern auf die (aus der Praxis stammenden) Bedürfnisse angepasst und bietet Ihnen umfangreiche Funktionen, die Sie allesamt kostenlos nutzen können.

Das ist MeinSportplan!

Sie können alle ihre Mitglieder einfach und schnell erreichen.

Sie können Events wie Vereinsfeiern, Turniere, u.ä. einfach erstellen und planen.

Sie können Ihren aktuellen Sportplan allen Mitgliedern anzeigen.

Sie können unkompliziert neue Mitglieder gewinnen indem Sie ihren Verein vielen interessierten Menschen präsentieren können.

Sie können die Auslastung der Trainer optimieren.

Sie können umfangreiche Funktionen nutzen die durch den direkten Kontakt zu Trainern auf die Bedürfnisse aus der Praxis angepasst wurden.

und das alles kostenlos!

Features

  • Mandantenfähigkeit
  • Benutzerverwaltung
  • Kostenverwaltung
  • Personalisierte Portalseiten
  • An und Abmeldung durch Kunden
  • Bestandsverwaltung

Technology

  • ASP.NET MVC
  • Entity Framework 6

Wann-Reite-Ich

Wann-Reite-Ich war von 2013 bis 2016 eine professionelle Plattform für die Verwaltung der Mitglieder und Reitstunden. Der Benutzer hat weniger Stress bei der Verwaltung von Reitstunden, Anmeldungen und Abmeldungen.

Verwaltung einfach wie nie

Sie wollen ihre Mitglieder einfach und schnell erreichen? Sie wünschen sich weniger Stress bei der Verwaltung von Reitstunden? Sie möchten mehr Zeit für die Pferde und Reitstunden gewinnen? Sie haben Interesse daran die Auslastung der Reitlehrer und Pferde zu optimieren?

Dann ist der Reitstundenplaner Wann-Reite Ich genau richtig für Sie.

Mit dem Wann-Reite-Ich – Reitstundenplaner erhalten Sie eine professionelle Plattform für die Verwaltung ihrer Mitglieder und Reitstunden. Ihre wichtigsten Daten (Mitglieder, Reitlehrer, Reitstunden, Ställe, Hallenbelegung) verwalten Sie mit dieser Plattform einfach und übersichtlich. Legen Sie mit dem Reitstundenplaner für Ihre Pferde und Trainer deren maximale Belastung fest (Anzahl an Reitstunden pro Pferd/Tag), um die Auslastung der Reitlehrer und Pferde zu optimieren.

Durch die online Planung der Reitstunden können Sie jederzeit Ihren aktuellen Reitstundenplan allen Mitgliedern anzeigen. Zudem gewinnen Sie mehr Flexibilität, indem Sie Ihre Mitglieder von überall aus erreichen können, um rechtzeitig Ankündigen oder Ausfälle bekannt zu geben. Telefonieren Sie nicht länger einzelnen Mitgliedern hinterher, sondern erreichen Sie mit einer Nachricht Ihre Reitschüler.

Mit dem Reitstundenplaner können Sie Events wie Vereinsfeiern, Turniere, u.ä. einfach erstellen und planen. Zugleich können Sie ohne großen Aufwand alle Vereinsmitglieder über die geplanten Veranstaltungen in Kenntnis setzen. Gewinnen Sie unkompliziert neue Mitglieder indem Sie ihren Verein vielen interessierten Menschen online präsentieren können.

Der Reitstundenplaner wurde durch den direkten Kontakt zu Vereinen und Turnieren auf die (aus der Praxis stammenden) Bedürfnisse angepasst und bietet Ihnen umfangreiche Funktionen, die Sie allesamt kostenlos nutzen können.

Features

  • Mandantenfähigkeit
  • Benutzerverwaltung
  • Kostenverwaltung
  • Personalisierte Portalseiten
  • An und Abmeldung durch Kunden
  • Bestandsverwaltung
Technology
  • ASP.NET MVC
  • Entity Framework 6

PlanetPferd

Von 2012 bis 2016 war PlanetPferd.de ein Webportal für Pferdefreunde und Reisportbegeisterte. Das Projekte wurde vollständig von der Konzeption bis zur Markteinführung begleitet und umgesetzt.

Features

  • Vollständige Datenerfassung und Darstellung mit Drupal Kernfunktionen.

Technology

  • Drupal 7

Jobz320

320 Zeichen für einen neuen Job anstatt fünfseitigen Standardtexten. Das sind die neuen Jobz320 Jobportale.

Im Gegensatz zu den klassischen Jobportalen, die es wie Sand am Meer gibt, bietet Jobz320 einen völlig neuen Ansatz. Sowohl Stellenangebote wie auch Stellengesuche dürfen maximal 320 Zeichen umfassen. Recruiter und Bewerber müssen daher ihre Angaben auf das Wesentliche konzentrieren. Keine ausufernden Standardtexte die in jeder Bewerbung identisch sind. Natürlich ist jeder teamfähig, erwartet ein adäquates Gehalt und ist völlig flexibel im Alltag. Bei Jobz320 geht es um die wichtigen Teile eines Jobs!

Features

  • Single Page App

Technology

  • ASP.NET MVC 4.5
  • Entity Framwork 6
  • Bootstrap

KC-GT

Die Webseite des Kampfsportcenter Gütersloh wurde vollständig durch mich entwickelt und betreut. Das Design wurde auf Basis von Vorlagen des Kunden umgesetzt.

Features

  • Videointegration
  • Slider basierende Seiten
  • Optimierte Slider für Smartphones

Technology

  • PHP
  • Bootstrap

BürostuhlSportler

Die Webseite BürostuhlSportler umfasst die vollständige Realisierung der Weblösung inklusive Design und Entwicklung.

Technology

  • Drupal 7

Bärenbande

Für die Bärenbande Webseite ist der Händlerbereich erstellt worden. Dort können B2B Kunden ihre Einkäufe tätigen und zusätzliche Informationen und Angebote erhalten.

Technology

  • Drupal 6 und 7

Sonstiges

Beta4all

Beta4all.de war von 2002 bis 2006 ein erfolgreiches Portal für Spieletests und Betaversionen von Spielen. Die verschiedenen Versionen wurden alle vollständig in Eigenentwicklung erstellt, designt und mit einem kleinen Autorenteam betrieben.

Blizzard arbeitet zusammen mit der Firma DeepMind zusammen mit dem Ziel Starcraft 2 eine API zur Verfügung zu stellen, mit dessen Hilfe sich Künstliche Intelligent entwickeln lässt. Die Google-Tochter DeepMind hat in der Vergangenheit bereits Schlagzeilen gemacht als sie mit ihrem AlphaGo System das Go Spiel ernsthaft bespielte.

API Erweiterungen für KI Entwicklung

Anhand eines kurzen Videos lassen sich Erweiterungen für Heatmaps erkennen. Diese scheinen Bedrohungsräume und Einflussgebiete zu definieren. Außerdem können die Verläufe von vergangenen Spielen analysiert werden. Bei der API bleibt zu hoffen, dass diese auch für andere interessierte zur Verfügung gestellt werden. Somit wäre ein schönes Betätigungsfeld für ambitionierte Entwickler geschaffen. Laut Deep Mind ist Starcraft 2 aufgrund seiner unvollständigen Informationen (Fog of war), Ressourcenmanagement, unterschiedlichen Rassen und Langzeitstrategien besonders komplex und daher gut geeignet als nächstes Betätigungsfeld.

Quelle: Starcraft 2: Schnittstelle für Deep-Learning-Intelligenz ab Sommer 2017 | heise online

Sonnet

Nach einer kurzen Suche auf der DeepMind Webseite gibt es einen Hinweis auf das Forschungsgebiet. Die Bibliothek Sonnet steht auf der Webseite bzw. auf GitHub als open source Version zur Verfügung. Basierend aus der Entwicklung von TensorFlow können mit Sonnet neuronale Netze erstellt werden.

PowerShell Game 04

Nachdem die Spielwelt für das PowerShell Game existiert, wäre es doch schön wenn sich etwas darin bewegen könnte. Üblicherweise ist das die Spielfigur. In diesem Fall ein freundlicher Smiley.

Variablen

Alle Informationen die eine Spielfigur benötigt bekommt diese nun als Attribute.

$player = New-Object PSObject
Add-Member -InputObject $player -MemberType NoteProperty -Name x -Value 1
Add-Member -InputObject $player -MemberType NoteProperty -Name y -Value 0
Add-Member -InputObject $player -MemberType NoteProperty -Name symbol -Value '☺'

Bewegung

Im GameLoop sollen die Tasten n/e/s/w (North/East/South/West) eine Bewegung der Spielfigur ermöglichen.

switch($action)
{
    'q' { $runGame = $false; }
    'e' { $player.x++ }
    'w' { $player.x-- }
    'n' { $player.y-- }
    's' { $player.y++ }
}

Neben der Bewegung ist es außerdem hilfreich wenn der Spieler das Spielfeld nicht verlassen kann.

if($player.x -lt 0) { $player.x = 0 }
if($player.x -ge $global:mapWidth ) { $player.x = $global:mapWidth -1 }
if($player.y -lt 0) { $player.y = 0 }
if($player.y -ge $global:mapHeight ) { $player.y = $global:mapHeight -1 }

Spielfeld

Beim Spielfeld wird nun vor der Ausgabe eines Feldes ermittelt ob der Spieler auf diesem Feld steht. Falls dies der Fall ist, ist das angezeigte Symbol der Smiley in der Farbe des Spielers. Der Hintergrund erhält die Farbe des ursprünglichen Feldes.

function DrawMap()
[...]
# Farbe ermitteln
    $char = $global:map[$x + $y * $global:mapWidth]
        $foregroundColor = "Black"
        $backgroundColor = "White"

# Feldspezifische Farbe und Symbol ermitteln		
    switch($char)
    {
        'E' { $foregroundColor = "Black"; $backgroundColor = "DarkRed"; $char = '^' }
        '#' { $foregroundColor = "Gray"; $backgroundColor = "DarkGray"; $char = '#' }
        'L' { $foregroundColor = "DarkGreen"; $backgroundColor = "DarkGreen"; $char = ' ' }
        'S' { $foregroundColor = "Yellow"; $backgroundColor = "Yellow"; $char = ' ' }
        'B' { $foregroundColor = "White"; $backgroundColor = "White"; $char = ' ' }
        'D' { $foregroundColor = "Black"; $backgroundColor = "Black"; $char = ' ' }
        'G' { $foregroundColor = "DarkGreen"; $backgroundColor = "Green"; $char = '*' }
        'J' { $foregroundColor = "DarkGray"; $backgroundColor = "Gray"; $char = '''' }
        'W' { $foregroundColor = "DarkBlue"; $backgroundColor = "Blue"; $char = '~' }
    }
    
# Wenn der Spieler auf dem Feld ist - Symbold und Vordergrundfarbe ersetzen		
    if($x -eq $player.x -and $y -eq $player.y)
    {
        $foregroundColor = "Blue"
        $char = $player.symbol
    }
    
# Aktuelle Symbol-/Farbkombination ausgeben
    Write-Host -NoNewline -ForegroundColor $foregroundColor -BackgroundColor $backgroundColor $char
[...]
PowerShell Game 03

Unser PowerShell Game ist langweilig ohne eine Welt in der die Handlung stattfinden kann. Dieser Artikel umfasst die Definition und Darstellung einer kleinen Welt.

Map

Ein einfaches Textformat soll die Karte darstellen. Die Zeilen mit einem Fragezeichen kennzeichnen eine Konfiguration der Rest ist die Beschreibung der Welt. E steht für Erde, # für Wände, W für Wasser usw. Die tatsächliche Formatierung und Einfärbung übernimmt das Skript.

    ?SIZE 20 18
    EEE#EEEEE#GG#EEEEE#E
    ##########GG########
    #LSSSSSSSSSSSSSSSSL#
    #LSSBBBBSSSSBBBBSSL#
    #LSSBBBBSSSSBBBBSSL#
    #LSSBDBBSSSSBDBBSSL#
    #LSSSSSSSSSSSSSSSSL#
    #LSSSSSSSSSSSSSSSSL#
    #LSSSSSSSSBBBBBBSSL#
    #LSSJJJJSSBBBBBBSSL#
    #LSSLLLLSSBBBBBBSSL#
    #LSSLLLLSSBBDDBBSSL#
    #LSSSSSSSSSSSSSSSSL#
    #LSSSSSSSSJJJJJJSSL#
    #LLLWWWWSSLLLLLLSSL#
    #LLLWWWWSSLLLLLLSSL#
    #LLLWWWWSSSSSSSSSSL#
    ##LLWWWW############

Welt einlesen

Die Welt besteht aus den einzelnen Zeichen. Jedes Zeichen umfasst dabei ein Spielfeld. Für die Verwaltung werden noch weitere Variablen benötigt.

$mapRaw = "" # Kompletter Dateiinhalt
$map = "" # Spielfelder
$mapWidth = 0 # Breite
$mapHeight = 0 # Höhe

function ReadMap($mapName)
{
    # Datei lesen
    $global:mapRaw = Get-Content "maps/$mapName"
    $global:map = ""

    # Zeilenweise durch die Daten bewegen
    foreach ($line in $global:mapRaw)
    {
        # Fängt die Zeile mit einem ? an, handelt es sich um eine Konfigurationsanagbe
        if($line[0] -eq "?")
        {
            $param = $line.Substring(1)
            Write-Host "Found parameter: $param"
            $paramParts = $param.Split(" ")
            
            # Der SIZE Parameter gibt die Breite und Höhe der Karte an
            if($paramParts[0] -eq "SIZE")
            {
                $global:mapWidth = $paramParts[1]
                $global:mapHeight = $paramParts[2]
            }
        } else {
            # Alle Daten ohne Fragezeichen sind Spielfelder
            $global:map += $line
        }
    }
}

Welt zeichnen

Die Welt wird Zeichenweise ausgegeben. Jedes Zeichen der Datei kann als farbiges Feld und Zeichen ausgegeben werden.

function DrawMap()
{
    # Write-Host $global:map
    for($y = 0; $y -lt $global:mapHeight; $y++)
    {
        for($x = 0; $x -lt $global:mapWidth; $x++)
        {
            $char = $global:map[$x + $y * $global:mapWidth]
            switch($char)
            {
                'E' { Write-Host -NoNewline -ForegroundColor Black -BackgroundColor DarkRed '^' }
                '#' { Write-Host -NoNewline -ForegroundColor Gray -BackgroundColor DarkGray '#' }
                'L' { Write-Host -NoNewline -ForegroundColor DarkGreen -BackgroundColor DarkGreen ' ' }
                'S' { Write-Host -NoNewline -ForegroundColor Yellow -BackgroundColor Yellow ' ' }
                'B' { Write-Host -NoNewline -ForegroundColor White -BackgroundColor White ' ' }
                'D' { Write-Host -NoNewline -ForegroundColor Black -BackgroundColor Black ' ' }
                'G' { Write-Host -NoNewline -ForegroundColor DarkGreen -BackgroundColor Green '*' }
                'J' { Write-Host -NoNewline -ForegroundColor DarkGray -BackgroundColor Gray '''' }
                'W' { Write-Host -NoNewline -ForegroundColor DarkBlue -BackgroundColor Blue '~' }
                default { Write-Host -NoNewline -ForegroundColor Black -BackgroundColor White '$char' }
            }
        }
        Write-Host
    }
}

Game-Loop

Der Hauptteil ist um die Ausgabe der Welt zu ergänzen.

    while($runGame)
    {
        Clear-Host
    
        DrawMap
    
        [...]
    }
PowerShell Game 02

Spiele haben oft einige statische „Seiten“, Videos oder Bildschirmanzeigen. Auf diesen wird das Intro des PowerShell Game angezeigt, die Mitarbeiter, Danksagungen oder eine Abschiedsnachricht. Zur Darstellung von einfachen Texten können solche Inhalte in Textdateien abgelegt werden. PowerShell ermöglicht dann die Ausgabe mit einer Zeile Code.

Mit Hilfe eines ASCII Text Generators (Beispiel) habe ich eine Datei „start.txt“ und eine „quit.txt“ in einen Unterordner „screens“ abgelegt. Damit PowerShell die Dateien später in dem Unterordner findet, ist das Verzeichnis auf den Skriptordner zu setzen. Ein Leeren der Konsolenausgabe für einen frischen Start empfiehlt sich ebenso für das PowerShell Game.

# Verzeichnis in den Skriptordner wechseln
Set-Location $PSScriptRoot
# Ausgabe löschen
Clear-Host

Vor der Information, das Spiel mit q zu beenden, kommt der Start Bildschirm.

# Zeige Startbildschirm
Get-Content "screens/start.txt"

Nach dem Game-Loop wird die Verabschiedung angezeigt.

# Zeige Verabschiedung 
Get-Content "screens/quit.txt"

Beispiel – Startbildschirm

    +------------------------------------------------------------------------------+
    |   ____    ____      ____           _                                         |
    |  |  _ \  / ___|    |  _ \    ___  | |_   ___                                 |
    |  | |_) | \___ \    | |_) |  / _ \ | __| / __|                                |
    |  |  __/   ___) |   |  __/  |  __/ | |_  \__ \                                |
    |  |_|     |____/    |_|      \___|  \__| |___/                                |
    |                        /\                                                    |
    |                       /  \                                                   |
    |              /\      /    \                                                  |
    |             /  \    /      \        /\                                       |
    |            /    \  /        \      /  \                                      |
    |           /      \/          \    /    \                                     |
    |          /                    \  /      \        /\                          |
    |         /                      \/        \      /  \                         |
    |        /                _-_               \    /    \                        /
    |       /              /~~   ~~\             \  /      \                      /|
    |      /            /~~         ~~\           \/        \                    / |
    |     /            {               }                     \        /\        /  |
    |    /              \  _-     -_  /                /\     \      /  \      /   |
    |   /                 ~  \\ //  ~           /\    /  \     \    /    \    /    |
    |  /               _- -   | | _- _         /  \  /    \     \  /      \  /     |
    | /                  _ -  | |   -_        /    \/      \     \/        \/      |
    |/www.spech.de           // \\           /              \   (c) Sebastian Pech |
    /-----------------------//---\\---------/----------------\---------------------+