• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Programmierwettbewerb 2: Aaah a snake!

Larius

OutOfOrder

Registriert
12 Juli 2013
Beiträge
5.792
Was lange währt undso... (Jaja DrFuture..)

Auf gehts in die 2te Runde! Und wer jetzt BadgerBadgerBadger als Ohrwurm hat sollte auc

Aufgabe:
Entwickle einen Snake-Clone
Die Aufgabe wird in mehrere Schwierigkeits-Grade geteilt, wie weit jeder Programmieren möchte ist jedem selber überlassen.
Der Ausprogrammierte Grad ist bei der Abgabe anzugeben.

Schwierigkeits-Level / Aufgabendetails:

*) Ein Spielfeld fester Größe auf dem sich ein Punkt / Quadrat bewegt sich per Tastatur steuern lässt.
*) Eine Schlange von Punkten / Quadraten die sich wie das Original Snake um Ecken bewegt
*) An zufälligen punkten erscheinen rote Zielpunkte, bei "fressen" eines Punktes wächst die Schlange um ein Element an.
*) Insofern die Schlange den Rand oder sich selber frisst ist das Spiel zu Ende
*) Jeder gefressene rote Zielpunkt gibt 10 Punkte > Punkteskala, optional Statistiken über gespielte Zeit usw.
*) alle x roten Punkte wird die Schlange schneller
*) Auf dem Spielfeld erscheinen zufällig Bonus-Gegenstände die höhere Punkte geben
*) zusätzliche Level > nach Zeit x ist Level 1 zu Ende, Level 2 mit einem Hinternis
*) Spielfeld ist in seiner Größe im Spielbetrieb frei skalierbar
*) Animierte Schlange aus Grafiken


Randbedingungen:
*) Programmiersprache kann frei gewählt werden.
*) Ausarbeitung kann Graphisch oder mit Ascii auf der Console erfolgen
*) Insofern Graphisch dann maximal 2D ohne Verwendung von DirectX, OpenGL oder ext. Spiele-Bibliotheken
*) Eingereicht wird der Quellcode in das NGB GitLab Repository https://gitlab.com/ngb (Zugangsdaten bei drfuture)
*) Code ist gut (in Deutsch) zu kommentieren.
*) Zusätzlich wird eine Compilierte .exe zum Download angeboten, bei Implementierung in Javascript, PHP etc. ein aufrufbarer Weblink, bei Java die .jar und evtl. eine .bat / sh dazu.
*) Die Anwendung muss nicht zwingend Multiplattform-Fähig sein.

Bewertung:

Eine "Einfache" und "Simple" Bewertung ist aufgrund der Bandbreite der möglichen Implementierungen nicht möglich. Daher konzentrieren wir uns auf "weichere" Kriterien.

*) Welche Umsetzung überzeugt einfach nach "Bauchgefühl" und warum / Was gefällt euch besonders gut? Besonders Kreativ?, Besonders klein (64kb ;D) ...
*) Bei der Bewertung darf der Schwierigkeits-Grad keinen Einfluss nehmen.
*) Gefundene Programmier-Fehler (Logik-Fehler usw..) geben Punkte Abzug und sollten aufgezeigt werden.
*) Probleme und Fragen bei der Umsetzung sind jedoch nicht negativ zu bewerten.


Allgemein geht es natürlich darum, etwas zu lernen. Das heißt es wäre schön wenn Zwischenstände im Thread gepostet werden und durch Mitspieler schon einmal kommentiert werden.

Gerne sollten die Bug / Wiki usw. Funktionen eines jeden Projektes in GitLab zur Kommunikation mit dem Entwickler genutzt werden - eine Zusammenfassung kann dann eine Bewertung hier im Forum erleichtern.

Bei Problemen und Fragen - das Problem nach Möglichkeit zum eigenen Quellcode zusätzlich verallgemeinert beschreiben um Antworten auch von Sprachen-Fremden Entwicklern zu erhalten.

Ende des zweiten Wettbewerbs:
Sonntag der 08. November 2015


Zum Anschauen der Projekte bitte hier entlang:
https://gitlab.com/ngb
 
