Forum: Highscore

Forum huvudsida -> Programmering -> Highscore

Sidor: 1

Till botten

jla 10:16 - 6:e Juli 2009 | Post #1
Medlem
Inlägg: 18


Skicka PM
Hej igen!

Har gjort ett litet gissningsspel med en highscore.
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <winable.h>
  4. #include <conio.h>
  5. #include <cstdlib>
  6. #include <ctime>
  7. using namespace std;
  8. int main()
  9. {
  10.  
  11. int i = 0;
  12. int diff;
  13. int guess;
  14. int guesses;
  15. int gum;
  16. char Do;
  17. int a = 0;
  18. int b = 0;
  19. int c = 0;
  20. do
  21. {
  22. i = 0;
  23. system("CLS");
  24. cout << "Choose difficulty 1(1-25), 2(1-50) or 3(1-100)" << endl;
  25. cin >> diff;
  26. if (diff == 1)
  27. gum = rand() % 25 + 1;
  28. else if (diff == 2)
  29. gum = rand() % 50 + 1;
  30. else if (diff == 3)
  31. gum = rand() % 100 + 1;
  32. system("CLS");
  33. cout << "How many gumballs are in the jar, guess: ";
  34. while(guess != gum)
  35. {
  36. cin >> guess;
  37. if (guess < gum)
  38. cout << "Too low" << endl;
  39. else if (guess > gum)
  40. cout << "Too high" << endl;
  41. i++;
  42. }
  43. if (diff == 1 && i > a)
  44. a = i;
  45. else if (diff == 2 && i > b)
  46. b = i;
  47. else if (diff == 3 && i > c)
  48. c = i;
  49. cout << "Congratz, you were right, it was " << gum << " in the jar.nIt took " << i << " guesses.n"
  50. << "The highscore of level one is: " << a << ". The highscore of level 2 is: " << b << ". the highscore of level 3 is: " << c << "." << endl
  51. << "Do you want to play again (y or n)?n";
  52. cin >> Do;
  53.  
  54. }while(Do == 'y' || Do == 'Y');
  55. return 0;
  56. }

Men highscoren försvinner efter varje gång som man stänger ner programmet. Finns det någon lösning?

Tack på förhand!

/jla




martin310 10:22 - 6:e Juli 2009 | Post #2
Medlem
Inlägg: 132


Skicka PM
Spara till fil.

-------------------------

Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad!





jla 10:51 - 6:e Juli 2009 | Post #3
Medlem
Inlägg: 18


Skicka PM
Tack, ett exempel??




Vitdom 11:56 - 6:e Juli 2009 | Post #4
Medlem
Inlägg: 71


Skicka PM
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <winable.h>
  4. #include <conio.h>
  5. #include <cstdlib>
  6. #include <ctime>
  7. #include <fstream>
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. int i = 0;
  14. int diff;
  15. int guess;
  16. int guesses;
  17. int gum;
  18. char Do;
  19. int a = 0;
  20. int b = 0;
  21. int c = 0;
  22. ifstream infile;
  23. ofstream outfile;
  24.  
  25. infile.open("highscores.txt");
  26. if(infile)
  27. {
  28. infile >> a >> b >> c;
  29. infile.close();
  30. }
  31.  
  32. do
  33. {
  34. i = 0;
  35. system("CLS");
  36. cout << "Choose difficulty 1(1-25), 2(1-50) or 3(1-100)" << endl;
  37. cin >> diff;
  38. if (diff == 1)
  39. gum = rand() % 25 + 1;
  40. else if (diff == 2)
  41. gum = rand() % 50 + 1;
  42. else if (diff == 3)
  43. gum = rand() % 100 + 1;
  44.  
  45. system("CLS");
  46. cout << "How many gumballs are in the jar, guess: ";
  47. while(guess != gum)
  48. {
  49. cin >> guess;
  50. if (guess < gum)
  51. cout << "Too low" << endl;
  52. else if (guess > gum)
  53. cout << "Too high" << endl;
  54. i++;
  55. }
  56.  
  57. if (diff == 1 && i < a || !a)
  58. a = i;
  59. else if (diff == 2 && i < b || !b)
  60. b = i;
  61. else if (diff == 3 && i < c || !c)
  62. c = i;
  63. cout << "Congratz, you were right, it was " << gum << " in the jar.nIt took " << i << " guesses.n"
  64. << "The highscore of level one is: " << a << ". The highscore of level 2 is: " << b << ". the highscore of level 3 is: " << c << "." << endl
  65. << "Do you want to play again (y or n)?n";
  66.  
  67. outfile.open("highscores.txt");
  68. outfile << a << ' ' << b << ' ' << c;
  69. outfile.close();
  70.  
  71. cin >> Do;
  72. }while(Do == 'y' || Do == 'Y');
  73.  
  74. return 0;
  75. }


