From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- Bachelor/Prog2/Prakt1/index.htm | 186 +++++++++++++++++++++ .../Prakt1/prg2p1/mastermind/Debug/mastermind.ilk | Bin 0 -> 886637 bytes .../Prakt1/prg2p1/mastermind/Debug/mastermind.pch | Bin 0 -> 2040260 bytes .../Prakt1/prg2p1/mastermind/Debug/mastermind.pdb | Bin 0 -> 1363124 bytes .../Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.idb | Bin 0 -> 83028 bytes .../Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.pdb | Bin 0 -> 111517 bytes Bachelor/Prog2/Prakt1/prg2p1/mastermind/main.cpp | 73 ++++++++ .../Prog2/Prakt1/prg2p1/mastermind/mastermind.cpp | 0 .../Prog2/Prakt1/prg2p1/mastermind/mastermind.dsp | 108 ++++++++++++ .../Prog2/Prakt1/prg2p1/mastermind/mastermind.dsw | 33 ++++ .../Prog2/Prakt1/prg2p1/mastermind/mastermind.h | 0 .../Prog2/Prakt1/prg2p1/mastermind/mastermind.ncb | Bin 0 -> 50210 bytes .../Prog2/Prakt1/prg2p1/mastermind/mastermind.opt | Bin 0 -> 54462 bytes .../Prog2/Prakt1/prg2p1/mastermind/mastermind.plg | 33 ++++ 14 files changed, 433 insertions(+) create mode 100644 Bachelor/Prog2/Prakt1/index.htm create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.ilk create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pch create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pdb create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.idb create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.pdb create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/main.cpp create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.cpp create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsp create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsw create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.h create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.ncb create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.opt create mode 100644 Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.plg (limited to 'Bachelor/Prog2/Prakt1') diff --git a/Bachelor/Prog2/Prakt1/index.htm b/Bachelor/Prog2/Prakt1/index.htm new file mode 100644 index 0000000..4f896eb --- /dev/null +++ b/Bachelor/Prog2/Prakt1/index.htm @@ -0,0 +1,186 @@ + + + + + Praktikum 1 + +  + + + + + + + + + + +
 
FH Darmstadt  +
FB Informatik  +
Prof.Dr. H.P.Weber
+
Programmieren II +
Praktikum
+
+
1
+
+ +
+ + + + + +
Ziel: +Sie sollen die in Programmieren I erlernten Sprachelemente von C++ +(insbesondere Klassendefinition und Überladen von Operatoren) anwenden können. +
+ +
+
+ + + + + + + + + + + + +
+

1    MasterMind-Spiel

+Realisieren Sie eine objektorientierte Version des in den 70er-Jahren +des letzten Jahrhunderts beliebten Spieles +MasterMind.  +
    +
  • +In der Version für diese Aufgabe 'denkt sich' der Computer eine +vierstellige Zahl aus den Ziffern 1 bis 6 (Methode +makeDigitsToGuess im Klassendiagramm unten). Der Mensch rät sie. Jeden +Rateversuch bewertet der Computer, indem er angibt, wieviele Ziffern an der richtigen Stelle +genannt worden sind (locationRight) und wieviele sonst noch richtig genannt wurden, ohne +an der richtigen Stelle zu stehen (locationWrong). +
  • +
  • +Nehmen wir einmal an, der Computer hat sich die Zahl 1434 ausgedacht. +Ein Dialog könnte dann so aussehen:  +
    Mensch rät:  3654  Computer-Antwort: +1 +an der richtigen Stelle; sonst 1 richtig +
    Mensch rät:  4444  Computer-Antwort: +2 +an der richtigen Stelle; sonst 0 richtig +
  • +
  • +Neben der Standardvariante, bei der der Computer eine zu ratende Zahl +vorgibt, soll auch ein Testmodus möglich sein, bei dem vom Tester +eine beliebige vierstellige Zahl aus den Ziffern 1 bis 6 eingegeben werden +kann, die dann zu 'raten' ist. + +Überlegen Sie sich vor der Realisierung Ihrer Lösung +eine Reihe von Testfällen mit den zugehörigen Computer-Antworten. +Welche Fälle sind besonders kritisch? Berücksichtigen Sie bei +der Implementierung Ihrer Lösung auch diese kritischen Testfälle. +
  • +
