Forum: Kodfel - Nybörjarkursen

Forum huvudsida -> Programmering -> Kodfel - Nybörjarkursen

Sidor: 1

Till botten

Franzon 16:49 - 10:e Januari 2008 | Post #1
Medlem
Inlägg: 32


Skicka PM
Hej! Jag började intresera mej för C++ programering för nån vecka sedan så jag googlade lite efter guider. Det första jag hittar är en hänvisning till den här sidan. Jag följer den och hittar C++ nybörjar kursen. Nu har jag kommit till sissta steget men jag får det inte spelet att fungera, och jag förstår inte varförSmiley

felet verkar ligga på rad 107

  1. #include<iostream>
  2. #include<ctime>
  3.  
  4. using namespace std; //funktionen blir åtkomligt från hela programmet
  5.  
  6. string NyttSpel();
  7. int Levell(string &sName, int &iHp, int &iDmg_min, int &iDmg_max);
  8.  
  9. int Levell(string &sName, int &iHp, int &iDmg_min, int &iDmg_max)
  10. {
  11. bool bGoLevell= true; //den här ska vara true så länge man är i level 1
  12.  
  13. string sCmd; //för att läsa in kommandorn från menyer mm
  14. int iCurrentHp = iHp; //spelarens nuvarande HP. Man förlorar lite under varje fight
  15.  
  16. //fiendevariabler
  17. int iEType; //fiendens typ
  18. int iEHp; //fiendens HP
  19. int iEDmg_min; //fiendens minimum skada
  20. int iEDmg_max; //fiendens maxskada
  21. string sEName; //fiendens namn
  22.  
  23. while (bGoLevell) //kör den här kodsnutten så länge bGoLevell är true
  24. {
  25. srand(time(0)); //nytt frö för random-generatorn
  26.  
  27. system("cls"); //rensa skärmen
  28.  
  29. cout << "Ditt första uppdrag som monsterdödare!nMeny:n-----n[L]eta upp ett monster att slåss motn[A]vsluta speletnVal:n";
  30.  
  31. cin >> sCmd;
  32.  
  33. if (sCmd == "l" || sCmd == "L") //om man skriver med små bokstäver tar programmet det automatiskt som stora
  34. {
  35. sEName = "Giftfluga";
  36. iEHp = 3;
  37. iEDmg_min = 1;
  38. iEDmg_max = 2;
  39. }
  40. else if (iEType == 2)
  41. {
  42. sEName = "Huggorm";
  43. iEHp = 5;
  44. iEDmg_min = 2;
  45. iEDmg_max = 5;
  46. }
  47. else if (iEType == 3)
  48. {
  49. sEName = "Fet råtta";
  50. iEHp = 4;
  51. iEDmg_min = 2;
  52. iEDmg_max = 3;
  53. }
  54.  
  55. while (true) //kör oändligt (eller tills "break;" körs)
  56. {
  57. cout
  58. << "nSlåss mot fiende:n-------nDu möter en " << sEName << "!n"
  59. << "Fiendens HP: " << iEHp << "n"
  60. << "Din HP: " << iCurrentHp << "n"
  61. << "Attacker:n-----n[m]Magslagn[f]Fotkrossn[h]HeadbangnVal:n";
  62.  
  63. cin >> sCmd;
  64.  
  65. if (sCmd == "m" || sCmd == "M")
  66. {
  67. if (iEType == 3) //om det är en råtta får den extra liv, altså är den svår att döda genom att slå i magen
  68. iEHp+=2;
  69. else if (iEType == 2) //om det är en orm får den minus liv, den är altså lätt att döda genom magslag
  70. iEHp-=2;
  71. }
  72. else if (sCmd == "f" || sCmd == "F")
  73. {
  74. if (iEType == 2) //om det är en huggorm får den extra liv, altså är den svårare att döda genom fotkross
  75. iEHp+=1;
  76. else if (iEType == 1) //om det är en giftfluga får den minus liv, altså e den lättare att döda genom fotkross
  77. iEHp-=1;
  78. }
  79. else if (sCmd == "h" || sCmd == "H")
  80. {
  81. if (iEType == 2) // om det är en huggorm så får den extra liv, svårare att döda genom headbang
  82. iEHp+=1;
  83. else if (iEType == 1) //om det är en giftfluga får den minus ett liv, svårare att döda genom headbang
  84. iEHp-=1;
  85. }
  86.  
  87. iEHp -= rand() / (RAND_MAX / iDmg_max + 1) +iDmg_min;
  88.  
  89. if (iEHp <= 0) //om fienden dog
  90. {
  91. cout << "Du lyckades döda fienden!n";
  92. iCurrentHp = iHp; //återställa HP för sej själv
  93. break; //hoppar ur while loopen
  94. }
  95. else
  96. {
  97. iCurrentHp -= rand() / (RAND_MAX / iEDmg_max + 1) + iEDmg_min;
  98.  
  99. if (iCurrentHp <= 0) //om man dör
  100. {
  101. bGoLevell = false; //slut på level 1, du dog
  102. break;
  103. }
  104. }
  105. }//slut på fiendefight-loop
  106. }
  107. else if (sCmd == "a" || sCmd == "A")
  108. {
  109. return 3; //returneras om man inte vill spela mer i level 1
  110. }
  111. }//slut på levell-loop
  112.  
  113. return 2; //returneras om man dog av fiende
  114. }
  115.  
  116. string NyttSpel()
  117. {
  118. string sTmpName; // temporärt lagra spelarnamn, endast i denna funktion
  119. system("cls"); //rensa skärmen
  120.  
  121. cout << "Välkommen till Monsterkill!nSkriv in ditt namn så kan vi börja: ";
  122.  
  123. cin >> sTmpName;
  124.  
  125. return sTmpName;
  126. }
  127.  
  128. int main()
  129. {
  130. //variabler
  131. string sCmd; //används för att avläsa användarens val i menyer etc.
  132. string sName; //för att lagra namnet
  133. bool bGo= true; //variabel som är true så länge huvudmeny-loopen ska köras
  134. int iTmp; //variabel för temporära saker
  135.  
  136. //spelarens karaktärs variabler
  137. int iHp = 10; //hp
  138. int iDmg_min = 2; //min. skada
  139. int iDmg_max = 5;
  140.  
  141. while (bGo) // kör loopen så länge bGo är true
  142. {
  143. //huvudmeny
  144. cout
  145. << "#################################################n"
  146. << "# #n"
  147. << "# Monsterkill v1.0 #n"
  148. << "# #n"
  149. << "#################################################n"
  150. << "Huvudmeny:n---------n[N]nytt speln[A]avslutanVal:";
  151.  
  152. cin >> sCmd;
  153.  
  154. if (sCmd == "n" || sCmd == "N")
  155. {
  156. sName = NyttSpel(); //skicka namnvariabeln
  157. iTmp = Levell{sName, iHp, iDmg_min, iDmg_max);
  158.  
  159. if (iTmp == 3)
  160. bGo = false;
  161. if (iTmp == 2)
  162. cout << "Du dog!";
  163. }
  164. else if (sCmd == "a" || sCmd == "A")
  165. {
  166. break; //bryter ut från huvudmeny loopen
  167. }
  168. }//slut på while-loopen
  169.  
  170. cin.get();
  171. cin.get();
  172.  
  173. return 0;
  174. }


