Behöver lite hjälp i c++.
Hej!
Håller på att skapa ett program som går ut på att man först skall komma till 21, och man får bara säga 1 eller 2.
Nu är det så att jag har lite problem, när jag använder en array och cin.getline så hoppar den helt enkelt över den raden och tar inte in namnet. Har testat med cin.ignore(15,'\n'); och då så har den inte hoppat över raden men fortfarande inte tagit in namnet så jag kan skriva ut det senare.
Jag försöker även komma på ett sätt att se vilken spelare som gjorde sista draget för att skriva ut vem som vann, då har jag använder "vilken++;" i while-satsen som jag tänkte skulle ge ett jämnt eller ojämnt tal och därmed se vem som gjorde det. Hursomhelst så fungerar varken eller, och jag skulle behöva lite hjälp!
#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
void skrivmeny();
int main()
{
////// mata in data ###################################################
int spelaretal, dator, summa=0, vilken;
char namn1[20], namn2[20];
char spela, svar;
//#####################################################################
cout << "Vill du spela spelet21?(j/n) ";
cin >> spela;
//########## inledning OM svar = j, annars avsluta
if (spela!='n' || spela!='N')
{
skrivmeny();
cout << endl << "Välj ett svarsalternativ! ";
cin >> svar;
if(svar!='0') ///// om svar = 0 kommer programmet avslutas
{
///// utför valt menyalternativ
if(svar=='1')
{
cout << "Ange namnet på spelare1: "; // namn på spelare 1
//cin.getline(namn1, 20);
//cin.ignore(15,'\n');
cout << endl << endl << "Du kommer nu att spela spelet 21 själv!" << endl; // starta spelet mot sig själv"
cout << endl << endl << "============================================" << endl << endl; // snygghet
while(summa<21)
{
cout << "Summan är lika med " << summa << ". Mata nu in nästa tal!"; // körs tills något kommit till svar
cin >> spelaretal;
if(spelaretal == 1 || spelaretal == 2) // testar likhet för 1 & 2
{
summa=summa+spelaretal;
}
else
{
cout << "Talet du matade in är inte = 1 eller = 2, mata in ett nytt tal!" << endl; // felinmatning
}
}
if(summa==21)
{
cout << "Summan är nu 21!! " << namn1 << " har vunnit!" <<endl; // skriver ut vinnaren
}
}
if(svar=='2')
{
//cout << "Ange namnet på spelare1: "; // namn på spelare 1
//cin.getline(namn1, 20);
//cin.ignore(15,'\n');
//cout << "Ange namnet på spelare2: "; // namn på spelare 2
//cin.getline(namn2, 20);
//cin.ignore(15,'\n');
cout << "Skall spelare 1 eller 2 börja? (ange 1 för spelare 1 och 2 för spelare 2): ";
cin >> vilken;
cout << endl << endl << namn1 << " kommer nu att möta " << namn2 << " i spelet 21, var beredda!" << endl; // två spelare
cout << endl << endl << "============================================" << endl << endl; // snygghet
while(summa<21)
{
cout << "Summan är lika med " << summa << ". Mata nu in nästa tal!"; // körs tills något kommit till svar
cin >> spelaretal;
if(spelaretal == 1 || spelaretal == 2) // testar likhet för 1 & 2
{
summa=summa+spelaretal;
vilken++; // avgör vem som vunnit i slutet
}
else
{
cout << "Talet du matade in är inte = 1 eller = 2, mata in ett nytt tal!" << endl; // felinmatning
}
}
if(summa==21)
{
cout << "Summan är nu 21!! " << vilken << " har vunnit!" <<endl; // skriver ut vinnaren
}
}
}
}
}
void skrivmeny()
{
cout << endl;
cout << "1. Spela själv!" << endl;
cout << "2. Spela mot en kompis" << endl;
cout << "3. Spela mot datorn!" << endl;
cout << "4. Spela mot datorn med vinnaralgoritm!" << endl;
cout << "5. Förklara regler." << endl;
cout << "0. Avsluta." << endl;
}