+
+
    +
  • +Realisieren Sie anhand des folgenden Klassendiagramms eine Klasse +MastermindDigits, die die oben geschilderten +Anforderungen erfüllt (achten Sie dabei auch auf möglichst weitgehende +'const-correctness').
  • +
  • +Der (Konvertierungs-)Konstruktor erzeugt +ein dynamisches int-Array digits, dessen Elemente die einzelnen Ziffern der +vierstelligen int-Zahl enthalten. Er übernimmt diese int-Zahl als Parameter und +speichert die einzelnen Ziffern der Zahl in die Elemente von digits.
  • +
  • + Realisieren Sie außerdem die drei weiteren +Methoden/Operatoren, die Bestandteil jeder Klasse sein sollten, deren Objekte +Zeiger auf dynamisch zugewiesenen Speicher enthalten. (Sie sind im + Klassendiagramm unten nicht aufgeführt!) Dies sollen aber die +einzigen Ergänzungen der öffentlichen Schnittstelle sein.
    +
  • +
  • +Schreiben Sie ein Anwendungsprogramm, das den oben beschriebenen +Spielablauf und den Testmodus als Konsolenanwendung realisiert. Das Anwendungsprogramm +soll mit nur einem MastermindDigits-Objekt +arbeiten, von dem aus die Methoden der Klasse aufgerufen werden. Die +Nutzereingabe und der Vergleich soll daher mit int-Zahlen und den entsprechenden +Typ-Konvertierungen der MastermindDigits-Klasse +arbeiten.
  • +
+
+ + + + + + + + + + +
+
MastermindDigits
+
-digits: int*
+ ++MastermindDigits(int)
++makeDigitsToGuess(): void
++locationRight(MastermindDigits&): int
++locationWrong(MastermindDigits): int
++operator int() +
+
+ +
+
+
+
+ + + +
+

+2    Lösungsalgorithmus für MasterMind-Spiel (fakultativ)

+ + + +
In Aufgabe 1 wird das Mastermind-Spiel  in der +Form realisiert, dass ein menschlicher Benutzer eine vom Computer ausgedachte +Zahl rät. Jetzt soll der Computer eine Zahl raten, die sich der menschliche +Benutzer ausgedacht hat. +
    +
  • +Versehen Sie Ihre Lösung mit +einer Konsolen-Ausgabe und -Eingabe, über die ihr Programm seinen Tip ausgibt +und ein menschlicher Gegenspieler die Zahl der Ziffern an der richtigen +Stelle und die sonst noch richtigen Ziffern eingeben kann. +
  • +
  • +Wieviele Versuche benötigt Ihr Programm im Mittel, um eine Zahl zu raten? +Um Ihre Lösung besser testen zu können, lassen Sie den Computer auch die Rolle +des Benutzers übernehmen: Er denkt sich eine Zahl aus, die er dann zu erraten +versucht. Bestimmen Sie, wieviele Versuche hierbei im Mittel bei z.B. 10000 +Spielen gebraucht werden und wieviele Versuche ihr Programm dabei maximal +braucht.
  • +
  • + Anzustreben ist eine Lösung, die jedes Spiel gewinnt, d.h. mit maximal acht + Versuchen wird jede Zahl (mit vier Ziffern aus sechs möglichen) ermittelt, die sich der + menschliche Gegenspieler (oder der Rechner selbst) ausdenkt. +
  • +
+ + +
+ + +
+ + + +
  +
