Zahlenraten Hilfe

  • C++

  • Strichcode
  • 4578 Aufrufe 1 Antwort

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zahlenraten Hilfe

    Hey Leute, ich bin neu hier im Forum und kenne die Forenregel nicht so gu t:O
    und erst "Anfänger" im C++ Bereich
    ich könnte hilfe bei meinem Spiel "Zahlenraten" Gebrauchen, klappt alles wunderbar, bis auf die Tatsache, dass wenn ich anstatt einer Zahl ein Buchstabe eingebe, das ganze Spiel sozusagen zerstört.
    Benutze mit Microsoft Visual C++ 2010 Express


    C-Quellcode

    1. #include <iostream>
    2. #include <ctime>
    3. #include <cstdlib>
    4. using namespace std;
    5. int limit; // Sagt dem Programm, es kann die Variable "limit" benutzen
    6. int number; // Sagt dem Programm, es kann die Variable "number" benutzen und gibt ihr den änderbahren wert 0 //
    7. int random_number = 0; // Sagt dem Programm, es kann die Variable "random_number" benutzen // Die Zufällig generierte Zahl
    8. int versuche_eigene;
    9. int versuche;
    10. int main();
    11. int Ende();
    12. void Falsche_Eingabe_Anfang();
    13. int Falsche_Eingabe_Ende();
    14. char Auswahl;
    15. char Anfang;
    16. int Neustart();
    17. void Versuche_10();
    18. void Versuche_15();
    19. void Versuche_20();
    20. void Versuche_Unendlich();
    21. void Versuche_Eigene();
    22. int main()
    23. {
    24. srand((unsigned)time(0));
    25. Neustart();
    26. }
    27. int Neustart()
    28. {
    29. system("cls");
    30. cout << "|*************************|" << endl;
    31. cout << "| Zahlenraten |" << endl;
    32. cout << "| By Fabian Hoch |" << endl;
    33. cout << "| NWT Projekt |" << endl;
    34. cout << "|*************************|" << endl;
    35. int versuche = 0;
    36. cout << "Bitte Nur!! Kleinbuchstaben!! und kein Buchstabe anstatt Zahl eingeben!" << endl;
    37. cout << "Unendlich Versuche? (A) \n10 Versuche? (B)\n15 Versuche? (C)\n20 Versuche? (D)\nEigene Versuchsanzahl? (E)\nBeenden? (F)" << endl;
    38. cin >> Anfang;
    39. switch(Anfang)
    40. {
    41. case('a'):
    42. Versuche_Unendlich();
    43. case('b'):
    44. Versuche_10();
    45. case('c'):
    46. Versuche_15();
    47. case('d'):
    48. Versuche_20();
    49. case('e'):
    50. Versuche_Eigene();
    51. case('f'):
    52. return 0;
    53. default:
    54. cout << "Falsche Eingabe!\n(A), (B) oder (C) oder (D) oder (E) in Kleinbuchstaben bitte" << endl;
    55. Falsche_Eingabe_Anfang();
    56. }
    57. }
    58. void Versuche_10()
    59. {
    60. cout << "Hoechste Zahl?" << endl;
    61. cin >> limit;
    62. random_number = (rand()%limit)+1;
    63. //10 Versuche
    64. int max_versuche = 10;
    65. for(versuche = 1; versuche <= max_versuche; versuche++)
    66. {
    67. if((versuche > 1) && number > random_number)
    68. { cout << "Die Zahl ist kleiner!" << endl;
    69. }
    70. else if((versuche > 1) && number < random_number)
    71. { cout << "Die Zahl ist groesser!" << endl;
    72. }
    73. cout << "Versuch Nummer: " << versuche << endl;
    74. //cout << random_number << endl;
    75. cout << "Wie lautet dein Tipp?" << endl;
    76. cin >> number;
    77. if(random_number == number)
    78. break;
    79. }
    80. Ende();
    81. }
    82. void Versuche_15()
    83. {
    84. //15 Versuche
    85. cout << "Hoechste Zahl?" << endl;
    86. cin >> limit;
    87. random_number = (rand()%limit)+1;
    88. int max_versuche2 = 15;
    89. for(versuche = 1; versuche <= max_versuche2; versuche++)
    90. {
    91. if((versuche > 1) && number > random_number)
    92. cout << "Die Zahl ist kleiner!" << endl;
    93. else if((versuche > 1) && number < random_number)
    94. cout << "Die Zahl ist groesser!" << endl;
    95. cout << "Versuch Nummer: " << versuche << endl;
    96. //cout << random_number << endl;
    97. cout << "Wie lautet dein Tipp?" << endl;
    98. cin >> number;
    99. if(random_number == number)
    100. break;
    101. }
    102. Ende();
    103. }
    104. void Versuche_20()
    105. {
    106. cout << "Hoechste Zahl?" << endl;
    107. cin >> limit;
    108. random_number = (rand()%limit)+1;
    109. int max_versuche3 = 20;
    110. for(versuche = 1; versuche <= max_versuche3; versuche++)
    111. {
    112. if((versuche > 1) && number > random_number)
    113. cout << "Die Zahl ist kleiner!" << endl;
    114. else if((versuche > 1) && number < random_number)
    115. cout << "Die Zahl ist groesser!" << endl;
    116. cout << "Versuch Nummer: " << versuche << endl;
    117. //cout << random_number << endl;
    118. cout << "Wie lautet dein Tipp?" << endl;
    119. cin >> number;
    120. if(random_number == number)
    121. break;
    122. }
    123. Ende();
    124. }
    125. void Versuche_Unendlich()
    126. {
    127. // Unendlich Versuche
    128. cout << "Hoechste Zahl?" << endl;
    129. cin >> limit;
    130. random_number = (rand()%limit)+1;
    131. do
    132. {
    133. if((versuche > 0) && number > random_number)
    134. {
    135. cout << "Die Zahl ist kleiner!" << endl;
    136. }
    137. else if((versuche >0) && number < random_number)
    138. {
    139. cout << "Die Zahl ist groesser!" << endl;
    140. }
    141. versuche++;
    142. cout << "Versuche: Unendlich" << endl;
    143. //cout << random_number << endl;
    144. cout << "Wie lautet dein Tipp?" << endl;
    145. cin >> number;
    146. }while(number != random_number);
    147. Ende();
    148. }
    149. void Versuche_Eigene()
    150. {
    151. cout << "Dein Versuchslimit?" << endl;
    152. cin >> versuche_eigene;
    153. cout << "Hoechste Zahl?" << endl;
    154. cin >> limit;
    155. random_number = (rand()%limit)+1;
    156. for(versuche = 1; versuche <= versuche_eigene; versuche++)
    157. {
    158. if((versuche > 1) && number > random_number)
    159. cout << "Die Zahl ist kleiner!" << endl;
    160. else if((versuche > 1) && number < random_number)
    161. cout << "Die Zahl ist groesser!" << endl;
    162. cout << "Versuch Nummer: " << versuche << endl;
    163. //cout << random_number << endl;
    164. cout << "Wie lautet dein Tipp?" << endl;
    165. cin >> number;
    166. if(random_number == number)
    167. break;
    168. }
    169. Ende();
    170. }
    171. int Ende()
    172. {
    173. if(number == random_number)
    174. { system("cls");//cls ist ein batch Befehl und beudeted "clear screen", kann aber durch den c++ befehl system() in c++ "umgewandelt" werde
    175. cout << "Versuche: "<< versuche << " Deine Hoechste Zahl: " << limit << "\n\n|Richtig! Die zu erratende Zahl war " << number << endl;
    176. cout << "|(N)ochmal?\n|(B)eenden?" << endl;
    177. cin >> Auswahl;
    178. switch(Auswahl)
    179. {
    180. case('n'):
    181. Neustart();
    182. case('b'):
    183. exit(0);
    184. default:
    185. cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
    186. Falsche_Eingabe_Ende();
    187. }
    188. }else //wenn du's nicht geshafft hast
    189. {
    190. system("cls");
    191. cout << "Versuche: "<< versuche << " Deine Hoechste Zahl: " << limit << "\n\nSchade! Die zu erratende Zahl war " << random_number << endl;
    192. cout << "(N)eustart? \n(B)eenden?" << endl;
    193. cin >> Auswahl;
    194. switch(Auswahl)
    195. {
    196. case('n')://wenn "c" in das textfeld eingegeben wurde
    197. Neustart();
    198. case('b'):
    199. exit(0);
    200. default:
    201. cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
    202. Falsche_Eingabe_Ende();
    203. }
    204. }
    205. }
    206. void Falsche_Eingabe_Anfang()
    207. {
    208. cin >> Anfang;
    209. switch(Anfang)
    210. {
    211. case('a'):
    212. Versuche_Unendlich();
    213. case('b'):
    214. Versuche_10();
    215. case('c'):
    216. Versuche_15();
    217. case('d'):
    218. Versuche_20();
    219. case('e'):
    220. Versuche_Eigene();
    221. default:
    222. cout << "Falsche Eingabe!\n(A), (B) oder (C) oder (D) oder (E) in Kleinbuchstaben bitte" << endl;
    223. Falsche_Eingabe_Anfang();
    224. }
    225. }
    226. int Falsche_Eingabe_Ende()
    227. {
    228. cin >> Auswahl;
    229. switch(Auswahl)
    230. {
    231. case('n')://wenn "c" in das textfeld eingegeben wurde
    232. Neustart();
    233. case('b'):
    234. return 0;//return 0 beendet das Programm sofort
    235. default:
    236. cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
    237. Falsche_Eingabe_Ende();
    238. }
    239. }
    Alles anzeigen





    ich weiß, der code ist sehr lang, wollte noch ein Spoiler oder so einfügen, ging aber nicht =(

    && Gehört zwar nicht zu meinen Dringentsten problemen, aber ich will ein icon für meine Anwendung erstellen, hab schon alles gemacht, aber der compiler sagt mir, ich müsse ein 3.00 format bild haben, ich hab aber anscheinend nur ein 2.x format.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Strichcode ()

  • Der Code ist so lang, weil viel Redundanz vorkommt. Wenn Du einen Codeblock gleich oder ähnlich mehr als einmal schreiben musst, ist eine Auslagerung meist sinvoll.

    Zu Deinem Fehler: Ich sehe keine Eingabeprüfung. Der Code erwartet eine Ganzzahl, lässt aber jede Eingabe zu.