De satserna jag lade till var:
  1. ifstream infile;
  2. ofstream outfile;
  3.  
  4. infile.open("highscores.txt");
  5. if(infile)
  6. {
  7. infile >> a >> b >> c;
  8. infile.close();
  9. }
  10.  
  11. ...
  12.  
  13. outfile.open("highscores.txt");
  14. outfile << a << ' ' << b << ' ' << c;
  15. outfile.close();


Sedan fixade jag en bugg åt dig:
  1. if (diff == 1 && i > a)
  2. a = i;
  3. else if (diff == 2 && i > b)
  4. b = i;
  5. else if (diff == 3 && i > c)
  6. c = i;
  7.  
  8. NY KOD:
  9.  
  10. if (diff == 1 && i < a || !a)
  11. a = i;
  12. else if (diff == 2 && i < b || !b)
  13. b = i;
  14. else if (diff == 3 && i < c || !c)
  15. c = i;

Först kollar du om antalet gissningar var mer en rekordet och om det är det så sätter du rekordet högre, när det egentligen ska vara lägre.


-------------------------



Senast redigerad 19:21 - 6:e Juli 2009


Vitdom 14:55 - 6:e Juli 2009 | Post #5
Medlem
Inlägg: 71


Skicka PM
Men herregud!! Nu får någon admin ta och fixa så att man kan ändra sina inlägg!!!!

Fel fixat i kod:

  1. #include <iostream>
  2. #include <windows.h>
  3. #include <winable.h>
  4. #include <conio.h>
  5. #include <cstdlib>
  6. #include <ctime>
  7. #include <fstream>
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. int i = 0;
  14. int diff;
  15. int guess;
  16. int guesses;
  17. int gum;
  18. char Do;
  19. int a = 0;
  20. int b = 0;
  21. int c = 0;
  22. ifstream infile;
  23. ofstream outfile;
  24.  
  25. infile.open("highscores.txt");
  26. if(infile)
  27. {
  28. infile >> a >> b >> c;
  29. infile.close();
  30. }
  31.  
  32. do
  33. {
  34. i = 0;
  35. system("CLS");
  36. cout << "Choose difficulty 1(1-25), 2(1-50) or 3(1-100)" << endl;
  37. cin >> diff;
  38. if (diff == 1)
  39. gum = rand() % 25 + 1;
  40. else if (diff == 2)
  41. gum = rand() % 50 + 1;
  42. else if (diff == 3)
  43. gum = rand() % 100 + 1;
  44.  
  45. system("CLS");
  46. cout << "How many gumballs are in the jar, guess: ";
  47. while(guess != gum)
  48. {
  49. cin >> guess;
  50. if (guess < gum)
  51. cout << "Too low" << endl;
  52. else if (guess > gum)
  53. cout << "Too high" << endl;
  54. i++;
  55. }
  56.  
  57. if (diff == 1 && (i < a || !a))
  58. a = i;
  59. else if (diff == 2 && (i < b || !b))
  60. b = i;
  61. else if (diff == 3 && (i < c || !c))
  62. c = i;
  63. cout << "Congratz, you were right, it was " << gum << " in the jar.nIt took " << i << " guesses.n"
  64. << "The highscore of level one is: " << a << ". The highscore of level 2 is: " << b << ". the highscore of level 3 is: " << c << "." << endl
  65. << "Do you want to play again (y or n)?n";
  66.  
  67. outfile.open("highscores.txt");
  68. outfile << a << ' ' << b << ' ' << c;
  69. outfile.close();
  70.  
  71. cin >> Do;
  72. }while(Do == 'y' || Do == 'Y');
  73.  
  74. return 0;
  75. }


