WinFuture-Forum.de: batch Schiffe versenken - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

batch Schiffe versenken


#1 Mitglied ist offline   Heinz_Dieter 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 11. Mai 19
  • Reputation: 0

geschrieben 11. Mai 2019 - 18:16

huhu,
ich würde von arbeitsamt zu einer seiner berühmten maßnahmen geschickt und hab mich dort zu tode gelangweilt. da kam ich auf die idee mir etwas progammierkenntnis anzueignen. da man bei den rechnern die mir da zu verfügung standen keine große auswahl hatte hab ich mich für eine batch datei entscheiden. es ist leider etwas größer gewurden als ich es anfangs gedacht hab (1.08 MB) daher hab ich es in eine RAR datei gepackt mit 2 anderen datei die ich als beispiel für farbdarstellung nutze, weil das datei uploadlimit hier in diesen forum max 150 KB ist.
als die maßnahme vorbei war hab ich zuhause immer mal etwas weiter gemacht es ist sehr viel schreiberrei daher sind warscheinlich noch ein paar fehler drin. ich hab mir um die meisten zu finden ein automatischen durchlauf "gebaut" der das programm immer und immer wieder durchlaufen lässt bis er ein fehler hat. diesen fehler dann aber manuell nachzuvollziehen ist aber ansträngend wenn es nicht nur ein falscher jump ist.



1. gibt es eine möglichkeit batch datein auf fehler zu durchsuchen und das mit anzeigt wo der fehler aufgetreten ist oder welche zeilen zuletzt bearbeitet wurden ?

2. hat vlt jemand lust sich mal den code anzugucken und mir ein paar tipps zu geben wie man das hätte auch kürzer schreiben können. da ich ein noob bin wäre auch eine erklärung nett was genau der code den man postet macht (bei komplexeren code wie z.b. bei meiner farbdarstellung). damit ich dies nachvollziehen und gegebenfalls auch umändern kann.

3. ich würde das spiel gern in farbe darstellen hab auch ne ganze weile gesucht wie man das bewerkstelligen kann. in ein andern forum hab ich auch eine (so glaube ich) gute möglichkeit gefunden. allerdings baut sich das bild zu langsam auf da der pc erst eine datei erstelle da was reinschreibt, sie ausliest und dann löscht und das immer wieder bis das bild fertig ist. mir würde aber reichen wenn er erst löscht wenn das bild fertig aufgebaut ist da kann er mehrmals die gleiche datei auslesen allerdings hab ich das nicht hinbekommen da mir der code zu hoch ist :D



danke schon mal im vorraus wenn ihr euch die mühe macht mir mit mein amateur code zu helfen :)

anhang:
Angehängte Datei  schiffe versenken batch.rar (80,29K)
Anzahl der Downloads: 15
schiffe versenken batch.rar -> schiffe versenken batch (ordner) -> farb möglichkeit.txt, farb test.txt, schiffeversenken fertig.txt

Dieser Beitrag wurde von Heinz_Dieter bearbeitet: 11. Mai 2019 - 18:28

0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.630
  • Beigetreten: 20. Juli 07
  • Reputation: 1.066

geschrieben 11. Mai 2019 - 20:43

1MB für Batchdatei? Du meine Güte. :huh:

Kudos fürs Durchhaltevermögen. :smokin:

Dennoch ist und bleibt batch für sowas *ungeeignet* -- ich möchte auch echt mal wissen, wieso plötzlich alle mit "Batch" für alle möglichen Probleme kommen; das Zeuch ist "unbrauchbar" dahingehend, daß man jede Menge Scheiß tun muß und jede Menge Scheiß beachten muß, was anderswo mit einer Zeile ohne Nachzudenken durchgeleckert gewesen wäre. (Vielleicht auch deswegen die knapp mehr als 1MB?)

Deshalb zuallererst der Vorschlag: eigne Dir noch was anderes an oder, falls Du außer Batch noch was verwenden könntest, frag Dich ob Du's nicht damit probieren möchtest.

Als Nächstes, bevor ich reingeschaut hab (mach ich nach Abschicken dieses Posts hier): Du kannst auch in Batch "modularisieren" und "Funktionen" haben, indem Du den Code in einzelne Funktionsmodule auslagerst und die entweder mit Labels oder als eigenständige Batchdateien designierst. Falls Du das schon hast, sorry. :blush:


