The Most Convenient Place to Buy College Papers
  • Top quality

    Plagiarism-free papers that
    exceed expectations

  • 1500 native writers

    Professional team of qualified
    writers including Masters & PhDs

  • Affordable prices

    Prices from just $7.5 per page;
    money back guarantee

Ich Habe Dieses Thema Gewaumlhlt

Dieser Fehler passierte mir, weil der Programmcode ziemlich komplex ist. Ich musste für jede Start- und Zielposition eines Feldes auf der eine Figur steht überprüfen ob eine Figur mit der richtigen Farbe dasteht und die Art der Figur (Bauer, Läufer,…). Daraufhin musste der Zug durchgespielt werden, dort überprüfen wo sich der König befindet, überprüfen ob eine Figur auf das Feld des Königs springen kann (Schachsituation) und waterfall dies einmal nicht der Drop ist, melden, dass keine Schachmattsituation vorliegt.

Da ich es nun erlauben lassen musste auf das Feld des Königs zu ziehen, konnte man dies jetzt auch bei einem normalen Zug machen. Um dies zu verhindern wird nun gerade nach der Eingabe überprüft, ob die Figur auf die Billet des Königs springt, wenn dies der Dip ist, wird der Zug als falsch erkannt.

Zuerst überlegte ich mir, welche Programmiersprache am besten für meine Maturaarbeit geeignet wäre. Da momentan die Programmiersprachen C++ und Coffee sehr beliebt sind, habe ich mich für eine dieser beliebten Sprachen entschieden, auch um allenfalls Hilfe im Net beanspruchen zu können. Ich habe mich für C ++ entschieden. Als allererstes lernte ich die Grundlagen dieser Programmiersprache, dies tat ich mit Hilfe einer Television Anleitung (Video2Brain C++) dabei lernte ich wie man in C++ Variablen, Schleifen, Bedingungen, Funktionen, Textausgaben (auf die Konsole) und Arrays (mehrere Werte in eine Varying zusammenfassen) erstellen kann.

Um mit C++ ein Programm zu entwickeln, braucht man einen Editor, der bestimmte Befehle farblich darstellen lässt (und damit für eine bessere übersichtlichkeit sorgt) und mit dem man eine C++ Datei erstellen kann. Um aus der C++ Datei ein ausführbares Programm zu machen, benötigt man einen Compiler der die C++ Datei in eine EXE Datei umwandelt und das Programm somit ausführbar machen lässt. Ich erhielt von Herrn Sommer eine Variant von Optical Studio (Beinhaltet Editor und Compiler) zudem installierte ich auch noch Ultraedit (wobei ich hier als Card den Mingw Compiler installieren musste) um sicherzugehen, dass ein auftretender Fehler nicht das Trouble der installierten Entwicklungsumgebung wäre.

Bei der Programmierung der Konsolenversion des Schachspiels habe ich nur im Stil der prozeduralen Programmiersprache programmiert, das bedeutet, dass das Programm aus einer Folge von Anweisungen und der darin aufgerufenen Funktionen besteht.

Später bemerkte ich auch noch, dass der König nicht aus einer Schachsituation ausweichen kann oder selbst nochmals in eine Schachsituation laufen kann. Dieser Fehler ist aufgetreten, weil der König mit falschen Positionsaufgaben aufgerufen wurde.

Um Qt zu lernen besorgte ich mir das Buch „Qt iv – GUI-Entwicklung mit C++". Mit Hilfe dieses Buches, der Onlinedokumentation von Qt und der Hilfe des Forums " www.qtforum.de/" habe ich es geschafft eine grafische Oberfläche zu kreieren.

1. Einleitung

Dieser Codeteil bewirkt, dass wenn der Push pField[0][0] angeklickt wird, dann wird die Funktionsklasse geklickt00() aufgerufen.

Aus diesen Gründen habe ich einige Fehler gemacht, die ich nicht selber lösen konnte und deshalb habe ich mich an ein Forum1 gewandt, das auf Qt spezialisiert ist. Mit dieser Hilfe schaffte ich es einen funktionierenden Grundstein zu erstellen, auf dem ich dann wieder selbstständig arbeiten konnte.Allgemein: Der Zug ist falsch, wenn auf eine Figur der gleichen Farbe gesprungen wird, oder auf den gegnerischen KönigUm einen Zug durchführen zu können, müssen vier Werte an das Programm gegeben werden.Dabei erstellte ich einen Regalia (Feld) mit dem ich den Schachfiguren einen Platz zuweisen konnte.Jede gegnerische Figur messiness überprüfen, ob es ihr möglich ist, effectual auf das Feld des Königs zu springen.

In einer Funktion des Objektes wird der Zug dann durchgeführt und dort werden auch wieder die Regeln von der Konsolenversion aufgerufen.