Zuletzt bearbeitet:

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.573
Ja wie geil. Man sollte es in Python umsetzen, das wäre doch mal so eine richtige Snake. *scnr*

Wäre interessiert mitzumachen und erfrage hiermit die Zugangsdaten für das Gitlab, ein paar Informationen zum Ablauf und wie Projekte dort gemanaged werden wäre aber noch interessant um überhaupt einen Einstieg zu bekommen. Auch, muss ich meine Email Angeben bzw. ist diese sichtbar für andere oder nicht?

Eine andere Sache auch, die mir gerade im Kopf schwirrt.
Keine externen Bibliotheken - PyGame oder SDL wären doch erlaubt? Irgendwie ist der Punkt etwas schwammig für mich.
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.748
Ort
in der Zukunft
Die Daten schicke ich dir @theSplit per PN.
Wir nutzen alle EINEN NGB-Account - um genau das zu vermeiden das man seine e-mail angeben muss, sich reggen muss oder sonst irgendwas. Ich denke mal jeder ist so brav und macht mit dem Account keinen Unfug - und wenn, dann können wir da halt keine Contests mehr machen ;)

Gemanaged kann entweder per git-client oder einfach die Files per Hand auf der Webseite ins Repository laden.
Ein Beispiel-Projekt lade ich (hoffentlich heute Abend) Hoch damit jeder sieht wie es aussehen könnte.

@Bibliotheken meine ich das man nichts nutzen soll das z.B. Objektsteuerung per Maustasten fertig bietet oder eine Kollisionserkennung, ein "Spielfeld" usw.
Gibt ja genug 2d und 3d Spiel-Bibliotheken die schon sehr viel von Haus aus bieten. Die Herausforderung soll ja sein sich mal selber Gedanken zu machen wie man so etwas hin bekommt (Evtl. lange nicht so gut wie etablierte Mechanismen aber das muss ja nicht sein) Genau sowas wie PyGame oder SDL also nich :D

@Alle bzw. Larius, kannst du oben noch https://gitlab.com/ngb hinzufügen - das ist die öffentliche Seite zum anschauen der Projekte ;)
 
Zuletzt bearbeitet:

Larius

OutOfOrder

Registriert
12 Juli 2013
Beiträge
5.792
  • Thread Starter Thread Starter
  • #4
Mach ich dann wenn ich zuhause bin.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.573
DrFuture - da muß ich mal was zu loswerden ;)

Also wegen SDL, das bietet ja an sich keine Features an mit denen man so etwas schon vollautomatisch umsetzt, zum Beispiel automatische Kollissions-Erkennung, SDL würde ich zum Beispiel nur verwenden damit ich aus C heraus ein Fenster und Pixel/2d Daten verarbeiten bzw. Zugriff auf Zeichenroutinen/Pixelebene habe. Ich wüßte auch gar nicht wie das mit C allein funktionieren sollte um ehrlich zu sein. ;)

Und Windows-API will ich nicht programmieren :D
Und Open Glide/Direct X coding ist zu kompliziert derzeit (für mich) ;)

Zu SDL noch:
Simple DirectMedia Layer (SDL) is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.

Es sei denn jemand schlägt mir eine Bibliothek vor die nur Zeichenroutinen bietet und ein Fenster öffnet. Dann nehme ich die auch! ;)

Allegro vielleicht noch für C/C++.

Bei Pygame sehe ich es ähnlich, man brauch ja zumindest Zugriffe auf so etwas wie Tastatur, Mouse, nen Joystick, ein Fenster und nen JPG/PNG Loader um etwas zu realisieren und vielleicht noch gewisse Zeichenroutinen wie Pixel, Linie, Rechteck, Polygone... also Zugriff auf Grundelemente.

Fertige Features zu verwenden wäre ja im Code ersichtlich und etwas Lame, wobei Pygame im Gegensatz zu SDL schon mehr Features bietet, unter anderem auch Kollisionserkennung wenn ich mich richtig erinnere ;)

