Forum: Hjälp med hängman

Forum huvudsida -> Projekt -> Hjälp med hängman

Sidor: 1

Till botten

SMiskas 10:22 - 31:a Januari 2008 | Post #1
Medlem
Inlägg: 4


Skicka PM
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void meny();
void delay(int secs);
void starta_spel();
void gissad_bokstav(string visa_ordet, string ordet, string felgissningutskrift, int liv, char gissadbokstav);
void felgissningutskrift(char gissadbokstav);
void gubbe(int liv);

int main()
{
cout << "Hey! Välkommen till hangman! =) n";

meny();

starta_spel();


system("pause");
}

void starta_spel()
{
char gissadbokstav;
string ordet;
string visa_ordet = "";
string felgissningutskrift = "";
int liv = 0;

cin.ignore(1000, ''n'');
cout << "Skriv in hemliga ordet: n";
getline(cin, ordet);
cin.ignore(1000, ''n'');
system("cls");

visa_ordet.append(ordet.length(), ''*'');

cout << visa_ordet << endl;

while (liv < 11)
{
gissad_bokstav(visa_ordet, ordet, felgissningutskrift, liv, gissadbokstav);
}
}

void gissad_bokstav(string visa_ordet, string ordet, string felgissningutskrift, int liv, char gissadbokstav)
{
cin.ignore(1000, ''n'');
cout << "Gissa på en bokstav: n";
cin >> gissadbokstav;
cin.ignore(1000, ''n'');

if ((signed)ordet.find(gissadbokstav, 0) > -1)
{
for (int i = 0; i < ordet.length(); i ++)
{
if (ordet.at(i) == gissadbokstav)
{
visa_ordet.at(i) = gissadbokstav;
}
}
}
else
{
liv ++;
//funktionen till gubben//
//allt som ska göras om man skriver fel bokstav
felgissningutskrift = felgissningutskrift + gissadbokstav;
}

for (int i = 0; i <= liv; i++)
{
void gubbe(int liv);
}

cout << endl << visa_ordet << endl;
cout << "Du har gissat på: " << felgissningutskrift << endl;
}
void gubbe(int liv)
{
switch(liv)
{
case 0:
system("cls");
cout << "Komigen bra jobbat gubben, fortsätt så här!";
case 1:
system("cls");
cout << "n n n n n n n n n / \ n / \ n ";
case 2:
system("cls");
cout << "n n n n n n n n ____ ___n / \ n / \ n ";
case 3:
system("cls");
cout << "n n n n n n n n ____|___n / \ n / \ n ";
case 4:
system("cls");
cout << "n n | n | n | n | n |n |n ____|___n / \ n / \ n ";
case 5:
system("cls");
cout << "n _______n | n | n | n | n |n |n ____|___n / \ n / \ n ";
case 6:
system("cls");
cout << "n _______n | / n |/ n | n | n |n |n ____|___n / \ n / \ n ";
case 7:
system("cls");
cout << "n _______n | / |n |/ n | n | n |n |n ____|___n / \ n / \ n ";
case 8:
system("cls");
cout << "n _______n | / |n |/ O < Bara 3 liv kvar!Smiley n | n | n |n |n ____|___n / \ n / \ n ";
case 9:
system("cls");
cout << "n _______n | / |n |/ O < Låt mig inte dö!:( n | -|-n | n |n |n ____|___n / \ n / \ n ";
case 10:
system("cls");
cout << "n _______n | / |n |/ O < Jag kommer aldrig mer lite på dig!n | -|-n | An |n |n ____|___n / \ n / \ n ";

}

}

void delay(int secs)
{
clock_t delay = secs
  • CLOCKS_PER_SEC / 100;
clock_t start = clock();
while (clock() < (start + delay))
{

}
}

void meny()
{
string meny ="n|---------------|n|-- MENY --|n|---------------|n|-- 1.SPELA --|n|-- 2.AVSLUTA --|n|---------------|n";
for (int i = 0; i < meny.length(); i++)
{
cout << meny.at(i);
delay(5);
}

char svar;
cout << "nVad vill du göra? (1/2) n";
cin >> svar;
cin.ignore(1000, ''n'');

if (svar == ''1'')
{
cout << "Du Valde att starta mitt spel!:D n";
}
else
{
exit(1);
}
}