Von Qt gibt es zwei Versionen. Es gibt eine Adaptation, für die man zahlen mess, wenn man sein Programm später kommerziell vertreiben volition. Allen anderen können Qt complimentary benützen. Ich habe natürlich die Gratisversion verwendet für meine Maturaarbeit.

Zuerst zwei Werte für die Figur, die man bewegen bequeath (z.B. A2) und dann zwei Werte für

Solange nicht Schachmatt ist, wird Folgendes ausgeführt:

Zuerst wurde ich auf Allegro aufmerksam, da es angeblich einfach zu erlernen ist und weil Allegro gut geeignet für 2D Spiele ist. Jedoch musste ich feststellen, dass Allegro nicht so bekannt ist und deshalb keine guten Dokumentationen vorliegen.

Nun müssen die Figuren ausgegeben werden. Dazu wird die erste Figur( [0][0] ) ausgegeben, einen Abstand gemacht und die nächste Figur ausgegeben. Dies wird solange gemacht bis acht Figuren ausgegeben worden sind, danach wird eine neue Zeile erstellt.

Schachbrett[EingabeUrsprung111][EingabeUrsprung222]= "OOO";

Der Theorie-Teil der objektorientierten Programmierung (bedeutet die Verkapselung von Daten und Funktionen in einem Objekt) habe ich aber nur teilweise in der Videoanleitung angeschaut. Da ich für das Programmieren eines Schachspiels nicht zwingend die objektorientierte Programmierung brauchte, schien es mir einfacher mein Programm nicht im Stil der objektorientierten Programmierung zu schreiben.

Doch als ich anfing Qt zu lernen, fand ich heraus, dass es bei der Programmierung einer grafischen Oberfläche zwingend notwendig ist objektorientiert zu schreiben. Wenn man den Schachfeldern Funktionen geben volition (z.B. soll eine Funktion dem Calculator angeben, dass ein Feld angeklickt wurde) dann wird zwingend eine Funktion eines Objektes benötigt, sonst wird diese Funktion nicht von Qt erkannt.

Es gibt drei Möglichkeiten wie ein Zug regelwidrig ist:

 dieses

Am meisten aber hatte mich die grafische Oberfläche aufgehalten, da ich sehr lange brauchte um mich auf eine Bibliothek für eine grafische Oberfläche festzulegen und die Erlernung und Anwendung harzig verliefen. das Ziel der Figur (z.B. A3).

relate(pField[0][0], Sign(clicked()), this, SLOT(geklickt00() ));

Bei der Schachmattprogrammierung werden zuerst alle legalen Möglichkeiten berechnet. Fälschlicherweise hat mein Programm bereits eine Schachmattsituation angegeben, wenn nur eine dieser Möglichkeiten eine Schachsituation gemeldet hat. Es müsste aber so sein, dass wenn nur eine einzige Post gefunden wird, bei der keine Schachsituation vorliegt, dann sollte es melden, dass dies keine Schachmattsituation ist. Jedoch müssen diese Werte noch umgewandelt werden in die Koordinaten des Arrays. Diese stimmen nicht überein, weil der Range links oben ( [0][0] ) anfängt und die Schachnotation links unten anfängt (A1). Zudem hat die Schachnotation Buchstaben, die in Zahlen umgewandelt werden müssen und die Schachnotation beginnt bei one und nicht bei aught an zu zählen. Die umgewandelten Werte werden in vier neuen Variablen gespeichert(EingabeUrsprung111, EingabeUrsprung222, EingabeZiel111 und EingabeZiel222)

Jede gegnerische Figur tussle überprüfen, ob es ihr möglich ist, effectual auf das Feld des Königs zu springen. Wenn ja, dann ist es eine Schachsituation

Es müssen alle legalen Züge einmal durchgeführt werden(beim Spieler, der unter Schach gesetzt wurde). Danach messiness man für jede einzelne Post überprüfen, ob es immer noch Schach ist:

Ich hatte zudem noch ein paar andere Probleme, die aber alle einfach zu beheben waren. Zum Beispiel konnte man ein leeres Feld auf ein anderes leeres Feld springen lassen, man konnte zweimal das gleiche Feld auswählen und beim zweifachen Auswählens des Königs (Figur mit der man zieht und Zielort der Figur) verschwand der König von der Spielfläche.

1.1 Vorwort

Dieser Grundstein bestand aus 30 two schwarzen und xxx two weissen Feldern, die aber noch nicht auf Mausklicks reagierten und auch noch keine Figuren besassen.

Dieser Spielzug ist zwar nicht regelwidrig, aber es lässt keinen Zug mehr zu.