Nichts desto trotz, SDL würde ich nicht bannen, Pygame auch nicht, aber man darf nur low-level Funktionen verwenden: Pixel Zeichen, ein Bild laden und anzeigen, ein Fenster öffnen, die Tastatur ansteuern, eine Mp3 Laden und Abspielen, et cetera aber das Spiel darf keine erweiterten/smarten Features/fertige Funktionen verwenden - so wäre das doch fair. :T
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.748
Ort
in der Zukunft
Jo ist auch Ok, dachte c kann das alles auch ohne :D - Klar in .net gibt es ja auch die .net Funktionen die man nutzen können muss - und nicht in ASM alles selber schreibt.
Ok dann mach das ^^
 

TheSniperFan

Neu angemeldet

Registriert
15 Juli 2013
Beiträge
363
Ort
/dev/random
Hmmm, wie sieht's denn mit QtQuick aus? Ich bin mir absolut sicher, dass ich das gesamte Spiel in QML machen könnte. Das will ich aber aus zwei Gründen nicht. Erstens ist es langweilig weil einem sehr viel Arbeit abgenommen wird und zweitens will ich mich nicht mehr JavaScript aussetzen als unbedingt nötig. :D

Was ich vor hatte wäre, dass ich in QML das reine Zeichnen der UI-Elemente und das Abfangen von Tastatureingaben übernehme. In C++ würde ich dann die gesamte Logik, Speicherverwaltung, Verarbeiten der Eingabe, Verändern der UI-Elemente, etc. übernehmen und selbst from-scratch implementieren.
Das sollte so doch zulässig sein, oder?
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.748
Ort
in der Zukunft
Ich kenne doch nich jedes Framework und jede Sprache ;P Wie du schon sagtest nehmen Div. Frameworks recht viel ab -

[src=actionscript3]x = new quader(1,1)

on keypress{
quader.move(keypress)
}

on kollision {
quader.destroy()
}[/src]

So soll das Spiel nicht aussehen ;P
 

TheSniperFan

Neu angemeldet

Registriert
15 Juli 2013
Beiträge
363
Ort
/dev/random
@drfuture: Hier eimal im Detail.
Was ich mache:
  • Logik (Punkte, Gewinn-/Verlier-Bedingung(en), Bewegung, Kollisionserkennung, Items, Level -> der gesamte Spielverlauf halt)
  • Speicherverwaltung
  • Umsetzung von Eingabe zu Logik
  • Manipulation der UI-Elemente (Punkte-Text aktualisieren, Positionierung der einzelnen Teile der Schlange, Items, etc.)
Was ich nicht mache:
  • Manuelles Abfangen der Tastatureingaben auf Betriessystem-Level (ich nutze das Event-Handling von Qt um zu bestimmen ob und welche Tasten gerdrückt worden sind, implementiere das Verhalten jedoch selbst)
  • Rendern der einzelnen Elemente (nutze Qt um das UI zu rendern)

Das sollte so doch kein Problem sein, oder?
 

TheSniperFan

Neu angemeldet

Registriert
15 Juli 2013
Beiträge
363
Ort
/dev/random
Ich hätte die dann auch gerne.
Eine Frage. Wird das Repository danach geleert oder wird Alles für die Nachwelt erhalten?
 

TheSniperFan

Neu angemeldet

Registriert
15 Juli 2013
Beiträge
363
Ort
/dev/random
Na dann auf ans Werk!

(Was ich ein wenig komisch finde ist das darauf bestanden wird das auf Deutsch kommentiert wird. Könnt ihr alle kein Englisch oder was? :cool:)
 

keksautomat

Neu angemeldet

Registriert
15 Juli 2013
Beiträge
471
Ich werde mal gucken, ob ich hier mitmache. Zeit und Lust und so. ;)
Ansonsten: C++ mit Qt. Entwickelt wird aber erstmal alleine, sodass ich die Zugangsdaten nicht brauche. Erst wenn ich was vorzuweisen habe.. oder "nah" dran bin. ;)
 

Larius

OutOfOrder

Registriert
12 Juli 2013
Beiträge
5.792
  • Thread Starter Thread Starter
  • #16
@TheSniperFan: My inglish isn't the yellow of the egg :D