Was die erwähnten Editorfunktionen angeht.... müßtest Du mal gucken, Notepad++ wäre erstmal ein guter Anfang für viele Deiner Vorstellungen. Syntaxcheck für Batch kann das allerdings nicht (soweit ich weiß) und im Hinblick darauf, daß Batch schon längst abgekündigt ist, würde ich vorsichtig unterstellen wollen, daß es da auch nicht viel geben wird. Es ist halt, von der Sache her, eine komplett banale Scriptsprache mit Augenmerk auf serieller Verarbeitung und (sehr) simpler Prozeßlogik. Stringverarbeitung? Geht, aber schlecht. Variablenverwaltung? Geht, aber schlecht. Arithmetik? Geht, aber schlecht und nur rudimentär. Die Liste ist lang.

Allerdings würde Dir hier die Zerlegung in Untermodule entgegenkommen (plus zumindest zeitweilig die Einfügung von zusätzlichen ECHOs). Dann merkt man vergleichsweise schnell und einfach, wo das Problem liegt, kann das fragliche Submodul direkt aufrufen und durchtesten und dann sollte relativ schnell klar werden, woher das "Befehl oder Dateiname nicht gefunden" kam oder daß man einfach Mist hingeschrieben hatte dahingehend, daß der Code nicht das tut, was man wollte, daß er das tut.


Die Farbfrage ist so ne Sache. Bisher™, d.h. bis Windows 9x, konnte man einfach Escapesequenzen aufs Terminal schreiben und das wurde dann ganz einfach farbig. Inzwischen, 20 Jahre später wollte MS das wieder irgendwie hinzufügen.... aber zumindest soweit ich weiß geht das weiterhin nicht. Alternativen für Farbe wäre (limitiert) per Powershell oder (relativ frei) der Einsatz eines kompatiblen Drittanbieterterminals, entweder für Bash (cf. msys2; die haben mintty unter Windows) oder halt für beliebige Konsolen, wobei ich von denen bisher keine auf "Farbtauglichkeit" getestet hab. Würde aber erwarten, daß DOSBOX hierfür funktionieren... sollte.

Oder natürlich als Windowsanwendung komplett mit Fenster drumrum. Aber das wäre dann nicht mehr in der Konsole.


So und jetzt gehe ich mal gucken :wink: sage aber von vornherein, versprechen tu ich nichts; nicht bei 1MB Quellcode... im Batchformat. So ausdauernd bin ich dann doch nicht. :blush:
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.630
  • Beigetreten: 20. Juli 07
  • Reputation: 1.066

geschrieben 11. Mai 2019 - 21:14

Okay, geschaut. :blush:

- Bisherige Kommentare und Anmerkungen gelten natürlich.
- Das Pferd Batch ist so tot, das müffelt schon. Allerdings ist jeder Esel besser zum Tragen von Lasten geeignet als ein Pferd.

- SOLLTEST Du jemals den Impuls verspüren, Code kopieren zu wollen: WIDERSTEHE von Herzem und baue stattdessen eine Funktion, die das aufruft, zB in Form einer eigenständigen Batchdatei (die mit call ... aufgerufen werden kann). Da kann man auch Parameter übergeben (zu finden in %1 bis %9 nach Position in der Parameterliste).

- Zur Veranschaulichung: Stell Dir vor, Du solltest - oder würdest wollen --- aus der 10x10-Matrix eine 9x9 oder eine 11x11 oder auch nur eine 11x9-Matrix machen wollen.

-- Wenn Dir ob des Gedankens die Haare zu Berge stehen, dann hast Du das Problem erfaßt. Ich würde das auch nicht wollen.

-- Hier sind wir wieder an dem Punkt, daß Batch dafür schlicht nicht geeignet ist. Ein simples zweidimensionales Array hätte gereicht und dann sinngemäß
int höhe = 9
int breite = 9
array versenken = char[höhe][breite]

for int i = 1 to höhe
   for int j = 1 to breite
        versenken[i][j] = "O"
   end for
end for 



