Forum: Detta börjar att bli pinsamt! :P

Forum huvudsida -> Programmering -> Detta börjar att bli pinsamt! :P

Sidor: 1

Till botten

Dark_Master 17:38 - 24:e April 2006 | Post #1
Medlem
Inlägg: 16


Skicka PM
Jag behöver hjälp hela tiden.. men som de sa på hjärnkontoret när jag var liten: "Frågar man inget får man inget veta!"

Jag har gjort övningen här: http://blinkenlights.se/articles/c++nyborjarguide/18/

Det är så att när man dödar ett monster (eller blir dödad) så sloknar bara skärmen. Man får alltså inte se någoting.. någon som vet vad man ska göra??

  1. //Detta är ett litet spel.. jag gör mycket komentarer så att ni ska fatta! :P
  2. //Includes filer som behövs!
  3. #include <iostream>
  4. #include <time>
  5. // Vilka funktioner som ska användas
  6. using std::cout; using std::cin;
  7. using std::string; using std::system;
  8. using std::srand; using std::rand; // För random funktionen
  9. //Skpar (deklarerar) globala funktioner
  10. string nytt_spel();
  11. int Level1(string *sName, int *iHp, int *iDmg_min, int iDmg_max);
  12. //Använder int level:
  13. int Level1(string *sName, int *iHp, int *iDmg_min, int *iDmg_max)
  14. {
  15. srand(time(0));
  16. bool bGoLevel1=true; //Visar att det är sant att du är i lvl ett, medans du är det.. :P
  17. string sCmd; //För att läsa in kommandorn, från menyer m.m
  18. int iCurrentHp = *iHp; // Spelarnens nuvarnade liv
  19. //Fiende variablar
  20. int iEType; //Fiendens typ
  21. int iEHp; //Fiendens liv
  22. int iEDmg_min; //Fiendens minimal skada
  23. int iEDmg_max; //Fiendens maximala skada
  24. string sEName; //Fiendens namn
  25. while (bGoLevel1) //Kör den understående kodsnuten så länge man är i lvl 1
  26. {
  27. system("cls"); //Rensar skärmen
  28. cout << "Välkomen till farsta banan!nnnn";
  29. cout << " Meny: ----nnn ";
  30. cout << "[H] Hitta fiende att slås mednnn [A]Avsluta speletnn ";
  31. cout << "Val:";
  32. cin >> sCmd;
  33. if (sCmd == "h" || sCmd == "H" )
  34. {
  35. iEType = rand() / (RAND_MAX / 3 + 1) + 1; //Slumpar ett tal från 1 -3, det finns tre fiender.
  36. if (iEType == 1)
  37. {
  38. sEName = "Giftiga bettan";
  39. iEHp = 4;
  40. iEDmg_min = 2;
  41. iEDmg_max = 3;
  42. }
  43. else if (iEType == 2)
  44. {
  45. sEName = "Huggorm";
  46. iEHp = 3;
  47. iEDmg_min = 1;
  48. iEDmg_max = 5;
  49. }
  50. else if (iEType == 3)
  51. {
  52. sEName = "Råttan";
  53. iEHp = 3;
  54. iEDmg_min = 2;
  55. iEDmg_max = 4;
  56. }
  57. while (true) //Körs tills någon skriver break;
  58. {
  59. cout << "Slåss mot fiende:";
  60. cout << "------------------";
  61. cout << "Du meet en " << sEName << "!";
  62. cout << "Fiendens liv: << iEHp << ";
  63. cout << "Dina liv: << iCurrentHp << ";
  64. cout << "Meny:";
  65. cout << "-----";
  66. cout << "Slå i [m]agen";
  67. cout << "Slå i [f]oten";
  68. cout << "Slå i [h]uvudet";
  69. cout << "Val:";
  70. cin >> sCmd;
  71. if (sCmd == "m" || sCmd == "M" )
  72. {
  73. if (iEType == 3) // Om det är en råtta så får den extra liv, den är alltså svår att döda genom att slå i magen
  74. iEHp+=2;
  75. else if (iEType == 2) // Om det är en huggorm så får den minus ett liv, den är alltså extra lätt att döda genom att slå i magen
  76. iEHp-=1;
  77. }
  78. else if (sCmd == "f" || sCmd == "F" )
  79. {
  80. if (iEType == 1) // Om det är en giftflyga så får den extra liv, den är alltså svår att döda genom att slå på foten
  81. iEHp+=10;
  82. else if (iEType == 3) // Om det är en råtta så får den minus ett liv, den är alltså extra lätt att döda genom att slå på foten
  83. iEHp-=1;
  84. }
  85. else if (sCmd == "h" || sCmd == "H" )
  86. {
  87. if (iEType == 2) // Om det är en huggorm så får den extra liv, den är alltså svår att döda genom att slå på huvudet
  88. iEHp+=2;
  89. else if (iEType == 1) // Om det är en giftflyga så får den minus ett liv, den är alltså extra lätt att döda genom att slå på huvudet
  90. iEHp-=1;
  91. }
  92. iEHp -= rand () / (RAND_MAX / *iDmg_max + 1) + *iDmg_min;
  93. if (iEHp <= 0) //Om fienden dör
  94. {
  95. cout << "Du dödade din fiende, bra gjort!!";
  96. break; //Avbryter while loopen
  97. }
  98. else
  99. {
  100. iCurrentHp -= rand() / (RAND_MAX / iEDmg_max +1) + iEDmg_min;
  101. if (iCurrentHp <= 0) // Om man dör
  102. {
  103. bGoLevel1 = false; // Slut på level 1, du dog
  104. iCurrentHp = *iHp; // ...terstället liven
  105. break;
  106. }
  107. }
  108. } // Slut på slåss mot fiende-loop
  109. }
  110. else if (sCmd == "a" || sCmd == "A" )
  111. {
  112. return 3; // Det här returneras om man inte vill spela mer i level 1
  113. }
  114. } // Slut på level1-loop
  115. return 2; //Om du dog av en fiende
  116. }
  117. string nytt_spel()
  118. {
  119. string sTmpName; //Lagrar temoprärt spelarens namn
  120. system ("cls"); // Rensar skärmen
  121. cout << "Valkommen till staden med de fula monstrerna! Va bered pa att farsvara dig! Skriv in ditt namn så kan vi börja:";
  122. cin >> sTmpName;
  123. return sTmpName;
  124. }
  125. int main()
  126. {
  127. //Följande är kopierat från ett standard bibliotek:
  128. // Deklarera variabler
  129. string sCmd; // Används för att avläsa användarens val i menyer mm
  130. string sName; // För att lagra namet på spelaren
  131. bool bGo=true; // En variabel som är true så länge muvudmeny-loopen ska köras
  132. int iTmp; // Variabel för temorära saker
  133. // Spelarens karaktärs variabler
  134. int iHp = 10; // Spelarens hälsoresurser
  135. int iDmg_min = 2; // Spelarens minimiskada
  136. int iDmg_max = 5; // Spelarens maximiskada
  137. //Slut på kopieringen från standard bibliotek
  138. while (bGo) //Kör loopen så länge BG är true
  139. {
  140. //Huvudmenyn
  141. cout << "#################################################";
  142. cout << "# #";
  143. cout << "# Hej ala glada, detta spel suger min stora feta kuk"" #nn";
  144. cout << "#################################################nn";
  145. cout << "Huvud meny:nn";
  146. "----------n";
  147. "[N]ytt speln";
  148. "[A]vslutan";
  149. "Val:n";
  150. cin >> sCmd;
  151. if (sCmd == "n" || "N" )
  152. {
  153. sName = nytt_spel(); // Skicka med namnvariabeln
  154. iTmp = Level1(&sName, &iHp, &iDmg_min, &iDmg_max);
  155. if (iTmp == 3)
  156. bGo = false;
  157. if (iTmp == 2)
  158. cout << "Du dog!";
  159. }
  160. else if (sCmd == "a" || sCmd == "A" )
  161. {
  162. break; //Bryt ut från huvudmenyn loopen!
  163. }
  164. } //Slut på while loopen
  165. cin.get();
  166. return 0;
  167. }


