Etwa 2010 hatte ich mir eine Lizens von PureBasic gekauft, da ich das als ziemlich geniales Werkzeug eingestuft habe, Dann lag es aber Jahre so gut wie ungenutzt rum. Ich hab zwar immer wieder mal probiert, bin aber immer wieder an Kleinigkeiten gescheitert, bzw. haben die ewig aufgehalten. Bis zu dem Tag als ich gezwungen war, auf die Schnelle ein kleines Logging-Tool für die Siemens Step7 Steuerungen zu programmieren.
Da ich eine Demo Einbindung für Snap7 in PureBasic gefunden hatte, hab ich mich dafür entschieden, das mal mit PureBasic zu machen statt mit Lazarus. Ich glaub ich hab das in 3 Tagen auf der Baustelle runter programmiert, so dass es funktioniert hat. Weit nicht Perfekt, aber einfach und funktional. Mein Kollege, der faktisch reiner SPS-Programmierer ist, hat dass dann in kürzester Zeit für eine andere Maschine angepasst - ohne viel Ahnung (das wäre mit Werkzeugen wie Visual-Studio oder Lazarus definitiv nicht so fix gegangen.
Da kam dann die Idee, der Wunsch auf, PureBasic auch für Industrie-Software einzusetzen. Man braucht aber definitiv mal ein Ausbildungsprojekt was auch Spaß macht. Im Winter 2021 hab ich mich dann mal hingesetzt und in erster Linie für mein Training ein kleines Spiel programmiert. Als Vorlage dafür hatte ich auf Github eine Version von Snakes in PureBasic gefunden. Dies hab ich komplett überarbeitet/erneuert, dokumentiert und für die Programmierausbildung vorbereitet. Leider ist es nicht 100% fertig. Für die Ausbildung bzw. zum Lernen taugt es trotzdem. Vielleicht kann es ja jemand gebrauchen/einsetzten.
Der Code ist höchstens 2000 Zeilen, wenn man die Kommentare abzieht.
https://github.com/Maagic7/Snakes
Snakes Game als Trainings/Ausbildungsprojekt
Re: Snakes Game als Trainings/Ausbildungsprojekt
Ich hab gerade einen sehr kurzen Blick drauf geworfen.
Ein Fehler begegnete mir gleich unter Linux:
Es gibt hier übrigens schon eine vordefinierte Konstante deren Name ich vergessen habe. Der Tipp für Faule: einfach immer den Slash nutzen, der ist unter Windows auch erlaubt.
Und meine Snake hat einen dicken fetten Hamster gefressen
oder anders gesagt, die Kollision funktioniert unerwartet für ein Snake spiel.
Ich schätze den Aufwand so ausführlich dokumentierten Code zu schreiben.
Doch ich muss zugeben ich würde es aufgrund meiner Erfahrungen nicht zum Unterrichten verwenden (bisher nur 5 mal, davon 2 mal Klassen)
Der lange Code schreckt Einsteiger ab, trotz gut gewählter Namen finden sie sich ohne Erfahrung dort nicht zurecht. Besser sind kleine Beispiele mit konkretem Thema. Am Ende des Kurses kann man sie dann zu etwas größeren Zusammensetzen, aber dann erschweren lange Kommentarblöcke eher die Lesbarkeit. Ich würde lieber ein minimales Snake Game verwenden mit einem Apfel und einer sehr simple Snake aus Quadraten und dann die Schüler ergänzen lassen, z.B. "Wir fügen Pizza als Essen ein" "Und was muss man nun tun, damit Pizza essen die Schlage schneller macht?" "Wie füge ich eine zweite Snake hinzu" "Wie können wir die Snake hübscher machen" usw.
Aber natürlich kann das auch am Unterrichtsstil liegen und ein anderer Stil verträgt sich gut mit solchen gut dokumentierten langen Codes.
Für ein Lehrprojekt finden sich übrigens wirklich viele Rechschreibfehler. Vor Schülern denke ich muss man bei sowas glänzen
"Direction_TrunLeft" "Prgogrammierung" "Varibalen" "Vie wichtiger"
Wenn man da selbst nicht so geübt ist einfach jemanden fragen der mal drüberlesen soll.
Ein Fehler begegnete mir gleich unter Linux:
Code: Alles auswählen
CompilerIf #PB_OS_Windows
;CompilerIf #PB_Compiler_OS=#PB_OS_Windows wäre richtig
#OS_SEP = "\"
CompilerElse
#OS_SEP = "/"
CompilerEndIf
Und meine Snake hat einen dicken fetten Hamster gefressen
oder anders gesagt, die Kollision funktioniert unerwartet für ein Snake spiel.
Ich schätze den Aufwand so ausführlich dokumentierten Code zu schreiben.
Doch ich muss zugeben ich würde es aufgrund meiner Erfahrungen nicht zum Unterrichten verwenden (bisher nur 5 mal, davon 2 mal Klassen)
Der lange Code schreckt Einsteiger ab, trotz gut gewählter Namen finden sie sich ohne Erfahrung dort nicht zurecht. Besser sind kleine Beispiele mit konkretem Thema. Am Ende des Kurses kann man sie dann zu etwas größeren Zusammensetzen, aber dann erschweren lange Kommentarblöcke eher die Lesbarkeit. Ich würde lieber ein minimales Snake Game verwenden mit einem Apfel und einer sehr simple Snake aus Quadraten und dann die Schüler ergänzen lassen, z.B. "Wir fügen Pizza als Essen ein" "Und was muss man nun tun, damit Pizza essen die Schlage schneller macht?" "Wie füge ich eine zweite Snake hinzu" "Wie können wir die Snake hübscher machen" usw.
Aber natürlich kann das auch am Unterrichtsstil liegen und ein anderer Stil verträgt sich gut mit solchen gut dokumentierten langen Codes.
Für ein Lehrprojekt finden sich übrigens wirklich viele Rechschreibfehler. Vor Schülern denke ich muss man bei sowas glänzen
"Direction_TrunLeft" "Prgogrammierung" "Varibalen" "Vie wichtiger"
Wenn man da selbst nicht so geübt ist einfach jemanden fragen der mal drüberlesen soll.
Re: Snakes Game als Trainings/Ausbildungsprojekt
@Macros
da stimme ich in allem zu! Wie gesagt, dass Projekt hab ich in erster Linie zu Übungszwecken für mich gemacht. Wir wollten das für eine kleine Gruppe zur Programmierausbildung mal testen. Ist leider bis heute nichts geworden.
Den Code kann natürlich kein Anfänger verstehen. Aber ich erinnere mich noch an meine erste EDV Ausbildung in der Schule in Basic programmieren. Noch auf Commodore. Da habe wir ein einfaches Autorennspiel angefangen einfach zu modifizieren uns schauen was passiert. Das war mein Einstieg.
Das mit den Rechtschreibfehlern ist natürlich nicht so gut! Da ich ziemlich schnell tippe, ist immer mal wieder eine Hand etwas zu schnell und die Buchstaben des linken und rechten Handanschlags sind vertauscht.
Wenn sich jemand findet, der das mal korrigiert, bitte mir den Code wieder zukommen lassen, dann stell ich den wieder online.
da stimme ich in allem zu! Wie gesagt, dass Projekt hab ich in erster Linie zu Übungszwecken für mich gemacht. Wir wollten das für eine kleine Gruppe zur Programmierausbildung mal testen. Ist leider bis heute nichts geworden.
Den Code kann natürlich kein Anfänger verstehen. Aber ich erinnere mich noch an meine erste EDV Ausbildung in der Schule in Basic programmieren. Noch auf Commodore. Da habe wir ein einfaches Autorennspiel angefangen einfach zu modifizieren uns schauen was passiert. Das war mein Einstieg.
Das mit den Rechtschreibfehlern ist natürlich nicht so gut! Da ich ziemlich schnell tippe, ist immer mal wieder eine Hand etwas zu schnell und die Buchstaben des linken und rechten Handanschlags sind vertauscht.
Wenn sich jemand findet, der das mal korrigiert, bitte mir den Code wieder zukommen lassen, dann stell ich den wieder online.
Zuletzt geändert von SMaag am 28.11.2022 19:50, insgesamt 1-mal geändert.
Re: Snakes Game als Trainings/Ausbildungsprojekt
Der korrekte Ordner-Trenner für Windows/Linux ist in PB als Konstante hinterlegt
#PS$, das wusste ich leider zu diesem Zeitpunkt noch nicht!
Snakes, die Hamster gefressen haben!
Die Kollisionsprüfung ist abgeschaltet! Da ist der Body auskommentiert, deswegen passiert da nix!
(passiert leider auch noch nichts, wenn man das aktiviert, da die GameOver Routine noch leer ist!)
#PS$, das wusste ich leider zu diesem Zeitpunkt noch nicht!
Snakes, die Hamster gefressen haben!
Die Kollisionsprüfung ist abgeschaltet! Da ist der Body auskommentiert, deswegen passiert da nix!
(passiert leider auch noch nichts, wenn man das aktiviert, da die GameOver Routine noch leer ist!)
Code: Alles auswählen
Procedure Snake_DetectCollision(SnakeID)
; ============================================================================
; NAME: Snake_DetectCollision
; DESC: Kollissionsüberprüfung des Snake\Head mit Element auf dem Spielfeld
; DESC: Wenn Snake auf Food trifft, dann Food verarbeiten
; DESC: Wenn Snake auf unerlaubtes Element wie Body, Head, Wall trifft,
; DESC: dann wird killed zurückgegeben
; VAR(SnakeID): ID der Snake
; RET: Sanke killed #True if killed
; ============================================================================
Protected killed = #False ; Wenn Snake auf unerlaubtes Element trifft, dann killed=#TRUE
Protected GridElement, ret
If SnakeID >0 And SnakeID <= ArraySize(Snakes())
With Snakes(SnakeID)\Head ; Snakes\Head Structure öffenen
GridElement=Grid(\x, \y)\ElementID ; ElementID des betroffenen Feldes aus dem Grid-Array lesen
Select GridElement ; aufschlüsselen, mit was das Feld belegt ist
; leeres Feld
Case #eElement_Nothing
; Crash mit Body, Head, oder Wand
Case #eElement_TBody
; hier können wir entscheiden, ob wir über einen Snake\Body
; hinwegkrichen können oder nicht. Wenn wir hier
; killed = #False belassen, dann können wir über Snake\Bodys wandern
; das könnte man evtl. noch als einstellbare Option einbauen
; killed = #True ; bei #True wäre es Ende
Case #eElement_THead
; prüfen, ob auf dem Feld bereits ein Head eines anderen Snakes ist
; dann sind die beiden Snakes mit dem Kopf zusammengestossen
ret = Field_IsSnakeHead(\x,\y)
If ret >0 And ret <> SnakeID ; Feld ist Kopf anderern Snakes
killed = #True
EndIf
Case #eElement_TWall
killed = #True
Case #eElement_TFood
Snake_Food(SnakeID) ; gefundes Food verarbeiten
EndSelect
EndWith
EndIf
ProcedureReturn killed
EndProcedure
Zuletzt geändert von SMaag am 28.11.2022 19:52, insgesamt 1-mal geändert.
Re: Snakes Game als Trainings/Ausbildungsprojekt
Rechtschreibung eine Katastrophe, hab jetzt eine Menge Fehler behoben.
Das war dann schon als Cross-Learning für den Deutschunterricht vorbereitet!
Rechtschreibfehler korrigieren!
Lektion 2: Man kann auch mit miserabler Rechtschreibung noch Programmierer werden.
Das war dann schon als Cross-Learning für den Deutschunterricht vorbereitet!
Rechtschreibfehler korrigieren!
Lektion 2: Man kann auch mit miserabler Rechtschreibung noch Programmierer werden.
Re: Snakes Game als Trainings/Ausbildungsprojekt
@Macros
Damit ist man aber nicht in der Lage eine Software professionell anzugehen. Man bekommt zwar was funktionierendes
hin. Die Struktur ist aber meist nach wenigen Änderungen komplett zusammen gebrochen. Dann kommt unübersichtlicher
und schlecht verständlicher Code dabei raus. Vergleiche dazu das Paten-Projekt.
https://github.com/kennycason/snakes
Mir ging es darum, eine Vorlage zu haben, die einen professionellen Ansatz zeigt. Also wie man auch weit größere Projekte
hin bekommt, ohne bei Änderungen zu scheitern.
Mich würde aber schon auch interessieren, wie man mit kompletten Anfängern umgeht!
Die Definition der Lernziele hab ich mir einfach mal so zurecht gelegt, wie ich das mit meiner Einsteigergruppe vor hatte.
Es wäre natürlich super, wenn ein aktiver Lehrer, das mal mit anpasst bzw. Tipps dazu gibt.
Ich habe eher das Problem, dass ich bereits Leute hab, die eine gewisse Grundausbildung in Programmieren haben.Der lange Code schreckt Einsteiger ab, trotz gut gewählter Namen finden sie sich ohne Erfahrung dort nicht zurecht ...
Damit ist man aber nicht in der Lage eine Software professionell anzugehen. Man bekommt zwar was funktionierendes
hin. Die Struktur ist aber meist nach wenigen Änderungen komplett zusammen gebrochen. Dann kommt unübersichtlicher
und schlecht verständlicher Code dabei raus. Vergleiche dazu das Paten-Projekt.
https://github.com/kennycason/snakes
Mir ging es darum, eine Vorlage zu haben, die einen professionellen Ansatz zeigt. Also wie man auch weit größere Projekte
hin bekommt, ohne bei Änderungen zu scheitern.
Mich würde aber schon auch interessieren, wie man mit kompletten Anfängern umgeht!
Die Definition der Lernziele hab ich mir einfach mal so zurecht gelegt, wie ich das mit meiner Einsteigergruppe vor hatte.
Es wäre natürlich super, wenn ein aktiver Lehrer, das mal mit anpasst bzw. Tipps dazu gibt.