und Du hast das, wofür Du mit Batch 300 oder so Zeilen gebraucht hast, nicht nur abgefertigt, sondern kannst auch banalst die Variablen höhe und breite auf irgendetwas anderes ändern, ohne daß Du besonders auf etwas aufpassen müßtest.


Weiß nicht... ich schlag vor Du schaust mal bei PHP, oder Perl, oder wegen mir auch Python (nicht so meins, aber vielleicht liegt's Dir ja mehr). Oder sogar javascript via node.js oder Windows Script Host (der kann auch noch Visual Basic Script).

Erstere müßtest Du Dir irgendwo besorgen, installieren und dann den Code in eine .php/.pl/.py-Datei schreiben und dann mit php.exe/perl.exe/python.exe <Datei> ausführen.

Letztere sind Teil von Windows - bisher noch, ebenso wie Batch -- und per cscript <Datei> in der Konsole ausführbar.

Da kannst Du dann ordentlich programmieren, unter anderem einschließlich zweidimensionaler Arrays und natürlich mit Unterstützung von Subroutinen mit oder ohne Rückgabewert.


Dann mußt Du den Mist nämlich NICHT Zeile für Zeile händisch schreiben, was -- wie Du definitiv selber gemerkt haben wirst -- unhandlichst hoch Drei und vor allem auch unwartbar ist.


Fazit: Finger weg von Batch. Du tust Dir KEINEN Gefallen damit.

Dieser Beitrag wurde von RalphS bearbeitet: 11. Mai 2019 - 21:18

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#4 Mitglied ist offline   Heinz_Dieter 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 11. Mai 19
  • Reputation: 0

geschrieben 12. Mai 2019 - 02:28

danke für die schnelle antwort :)

ich hatte vorher keinerlei plan von programmieren (selbst jetzt hab ich kaum plan wie ich immer wieder mitbekomme :D ). es hat mich aber schon immer fasziniert wie aus ein paar zeilen code am ende ein komplexes programm wird oder auch wie aus den ganzen 0 und 1 am ende ein bild auf den monitor kommt. leider hatte ich kein richitgen informatikunterricht in der schule. wir saßen teilweiße noch an windows 3.1.1 rechnern und haben vlt mal eine word oder exel datei gemacht und der lehrer hatte nochweniger plan als die schüler :/

batch hab ich wegen der "einfachheit" da man dafür keine programme bracht um sie zu starten oder zu erstellen und da die befehle alle schön erklärt sind in windows für noobs wie mich. mir war durchaus bewusst das ein batch schiffe versenken nicht das optimale ist aber ich wollte es versuchen und da ich auch keine großen recht an den pc bei der maßnahme hatte musste ich das einfachste nehmen was auf fast allen windows versionen läuft ohne programme installieren zu müssen.

als die datei so groß wurde hab ich auch kurz überlegt (wie du auch vorgeschlagen hast) das spiel in mehrere datei zu schreiben aber das hab ich dann verworfen da ich es für wenig sinvoll erachtet hab ein so "simples" spiel auf mehrere datei zu splitten und ich hätte alles nochmal überarbeiten müssen. im endeffekt dacht ich mir "wenn es erst mal funktioniert ist es doch schöner wenn es nur eine datei ist. auch wenn es mehr arbeit macht"

ich würde auch gern andere sprachen mal ausprobieren allerdings fehlt mir dafür meist programme und vorallen jemand der mir auch mal ein paar sachen erklärt. man findet zwar viel in englisch sprachigen foren aber das ist mein für leute die mit der materie vertraut sind dazu kommt das mein englisch für den alltag reicht aber bei eingen spezifische sachen dann doch ehr zu schlecht ist. teilweiße versteh ich bei deutschen schon nicht was gerade los ist. dein "Array" oder "Arithmetik" ist das beste beispiel ich hab kein plan was es ist und müsste erst mal googlen und selbst dann ist nicht gesagt das mir das wirklich weiterhilft rauszufinden was damit eigentlich gemeint ist :D