Du musst halt bedenken das es auch jüngere Mitglieder gibt, die sich dann vl doch mal den Wettbewerb anschauen - Neugierde undso. Da ist es doch besser wenn in Deutsch dabei steht, was man da macht, damits die kleinen Scriptkiddies lernen :D
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Ich habe ein Problem mit dem Titel.

Es ist doch kein Programmierwettbewerb, lediglich eine Herausforderung (in Ablehnung an Challenge )

Ob sich außer Larius beim ersten Versuch noch jemand die Ergebnisse angeschaut hat, wage ich zu bezweifeln. Wer sich nicht sicher ist, die Zeit zum teilnehmen zu finden, hat auch keine Zeit sich anschließend um andere Lösungsvorschläge zu kümmern

Richtig spannend dagegen war, wobei ich es nicht geschafft habe , mich weiter damit zu beschäftigen, die DNS Aufgabe, die so nebenbei hier rein kam.
 

Timon3

Team ModMii

Registriert
17 Juli 2013
Beiträge
499
Ich hätte auch gerne gitlab-Zugriff. :) Von meiner Seite aus würde das dann vermutlich per Java und Slick2D umgesetzt werden, wobei ich von Slick nur auf wenige Funktionen zurückgreifen werde (verschiedene Screens, Zeichnen etc.). Das sollte hoffentlich in Ordnung sein?
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.573
@KaPiTN:

Ja, die DNA Aufgabe war wirklich gut, das solltest du auf alle Fälle coden, nachdem du am aktuellen Wettbewerb teilgenommen hast. ;)

Für mich persönlich war im ersten Wettbewerb schwer alle Daten zu sondieren da ich nicht von allen Programmiersprachen Ahnung habe und auch wenig über das "wie gut ist etwas gecodet" sagen kann und zum zweiten war die Aufteilung für mich auch ein Punkt, ich bin faul. Das hat sich aber bei Gitlab dann vermutlich erledigt, da ein Programm mit allen Clon-baren Dateien kopiert werden kann, ohne 20 Teilprogramme abzuarbeiten, das geht ja dann automatisch, also muss man nicht alles zusammenfriemeln.

Es ist auch schwer eine Bewertung abzugeben, meine ich, wenn man 4-5 unterschiedliche Programmiersprachen vor sich hat, als wenn es um eine geht und dabei das Optimium herauszuholen ist. Es kann ja nur das Resultat, wenn auch weniger leider, die Technik bewertet werden, es sei denn die "Jury" ist bewandert in allen Sprachen bzw. kann genau sagen wo Probleme und Schwächen aufgetaucht sind.

Ich will hier auch niemanden in Schutz nehmen, sondern so erging es mir bei der letzten Aufgabe. :)

Es ging mir dabei auch nicht darum einen ersten Platz zu machen, sondern darum die Aufgabe mit der Sprache zu lösen, so gut ich kann. Hätte jemand gesagt du mixt C und C++, weil das in deinem "Lehrbuch" so drin steht (Jürgen Wolf) - dann hätte ich das so hinnehmen müssen um umschreiben, aber die Expertise bekommt man erst wenn man sich selbst in einer Sprache wohlfühlt. Von daher, seh es nicht so eng das dir niemand aufgezeigt hat was du hättest besser machen können, ich tippe auch einfach mal auf Unwissenheit wie man es hätte besser lösen können, das ist sehr Sprachenspezifisch.

Für mehr Feedback würde ich einfach einen Thread aufmachen zu dem Thema, vielleicht finden sich auch einige Leute hier die mit Java entsprechend umgehen können und dann ihr Feedback an dich weitergeben, weil sie eben wissen wo die Bottlenecks/Problemzonen sitzen.
 

accC

gesperrt

Registriert
14 Juli 2013
Beiträge
5.250
Bei kompilierten Projekten ist ja klar, dass die erzeugte Datei keine Kommentare enthält und daher kleiner ausfallen kann, als der originale Source.
Wie sieht es bei Scriptsprachen aus? Dürfen hier komprimierte Versionen erzeugt werden?
Will man bspw. unter 64kb bleiben, ist eine ausführliche Dokumentation des Codes natürlich nicht drin, was ja laut Regeln eine Voraussetzung ist.
 
Oben