\ No newline at end of file diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.ilk b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.ilk new file mode 100644 index 0000000..21a3bcf Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.ilk differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pch b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pch new file mode 100644 index 0000000..b36b80f Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pch differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pdb b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pdb new file mode 100644 index 0000000..8338416 Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/mastermind.pdb differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.idb b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.idb new file mode 100644 index 0000000..c0885b9 Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.idb differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.pdb b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.pdb new file mode 100644 index 0000000..0d436a6 Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/Debug/vc60.pdb differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/main.cpp b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/main.cpp new file mode 100644 index 0000000..c981178 --- /dev/null +++ b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/main.cpp @@ -0,0 +1,73 @@ +#include +#include +#include +#include "mastermind.h" + +using std::cout; +using std::cin; +using std::endl; + +const int MAXROUND=8; + +void playRound(MastermindDigits&); + +int main() +{ + int menuSel=0; + int input=0; + + MastermindDigits game; + + srand(time(0)); + + do { + system ("cls"); + cout << "1: Spiel" << endl; + cout << "2: Testmodus" << endl; + cout << "Ende: beliebige Taste"<> menuSel; + switch (menuSel) + { + case 1 : + { + game.makeDigitsToGuess(); + playRound(game); + break; + } + case 2: + { + cout << "Please enter test values (1111 - 6666): "; + cin >> input; + MastermindDigits testGame(input); + playRound(testGame); + break; + } + default: menuSel=0; + } + + } while (menuSel!=0); + + return 0; +} + +void playRound(MastermindDigits& game) +{ + int tip; + int won=0; + int round=1; + + do { + cout << endl << "Ihr Tip: "; + cin >> tip; + MastermindDigits user(tip); + cout << "Position richtig: " << game.locationRight(user) << endl; + cout << "Ansonsten richtig: " << game.locationWrong(user) << endl; + if (game.locationRight(user)==4) + { + won=1; + cout << endl << "Sie haben gewonnen!" << endl; + system("pause"); + } + round++; + } while ((won==0) && (round <= MAXROUND)); +} diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.cpp b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.cpp new file mode 100644 index 0000000..e69de29 diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsp b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsp new file mode 100644 index 0000000..642caa2 --- /dev/null +++ b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsp @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="mastermind" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=mastermind - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "mastermind.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "mastermind.mak" CFG="mastermind - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "mastermind - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "mastermind - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "mastermind" +# PROP Scc_LocalPath "." +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mastermind - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "mastermind - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "mastermind - Win32 Release" +# Name "mastermind - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\main.cpp +# End Source File +# Begin Source File + +SOURCE=.\mastermind.cpp +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\mastermind.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsw b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsw new file mode 100644 index 0000000..580dad6 --- /dev/null +++ b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.dsw @@ -0,0 +1,33 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! + +############################################################################### + +Project: "mastermind"=.\mastermind.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + mastermind + . + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.h b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.h new file mode 100644 index 0000000..e69de29 diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.ncb b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.ncb new file mode 100644 index 0000000..1309382 Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.ncb differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.opt b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.opt new file mode 100644 index 0000000..3c43e3f Binary files /dev/null and b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.opt differ diff --git a/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.plg b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.plg new file mode 100644 index 0000000..33980de --- /dev/null +++ b/Bachelor/Prog2/Prakt1/prg2p1/mastermind/mastermind.plg @@ -0,0 +1,33 @@ + + +

+

Erstellungsprotokoll

+

+--------------------Konfiguration: mastermind - Win32 Debug-------------------- +

+

Befehlszeilen

+Erstellen der temporären Datei "C:\DOKUME~1\SVEN~1.HOM\LOKALE~1\Temp\RSP195.tmp" mit Inhalten +[ +/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/mastermind.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c +"D:\Studium\Prog2\Prakt1\prg2p1\mastermind\mastermind.cpp" +] +Creating command line "cl.exe @C:\DOKUME~1\SVEN~1.HOM\LOKALE~1\Temp\RSP195.tmp" +Erstellen der temporären Datei "C:\DOKUME~1\SVEN~1.HOM\LOKALE~1\Temp\RSP196.tmp" mit Inhalten +[ +kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/mastermind.pdb" /debug /machine:I386 /out:"Debug/mastermind.exe" /pdbtype:sept +.\Debug\main.obj +.\Debug\mastermind.obj +] +Erstellen der Befehlzeile "link.exe @C:\DOKUME~1\SVEN~1.HOM\LOKALE~1\Temp\RSP196.tmp" +

Ausgabefenster

+Kompilierung läuft... +mastermind.cpp +Linker-Vorgang läuft... + + + +

Ergebnisse

+mastermind.exe - 0 Fehler, 0 Warnung(en) +
+ + -- cgit v1.2.3