Forum huvudsida -> Programmering -> En fråga om del 18 i nybörjar guiden!
Sidor: 1
Zpace | 18:09 - 18:e Februari 2007 | Post #1 | |
Medlem Inlägg: 2 Skicka PM |
Hej! Jag använder Dev C++ och har kommit till den sista delen av C++ nybörjarguiden. Allt har fungerat ända tills nu. Så, detta är mina felmeddelanden när jag ska kompilera: C:\Documents and Settings\Yeah Good Luck\Mina dokument\Mina C++ Program\Spelet.cpp In function `int Level1(std::string&, int&, int&, int&)': 27 C:\Documents and Settings\Yeah Good Luck\Mina dokument\Mina C++ Program\Spelet.cpp `iHp' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) C:\Documents and Settings\Yeah Good Luck\Mina dokument\Mina C++ Program\Spelet.cpp In function `int main()': 173 C:\Documents and Settings\Yeah Good Luck\Mina dokument\Mina C++ Program\Spelet.cpp `iHp' undeclared (first use this function) Och här är min källkod: //Bibliotek #include <iostream> #include <ctime> #include <string> // Vilka funktioner som ska användas using std::cout; using std::cin; using std::string; using std::system; using std::srand; using std::rand; //Deklarera funktioner så att de kan användas i hela programmet string NyttSpel(); int Level1(string &sName, int &iHP, int &iDmg_min, int &iDmg_max); int Level1(string &sName, int &iHP, int &iDmg_min, int &iDmg_max) { srand(time(0)); bool bGoLevel1= true; //Den här ska vara true så länge man är i level 1 string sCmd; //För att läsa in kommandon från menyer m.m int iCurrentHp =iHp; //Spelarens nuvarande liv, man dör lite när man slåss mot monster men man ska få tillbaka liven efter fighten //Fiende Variabler int iEType; //Fiendens Typ int iEHp; //Fiendens liv int iEDmg_min; //Fiendens minimum skada int iEDmg_max; //Fiendens maximum skada string sEName; //Fiendens namn while (bGoLevel1) //Kör den här programsnutten så länge bool bGoLevel1 är TRUE { system("cls"); //Rensa skärmen cout << "Välkommen till bana 1!\nMeny:\n-----\n[H]itta en fiende att slåss mot\n[A]vsluta spelet\nVal:\n"; cin >> sCmd; if (sCmd == "h" || sCmd == "H") { iEType = rand() / (RAND_MAX / 3 + 1) + 1; // Slumpa ett tal från 1 till 3. Det ska finnas 3 olika typer av fiender på första banan. if (iEType == 1) { sEName = "Giftfluga"; iEHp = 4; iEDmg_min = 2; iEDmg_max = 3; } else if (iEType == 2) { sEName = "Huggorm"; iEHp = 5; iEDmg_min = 2; iEDmg_max = 5; } else if (iEType == 3) { sEName = "Råtta"; iEHp = 3; iEDmg_min = 1; iEDmg_max = 2; } while (true) //Kör till "break;" körs! { cout << "\nSlåss mot fiende:\n------------------\nDu möter en " << sEName << "!\n" << "Fiendens liv: " << iEHp << "\n" << "Dina liv: " << iCurrentHp << "\n" << "Meny:\n-----\nSlå i [m]agen\nSlå i [f]oten\nSlå i [h]uvudet\nVal:\n"; cin >> sCmd; if (sCmd == "m" || sCmd == "M") { if (iEType == 3) //Om det är en råtta så får den extra liv, den är svår att döda med magslag ^^ iEHp+=1; else if (iEType == 2) //Om det är en huggorm så förlorar den extra liv iEHp-=2; } else if (sCmd == "f" || sCmd == "F") { if (iEType == 1) //Om det är en giftfluga så får den extra liv, den är svår att döda med fotslag ^^ iEHp+=1; else if (iEType == 3) //Om det är en råtta så förlorar den extra liv iEHp-=2; } else if (sCmd == "h" || sCmd == "H") { if (iEType == 2) //Om det är en huggorm så får den extra liv, den är svår att döda med magslag ^^ iEHp+=1; else if (iEType == 1) //Om det är en giftfluga så förlorar den extra liv iEHp-=2; } iEHp -= rand() / (RAND_MAX / iDmg_max + 1) + iDmg_min; if (iEHp <= 0) // Om fienden dog { cout << "Du dödade monstret, bra gjort!\n"; break; //Hoppa ur while loopen } else { iCurrentHp -= rand() / (RAND_MAX / iEDmg_max + 1) + iEDmg_min; if (iCurrentHp <= 0) //Om man dör { bGoLevel1 = false; //Slut på level 1, du dog iCurrentHp = iHP; //...terställer liven break; } } } //Slut på slåss mot fiende loop } else if (sCmd == "a" || sCmd == "A") { return 3; //Det här returneras om man inte vill spela längre på level 1 } }//Slut på level1 loop return 2; //Det här returneras om man dör } string NyttSpel() { string sTmpName; //Variabel för att temporärt spara spelarens namn, den finns bara i denna funktionen. system("cls"); //rensa skärmen cout << "Välkommen till mitt första spel!\nSkriv in ditt namn så att vi kan börja: "; cin >> sTmpName; return sTmpName; } int main() { //Deklarera variabler string sCmd; //Används för att läsa av spelarens val i menyer string sName; //För att lagra namnet på spelaren bool bGo= true; //En variabel som är true så länge muvudmeny-loopen ska köras+ int iTmp; //Variabel för temporära saker //Spelarens karaktärs variabler int iHP = 10; // Spelarens HP int iDmg_min = 2; //Spelarens Minsta skada int iDmg_max = 5; //Spelarens maximum skada while (bGo) //Kör loopen så länge bGo är TRUE { //Huvudmenyn cout << "#################################################\n" << "# #\n" << "# Skogen med de elaka monstrena spelet v1.0 #\n" << "# #\n" << "#################################################\n" << "Huvud meny:\n-----------\n[N]ytt spel\n[A]vsluta\nVal:"; cin >> sCmd; if (sCmd == "n" || sCmd == "N") { sName = NyttSpel(); //Skicka med namnvariablen iTmp = Level1(sName, iHp, iDmg_min, iDmg_max); if (iTmp == 3) bGo = false; if (iTmp == 2) cout << "DU DOG, GAME OVER!"; } else if (sCmd == "a" || sCmd == "A") { break; //Bryt ut från huvudmeny loopen } }//Slut på while loopen cin.get(); cin.get(); return 0; } Så varför uppkommer dessa fel? Tacksam för svar! //Zpace |
Independence | 18:14 - 18:e Februari 2007 | Post #2 | |
Administratör Inlägg: 1800 Skicka PM |
Denna rad i main-funktionen:
Det ska vara iHp, med litet p, istället för iHP. Små detaljer som man enkelt missar ------------------------- Vi är riddarna som säger fiskbulle! |
Zpace | 18:29 - 18:e Februari 2007 | Post #3 | |
Medlem Inlägg: 2 Skicka PM |
Ojsan , tack så mycket! Hade visst gjort det felet på flera ställen. Men nu undrar jag bara hur jag fixar till så att man måste trycka på enter efter att man har vunnit över ett monster. Eftersom man inte hinner se "Grattis du spöade monstret". |
NetNinja | 19:22 - 18:e Februari 2007 | Post #4 | |
Medlem Inlägg: 116 Skicka PM |
Kommandot system("pause"); somligger i <cstdlib> e ganska bra... -------------------------
|
Independence | 21:25 - 18:e Februari 2007 | Post #5 | |
Administratör Inlägg: 1800 Skicka PM |
system("pause"); fungerar som sagt bara i DOS-kloner, en snyggare lösning är:
Där du vill ha pausen. ------------------------- Vi är riddarna som säger fiskbulle! |
Sidor: 1
Forum huvudsida -> Programmering -> En fråga om del 18 i nybörjar guiden!
Du får inte posta i den här tråden | Till toppen
Datum
2024-04-28 11:15
Vecka: 17
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.