-------------------------
Hej alla glada människor!

Senast redigerad 18:19 - 24:e April 2006


Nissebosselasse 10:37 - 25:e April 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Anledningen till att ingen svarar kan vara för att koden i artikeln inte är särskilt strukturerad eller pedagogisk, eller ens C++-orienterad. Det säger jag inte för att taskig, men jag tror nog det till och med nämns i början av artikeln.

Bland annat:
  1. iEType = rand() / (RAND_MAX / 3 + 1) + 1; //Slumpar ett tal från 1 -3, det finns tre fiender.

...borde bytas ut mot aningen mer lättläst
  1. iEType = (rand() % 3) + 1; //Slumpar ett tal från 1 -3, det finns tre fiender.


Likaså:
  1. int Level1(string *sName, int *iHp, int *iDmg_min, int iDmg_max);

Varför skicka med som pekare? Jo, för att i funktionen kunna ändra värdena på argumenten direkt. Men i sann C++-anda borde de istället ha skickats med som referenser:
  1. int Level1(string &sName, int &iHp, int &iDmg_min, int iDmg_max);


Lite sådana småsaker, bland annat. Inte för att koden inte fungerar, men saker som gör att bland annat jag inte orkar sätta mig ner och gå igenom och skriva ett svar.

Bästa tipset är att hitta en tutorial från något annat ställe (en bok, månne?), eller om artikelförfattaren reviderar artikeln.

Men som du säger, fråga man inget får man ingenting veta! Smiley

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 10:48 - 25:e April 2006


Dark_Master 16:53 - 25:e April 2006 | Post #3
Medlem
Inlägg: 16


Skicka PM
    Citat av Nissebosselasse:
Anledningen till att ingen svarar kan vara för att koden i artikeln inte är särskilt strukturerad eller pedagogisk, eller ens C++-orienterad. Det säger jag inte för att taskig, men jag tror nog det till och med nämns i början av artikeln.


Ingen fara, jag skrev ju bara i princip av artiklen. Det är han/hon som skrev artiklen som kanske börjar gråta.. Smiley

-------------------------
Hej alla glada människor!



Independence 17:53 - 25:e April 2006 | Post #4
Administratör
Inlägg: 1800


Skicka PM
Det finns en mycket bättre C++-tutorial länkad från wikin: http://www2.park.se/~jf/manualer/c++-manual/book1.html
Den går igenom mycket mer saker, och är även den på svenksa. Troligtvis är den väl mer korrekt också skulle jag tro. Det är lite pga den jag inte orkat fixa till min artikel, men jag skulle kunna göra om min mer till någon sorts introduktion tror jag. Eller mer inriktad på spelprogrammering. Men det är nog bra att läsa den, och sedan skaffa en bok.

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

Vi är riddarna som säger fiskbulle!





Sidor: 1

Forum huvudsida -> Programmering -> Detta börjar att bli pinsamt! :P
Atom feed

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