Hej, jag undra om ni kunde hjälpa mig med att få det att funka.. eller det funkar, men inte med livet. Om ni inte fattar vad jag menar så får ni gärna testa spelet. Vore jätte snällt om ni kunde hjälpa mig att förstå vad felet är.

-------------------------
\\MVH Stefan

Senast redigerad 10:22 - 31:a Januari 2008


Slash 11:23 - 31:a Januari 2008 | Post #2
Medlem
Inlägg: 141


Skicka PM
    Citat av SMiskas:
#include <iostream>
  1. #include <string>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. void meny();
  6. void delay(int secs);
  7. void starta_spel();
  8. void gissad_bokstav(string visa_ordet, string ordet, string felgissningutskrift, int &liv, char gissadbokstav); // Lägg till en referens till liv
  9. void felgissningutskrift(char gissadbokstav);
  10. void gubbe(int liv);
  11.  
  12. ...
  13. void gissad_bokstav(string visa_ordet, string ordet, string felgissningutskrift, int &liv, char gissadbokstav) // ,,ndra här med
  14. {
  15. ...
  16.  
  17. else
  18. {
  19. liv ++; // Nu borde denna ändra den liv som du deklarerade i main
  20.  
  21. for (int i = 0; i <= liv; i++)
  22. {
  23. void gubbe(int liv); // Borde vara "gubbe(liv);"
  24. }
  25.  
  26. ...
  27.  
  28. void gubbe(int liv) // Om du inte ska ändra på liv så behövs ingen referens här
  29. {
  30. switch(liv)
  31. {
  32. ...
  33. }


Hej, jag undra om ni kunde hjälpa mig med att få det att funka.. eller det funkar, men inte med livet. Om ni inte fattar vad jag menar så får ni gärna testa spelet. Vore jätte snällt om ni kunde hjälpa mig att förstå vad felet är.


När du skickar med en variabel på detta vis så blir det inte som du tänkt dig:

  1. int main()
  2. {
  3. int liv = 5;
  4.  
  5. minfunktion(liv);
  6.  
  7. }
  8.  
  9. void minfunktion(int liv)
  10. {
  11. liv++; // Här ändras bara en lokal kopia av liv, inte liv-variabeln i main
  12. }




  1. int main()
  2. {
  3. int liv = 5;
  4.  
  5. minfunktion(liv);
  6.  
  7. }
  8.  
  9. void minfunktion(int &liv) // Det lilla &-tecknet säger att en referens till liv-variabeln ska skickas
  10. {
  11. liv++; // ,,ndrar liv-variabeln i main "genom referensen"
  12. }



-------------------------
Ingen sigantur!



SMiskas 12:32 - 31:a Januari 2008 | Post #3
Medlem
Inlägg: 4


Skicka PM
Tack så mycket, det hjälpte mig, det funkar nu med livet..Smiley såg att jag hade slarvat sjukt mycket också...Smiley

-------------------------
\\MVH Stefan



SMiskas 21:40 - 31:a Januari 2008 | Post #4
Medlem
Inlägg: 4


Skicka PM
Finns det något bättre sätt att avgöra om man har "vunnit" spelet än att skriva något liknande detta : om inte
  • finns kvar i variabeln ''visa_ordet'' så har man vunnit.??
Skriv gärna ett kodat exempel också så jag fattarSmiley är lite seg lärd..;)

-------------------------
\\MVH Stefan



SMiskas 23:40 - 1:a Februari 2008 | Post #5
Medlem
Inlägg: 4


Skicka PM
jag har nu också försökt att göra en text fil med massa ord som jag sedan ska anropa för att slippa skriva in massa ord och sedan slumpa dom. Men jag har inte lyckats, och min kompis gav mig en kod men den funkar inte.:::

     while(getline(hamta,ordet) && i < random)
{
if (i = random)
{
getline(hamta,ordet);
}
i++;

Det där hamta ser lite mysko ut tycker jag, förklara gärna vad ni fattar det som.

-------------------------
\\MVH Stefan



Sidor: 1

Forum huvudsida -> Projekt -> Hjälp med hängman
Atom feed

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