Zahlenraten Hilfe

  • C++
  • 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;
    6. int number;
    7. int random_number = 0;
    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. int max_versuche = 10;
    64. for(versuche = 1; versuche <= max_versuche; versuche++)
    65. {
    66. if((versuche > 1) && number > random_number)
    67. { cout << "Die Zahl ist kleiner!" << endl;
    68. }
    69. else if((versuche > 1) && number < random_number)
    70. { cout << "Die Zahl ist groesser!" << endl;
    71. }
    72. cout << "Versuch Nummer: " << versuche << endl;
    73. cout << "Wie lautet dein Tipp?" << endl;
    74. cin >> number;
    75. if(random_number == number)
    76. break;
    77. }
    78. Ende();
    79. }
    80. void Versuche_15()
    81. {
    82. cout << "Hoechste Zahl?" << endl;
    83. cin >> limit;
    84. random_number = (rand()%limit)+1;
    85. int max_versuche2 = 15;
    86. for(versuche = 1; versuche <= max_versuche2; versuche++)
    87. {
    88. if((versuche > 1) && number > random_number)
    89. cout << "Die Zahl ist kleiner!" << endl;
    90. else if((versuche > 1) && number < random_number)
    91. cout << "Die Zahl ist groesser!" << endl;
    92. cout << "Versuch Nummer: " << versuche << endl;
    93. cout << "Wie lautet dein Tipp?" << endl;
    94. cin >> number;
    95. if(random_number == number)
    96. break;
    97. }
    98. Ende();
    99. }
    100. void Versuche_20()
    101. {
    102. cout << "Hoechste Zahl?" << endl;
    103. cin >> limit;
    104. random_number = (rand()%limit)+1;
    105. int max_versuche3 = 20;
    106. for(versuche = 1; versuche <= max_versuche3; versuche++)
    107. {
    108. if((versuche > 1) && number > random_number)
    109. cout << "Die Zahl ist kleiner!" << endl;
    110. else if((versuche > 1) && number < random_number)
    111. cout << "Die Zahl ist groesser!" << endl;
    112. cout << "Versuch Nummer: " << versuche << endl;
    113. cout << "Wie lautet dein Tipp?" << endl;
    114. cin >> number;
    115. if(random_number == number)
    116. break;
    117. }
    118. Ende();
    119. }
    120. void Versuche_Unendlich()
    121. {
    122. cout << "Hoechste Zahl?" << endl;
    123. cin >> limit;
    124. random_number = (rand()%limit)+1;
    125. do
    126. {
    127. if((versuche > 0) && number > random_number)
    128. {
    129. cout << "Die Zahl ist kleiner!" << endl;
    130. }
    131. else if((versuche >0) && number < random_number)
    132. {
    133. cout << "Die Zahl ist groesser!" << endl;
    134. }
    135. versuche++;
    136. cout << "Versuche: Unendlich" << endl;
    137. cout << "Wie lautet dein Tipp?" << endl;
    138. cin >> number;
    139. }while(number != random_number);
    140. Ende();
    141. }
    142. void Versuche_Eigene()
    143. {
    144. cout << "Dein Versuchslimit?" << endl;
    145. cin >> versuche_eigene;
    146. cout << "Hoechste Zahl?" << endl;
    147. cin >> limit;
    148. random_number = (rand()%limit)+1;
    149. for(versuche = 1; versuche <= versuche_eigene; versuche++)
    150. {
    151. if((versuche > 1) && number > random_number)
    152. cout << "Die Zahl ist kleiner!" << endl;
    153. else if((versuche > 1) && number < random_number)
    154. cout << "Die Zahl ist groesser!" << endl;
    155. cout << "Versuch Nummer: " << versuche << endl;
    156. cout << "Wie lautet dein Tipp?" << endl;
    157. cin >> number;
    158. if(random_number == number)
    159. break;
    160. }
    161. Ende();
    162. }
    163. int Ende()
    164. {
    165. if(number == random_number)
    166. { system("cls");
    167. cout << "Versuche: "<< versuche << " Deine Hoechste Zahl: " << limit << "\n\n|Richtig! Die zu erratende Zahl war " << number << endl;
    168. cout << "|(N)ochmal?\n|(B)eenden?" << endl;
    169. cin >> Auswahl;
    170. switch(Auswahl)
    171. {
    172. case('n'):
    173. Neustart();
    174. case('b'):
    175. exit(0);
    176. default:
    177. cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
    178. Falsche_Eingabe_Ende();
    179. }
    180. }else
    181. {
    182. system("cls");
    183. cout << "Versuche: "<< versuche << " Deine Hoechste Zahl: " << limit << "\n\nSchade! Die zu erratende Zahl war " << random_number << endl;
    184. cout << "(N)eustart? \n(B)eenden?" << endl;
    185. cin >> Auswahl;
    186. switch(Auswahl)
    187. {
    188. case('n'):
    189. Neustart();
    190. case('b'):
    191. exit(0);
    192. default:
    193. cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
    194. Falsche_Eingabe_Ende();
    195. }
    196. }
    197. }
    198. void Falsche_Eingabe_Anfang()
    199. {
    200. cin >> Anfang;
    201. switch(Anfang)
    202. {
    203. case('a'):
    204. Versuche_Unendlich();
    205. case('b'):
    206. Versuche_10();
    207. case('c'):
    208. Versuche_15();
    209. case('d'):
    210. Versuche_20();
    211. case('e'):
    212. Versuche_Eigene();
    213. default:
    214. cout << "Falsche Eingabe!\n(A), (B) oder (C) oder (D) oder (E) in Kleinbuchstaben bitte" << endl;
    215. Falsche_Eingabe_Anfang();
    216. }
    217. }
    218. int Falsche_Eingabe_Ende()
    219. {
    220. cin >> Auswahl;
    221. switch(Auswahl)
    222. {
    223. case('n'):
    224. Neustart();
    225. case('b'):
    226. return 0;
    227. default:
    228. cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
    229. Falsche_Eingabe_Ende();
    230. }
    231. }
    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.