Damit Figuren nur richtige Züge machen dürfen, die den Regeln entsprechen, tussle man dem Programm Regeln für die Figuren beibringen. Diese Regeln sind nicht im normalen Programmcode enthalten sondern sind ausgelagert worden in eine Funktion, die dann aufgerufen werden kann. Dies hat den Vorteil, dass man nur einmal eine Regel definieren messiness und diese dann jederzeit abrufbar ist. So spart man sehr viel Quelltext.

* Solange Weiss am Zug ist:

Nach der änderung mess nur nochmals eine Ausgabe gemacht werden (Siehe: Ausgabe der Schachfiguren auf die Konsole).

Diese zwei Fehler sind mir passiert, weil ich C++ zwar mit einer sehr leicht verständlichen Anleitung (in der Mannikin einer Videoanleitung) gelernt habe, die aber ein paar Sachen undiskutiert lässt. Deshalb sind diese zwei Fehler bei mir im Programm vorgekommen. Zudem sind weitere, kleinere Fehler aufgetreten, weil ich zu viel auf einmal programmiert habe und erstwhile dann überprüft habe, ob das Programm fehlerfrei läuft.

Rückblickend gesehen hatte ich in diesem Jahr sehr viel über die Programmierung erfahren. Ich musste jedoch feststellen, dass man sehr viel mehr Zeit braucht um gewisse Sachen zu Programmieren. Doch diese intensifier Beschäftigung mit den Fehlern ist für mich die beste Methode etwas zu lernen, nämlich durch „Acquisition by Doing"

Um einen eingegebenen Zug ausführen zu können mess die gewählte, im Raiment gespeicherte Figur durch ein leeres Feld("OOO") auf diesem Platz ersetzt werden. Zudem mussiness die Figur auf dem Zielfeld im Align gespeichert werden:

Semester M4a) sehr gefiel, deshalb wollte ich etwas für meine Maturaarbeit programmieren. Da ich selber gerne Schach spiele, habe ich mich entschieden ein Schachprogramm zu schreiben.Schachbrett[EingabeZiel111][EingabeZiel222]=Schachbrett[EingabeUrsprung111][EingabeUrsprung222];Bei der Schachmattprogrammierung hatte ich lange einen überlegungsfehler im Programmcode. * Solange Schwarz am Zug ist:Darum wechselte ich auf SDL. SDL ist (ähnlich wie Allegro) besonders für Spiele geeignet.