är tacksam för all hjälp

(verkar som om alla "\" i "\n" har försvunnit =S)


Senast redigerad 16:51 - 10:e Januari 2008


Smygis 18:25 - 10:e Januari 2008 | Post #2
Medlem
Inlägg: 90


Skicka PM
du använder else if utan någon if sats före

-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!



Franzon 18:42 - 10:e Januari 2008 | Post #3
Medlem
Inlägg: 32


Skicka PM
Tack, jag såg vad jag hade gjort för fel nuSmiley




Smygis 20:00 - 10:e Januari 2008 | Post #4
Medlem
Inlägg: 90


Skicka PM


-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!



FunkyChicken 00:54 - 11:a Januari 2008 | Post #5
Nyhetsredaktör
Inlägg: 800


Skicka PM
sådär ska man inte kunna göra... Oo




Franzon 02:19 - 12:a Januari 2008 | Post #6
Medlem
Inlägg: 32


Skicka PM
wtf? en tom post? eller har min webläsare fått spader?




Smygis 23:33 - 12:a Januari 2008 | Post #7
Medlem
Inlägg: 90


Skicka PM


-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!



FunkyChicken 00:46 - 13:e Januari 2008 | Post #8
Nyhetsredaktör
Inlägg: 800


Skicka PM
Huhu minns när ozamosi fick postlimit back in the daysSmiley




Sidor: 1

Forum huvudsida -> Programmering -> Kodfel - Nybörjarkursen
Atom feed

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