De satserna jag lade till var:
  1. ifstream infile;
  2. ofstream outfile;
  3.  
  4. infile.open("highscores.txt");
  5. if(infile)
  6. {
  7. infile >> a >> b >> c;
  8. infile.close();
  9. }
  10.  
  11. ...
  12.  
  13. outfile.open("highscores.txt");
  14. outfile << a << ' ' << b << ' ' << c;
  15. outfile.close();


Sedan fixade jag en bugg åt dig:
  1. if (diff == 1 && i > a)
  2. a = i;
  3. else if (diff == 2 && i > b)
  4. b = i;
  5. else if (diff == 3 && i > c)
  6. c = i;
  7.  
  8. NY KOD:
  9.  
  10. if (diff == 1 && (i < a || !a))
  11. a = i;
  12. else if (diff == 2 && (i < b || !b))
  13. b = i;
  14. else if (diff == 3 && (i < c || !c))
  15. c = i;

Först kollar du om antalet gissningar var mer en rekordet och om det är det så sätter du rekordet högre, när det egentligen ska vara lägre.

-------------------------





jla 17:32 - 6:e Juli 2009 | Post #6
Medlem
Inlägg: 18


Skicka PM
Tack!!!




HärJ 17:56 - 6:e Juli 2009 | Post #7
Moderator
Inlägg: 1198


Skicka PM
    Citat av Vitdom:
Men herregud!! Nu får någon admin ta och fixa så att man kan ändra sina inlägg!!!!

Det finns en ändra-länk på alla inlägg du har gjort, använd denSmiley

Dessutom tycker jag att du kan vara lite mindre aggressiv.

-------------------------
Tänk om jag vore en skalärprodukt!



ozamosi 18:13 - 6:e Juli 2009 | Post #8
Administratör
Inlägg: 1129


Skicka PM
Imponerande att lyckas gnälla över hans ton, samtidigt som du totalt misslyckas med att ens titta på vad han skriver, för att notera problemet som orsakar hans fullt befogade irritation.

-------------------------
Ljusblå

Senast redigerad 18:15 - 6:e Juli 2009


HärJ 18:56 - 6:e Juli 2009 | Post #9
Moderator
Inlägg: 1198


Skicka PM
Det vore trevligt om du kunde upplysa om vad det är för problem. Som jag tolkar det är det redigering av inlägg i allmänhet, vilket oz inte verkar hålla med om.
Har därför redigerat inlägget några gånger utan att lyckats generera några synliga fel.

Enlight me!Smiley

-------------------------
Tänk om jag vore en skalärprodukt!



Vitdom 20:47 - 6:e Juli 2009 | Post #10
Medlem
Inlägg: 71


Skicka PM


Som man kan se på bilden så är ändra-länken någonstans(någonstans...). Och ja, jag är inloggad.

Upplösningen jag använder är 1280x1024.

Använder Windows XP Home SP3 Svensk, Firefox 3.5 svensk. Båda 32-bitar.

-------------------------



Senast redigerad 20:48 - 6:e Juli 2009


HärJ 20:56 - 6:e Juli 2009 | Post #11
Moderator
Inlägg: 1198


Skicka PM
jaha!
Den gamla buggen, trodde den hade löst sig, men då är det nog bara Opera som fixar det automagiskt.
,,ndra-länken finns där, den syns bara inte pga för utsträkt fönster.

-------------------------
Tänk om jag vore en skalärprodukt!



martin310 21:09 - 6:e Juli 2009 | Post #12
Medlem
Inlägg: 132


Skicka PM
IE too.

-------------------------

Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad!





Sidor: 1

Forum huvudsida -> Programmering -> Highscore
Atom feed

Du får inte posta i den här tråden | Till toppen