ich nehme gern tipp entgegen wie man sich (großteils) allein programmieren beibringt mithilfe von webseiten, programmen usw und das im bestenfall auf deutsch. allerdings weiß ich nicht welche sprache ich wählen soll. um genau zu sein weiß ich nicht mal welche sprache ich für mein schiffe versenken verwendet habe :D es war für mich erst ein zeitvertreib damit ich nicht sinlos rumsitze und dann hat es mir mehr spaß gemacht als gedacht sich über dinge den kopf zu zerbrechen "wie könnte man das problem lösen" und daher hab ich es später zuhause fertig gemacht. anfangs war es nur "mensch vs mensch" da war es glaube "nur" ca 200KB und später dachte ich mir da muss noch einiges rein wie z.b. siegbedingung und eine KI. also hab ich mir ne KI zurechtgeschustert die mit den zufallsprinzip aber auch teilweiße systematisch schießt. und so ist es immer größer gewurden :D

ein problem hab ich oben vergessen zu erwähnen. wenn man bei der eingabe die leertaste und denn enter drückt schließt sich das programm. kann man das irgendwie verhindern ?

Dieser Beitrag wurde von Heinz_Dieter bearbeitet: 12. Mai 2019 - 02:29

0

#5 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 38
  • Beigetreten: 12. Februar 13
  • Reputation: 1

geschrieben 12. Mai 2019 - 12:38

Hut ab
Ich hätte da den Überblick schon lange verloren

zur LEERTASTE:
Auf Leerzeichen testen, dabei die Variablen in Hochkomma setzen.
sonst gehts nicht

set /p Schlachtschiff=
if "%Schlachtschiff%"==" " goto Schlachtschiff


0

#6 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 312
  • Beigetreten: 14. Juni 12
  • Reputation: 29

geschrieben 12. Mai 2019 - 18:44

@Heinz_Dieter: Du kannst dir kostenlos Visual Studio Community herunterladen - da wären dann dabei VisualBasic.NET, C#.NET usw.

Für den Einstieg würde ich VisualBasic.NET empfehlen - für den Umstieg C#.NET da diese Hochsprache näher an C / C++ ist - Synthaxbetrachtet. Und in diesem Kontext fallen einem auch später Sprachen wie Java, PHP, Javascript ich schwer. Wobei letzteres eine Scriptsprache ist und nur bedingt zu höheren Sprachen zählt.

Python ist pingelig - gerade im Verwendungsbereich Linux da dort Tabulatoren absolut nicht gerne gesehen sind. Aber das betrifft dich wohl nicht.

Bezüglich deines Spiels - Respekt vor dem Durchhaltevermögen. Das Zeichnet einen Programmierer auch irgendwie aus. Die Anzahl der Zeilen finde ich persönlich aber für ein - wie du es auch beschreibst - simples Spiel für exorbitant.

In den Hochsprachen C#, Java, VB.NET mit entsprechender IDE (Entwicklungsumgebung) kannst du auch eine "schöne" GUI (Ein paar nette Fenster) zusammenklicken und diese dann entsprechend mit deinem Code interagieren lassen. Dass wäre Zeitgemäß und weniger Zeitaufwändig. Ein Beispiel für Schiffeversänken unter C# wäre folgendes: Lies mich
Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

#7 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 201
  • Beigetreten: 30. Juni 12
  • Reputation: 9

geschrieben 12. Mai 2019 - 21:50

zu deiner Farbenfrage bei Batch, ab Windows 10 (aber nicht die Ursprungsversion 1607) sind ANSI Codes möglich

Ich hatte es mal so gelöst:
1. Abfrage Welche Windowsversion und dann einen Call zur Initialisierung
for /f "tokens=6 delims=[]. " %%G in ('ver') do if %%G GEQ 10586 call :Init_ASCII



2. Die Variablen festlegen
:Init_ASCII
	set ANSI_rt=
	set ANSI_gr=
	set ANSI_gn=
	set ANSI_ge=
	set ANSI_ws=
goto :eof


3. Benutzt habe ich es dann so:
echo   %ANSI_gr%graue Schrift%ANSI_gn% und jetzt gruen


falls die Variablen nicht festgelegt wurden, wird alles in der Standardfarbe ausgegeben, sonst farbig. eine Liste findet man mit Google

Dieser Beitrag wurde von MasterP82 bearbeitet: 12. Mai 2019 - 21:51

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0