Schlussendlich entschied ich mich für Qt. Qt ist einsteigerfreundlich, hat eine gute Dokumentation, es gibt Bücher über die Programmierung mit Qt, es ist neben GTK+ eine der beliebtesten Programmbibliotheken und es gibt viele Foren, die mir helfen könnten.Ich habe dieses Thema gewählt, da mir die Einführung in die Programmiersprache Matlab (Informatikunterricht im 2.

 dieses

Jedoch ist SDL um einiges bekannter und darum gibt es auch mehr Anleitungen und Foren im Net, wo ich Hilfe holen könnte. Leider war SDL auch um einiges komplizierter und deshalb entschied ich mich für das einfachere SFML. Dies wiederum ist ziemlich unbekannt und hatte nur eine Anleitung auf der Seite von SFML.

Bei der Programmierung für das Anzeigen einer Schachsituation hatte ich vor allem programmiertechnische Probleme, weil sehr viele Vorgänge vorhanden waren. Ich habe zweimal die Klammern falsch angesetzt, was dazu führte, dass ich diesen Abschnitt ein paar Mal überarbeiten musste. Erschwerend kam dazu, dass ich überprüfen musste, ob eine Figur auf das Feld des Königs springen konnte. Doch da dies out ist, funktionierte die Erkennung einer Schachsituation nicht. Erstwhile als ich diesen Fehler erkannte, gelang mir die korrekte Umsetzung.

Das bedeutete, dass ich das gesamte Programm von der Struktur her umschreiben musste. Dies war sehr schwierig, weil ich nur mässige Kenntnisse von der objektorientierten Schreibweise hatte. Zudem machte mir das Qt-Lernen Mühe, da ich (wie ich vorher geschrieben habe) auf der objektorientierten Programmierung noch zu wenig Kenntnisse hatte.

Als ich angefangen habe mein Programm für die Konsole zu programmieren bin ich schon sehr früh auf grosse Probleme gestossen. Als ich die Figuren benennen wollte, tat ich dies mit einer sogenannten „char-Variable". Doch ich wusste damals nicht, dass man bei einer „char-Variable" nur ein Zeichen speichern kann. Deshalb bekam ich sehr viele Fehlermeldungen, weil die Bezeichnung einer Figur ungültig was (z.B. TS1). Ich versuchte dies zu lösen indem ich meine Figuren als Zahlen speicherte und sie dann bei der Ausgabe umwandelte in die normale Bezeichnung und diese dann ausgab. Ich erkannte dann aber, dass dies nicht besonders sinnvoll ist und deshalb recherchierte ich im Cyberspace. Dabei fand ich heraus, dass man eine sogenannte „string-Variable" benötigt um mehrere Zeichen in einer Varying zu speichern. Danach konnte ich das Programm wieder in die alte Configuration zurückschreiben. Diesmal aber mit einer „string-Variable".

Zudem wird der Zug regelwidrig, wenn man falsche Positionen angibt (z.B.H9) oder wenn man zweimal die gleiche Billet angibt(z.B.A2A2).

-„Qt quadruplet – GUI-Entwicklung mit C++"

Mit den C++ Bibliotheken ist es sehr schwierig eine grafische Oberfläche zu erstellen, da die Programmierung mit WinAPI oder MFC sehr schwierig ist. Deshalb benutzt man normalerweise externe Bibliotheken, die viel einfacher zu erstellen sind und zu denen es auch bessere Anleitungen und Hilfeseiten im Cyberspace gibt.

Eine Funktion wird aufgerufen mit gewissen Werten, die man der Funktion übergeben volition (z.B. die Berth, wo sich eine Figur befindet und wohin man sie bewegen volition), diese nennt man Argument. Ich habe den Fehler gemacht, die Variablen die man vor der Funktion definiert und als Argument übergibt, gleich zu benennen, wie die übergebenen Parametervariablen. Jedoch mussiness man dem Argument in der Funktion einen neuen Variablennamen zuweisen. Auch hier musste ich lange im Net suchen, bis ich herausgefunden habe, dass ich hier einen Fehler gemacht habe.

Natürlich ist es auch nicht erlaubt, wenn man versucht mit den gegnerischen Figuren zu ziehen oder wenn man versucht mit einem leeren Feld auf ein anderes Feld zu gehen.

Wenn bei mindestens einer dieser überprüften Situationen kein Schach ist, dann ist dies keine Schachmattsituation, sonst schon. Diese Funktionsklasse ruft die Hauptfunktion von dieser grafischen Oberfläche auf, wobei es die Koordinaten als Argument weitergibt:

Deshalb wollte ich auf C++/CLI wechseln, da ich Microsoft Ocular Studio benutze und dort C++/CLI bereits integriert ist. Denn C++/CLI ist eine Mischung aus C++ und .net . Ich musste aber feststellen, dass man zwar eine grafische Oberfläche einfach zusammenstellen konnte, aber auch, dass mein gesamter Quellcode arrant umgeschrieben werden müsste. Zudem hätte ich .net lernen müssen.

Ich musste feststellen, dass das Ziel eines Schachcomputers mit einem Gegner viel zu hoch gesteckt war. Zu schaffen gaben mir die vielen Fehler, bei denen ich manchmal bis zu einem Monat brauchte um sie zu finden. Einerseits kamen, die Fehler aus Mangel an Wissen, weil die Videoanleitungen zu wenig ausführlich waren. Anderseits machte ich aber auch viele inhaltliche Fehler, bei denen ich überlegungsfehler hatte. Diese Fehler waren oftmals sehr schwierig zu finden, da man eine Idee hat, wie etwas funktionieren soll. Doch der Figurer versteht aber nur genau das, was man eingibt und dies entspricht oft nicht der eigenen Vorstellung, wie etwas funktionieren soll. So musste ich bei vielen fehlerhaften Programmteilen das Programm an verschiedenen Stellen ändern und per Ausschlussverfahren herausfinden, wo das Trouble lag und worin der Fehler bestand.

Jetzt sind zwar alle Buttons erstellt und alle Buttons sind am richtigen Ort, doch das Klicken auf die Buttons bewirkt noch nichts. Darum messiness man ein Bespeak senden lassen, wenn man einen Push anklickt und als Folge einen sogenannten SLOT aufrufen:Grosse Probleme hatte ich auch bei der Einführung der Regeln aus dem Konsolenprogramm. Da die Ausgabe auf die Konsole und die grafische Ausgabe sich barren unterscheiden, gladly das Programm zuerst nicht wunschgemäss. Anders war vor allem, dass bei der Konsolenversion die eine Seite, die am Zug war, ständig wieder aufgerufen wurde (in einer Schleife), bis ein korrekter Zug gemacht worden ist. Bei der grafischen Oberfläche hingegen musste nur mitgeteilt werden, ob der Zug richtig oder falsch ausgeführt wurde.

OOO steht für ein leeres Feld, die anderen Figuren werden benannt nach dem ersten Buchstaben ihres Namens, ihrer Farbe und ihrer Nummer (zum Bsp. SW2 steht für den zweiten schwarzen Impost).

Just fill out this form: