Dobrý den, potřeboval bych poradit s hrou šibenice, kde při výpisu slova se mi má vypsat první a poslední písmeno slova, písmena mezi jsou značeny pomlčkou, avšak nemohu přijít na to, jak to udělat aby se mi vypsalo poslední písmeno. Prosím poraďte zde je kód:
using namespace std;
char slovo[11];
char pomlcka[]="-";
int velikost;
int pp;
int main(int argc, char *argv[])
{
cout<<"\n zadej slovo o max 10ti znacich \n";
cin.getline(slovo,sizeof(slovo));
velikost=strlen(slovo);
cout<<velikost<<" znaku\n";
cout<<slovo[0];
for(velikost=1; velikost<strlen(slovo)-1; velikost++)
cout<<"-";
pp=sizeof(slovo)-2;
cout<<pp;
system("PAUSE");
system("CLS"); //vymaze obrazovku
return EXIT_SUCCESS;
}
Fórum › C / C++
Hra šibenice
Pokud si dobře pamatuji, tak šibenice se vždy (při neúspěšném hádání) nakreslila za určitý počet kroků. To by vedlo na cyklus typu for.
Druhý pohled na věc je, že hra končí pokud hráč slovo uhodne. Ve stylu - zadej písmeno a zkontroluj, jestli tam je a na konci cyklu otestuj, jestli už slovo není komplet. To zase vede na cyklus do-while.
Pokud budeš chtít jenom zadávat písmenka a spočítat na kolik pokusů se to hráči povedlo, tak B je správně. Pokud budeš chtít víc pracovat s tím "kreslením" šibenice, tj. s maximálním počtem opakování, tak bych volil možnost A.
Podle mě by se docela dobře dal použít nekonečný cyklus while (while(1){...), v těle cyklu se zeptat na hráčův tip, pokud hráč neuhodne, tak zavolat fci na dokreslení šibenice popřípadě přičíst počet,... pokud uhodne, tak dopsat písmenko a nakonci každého cyklu testovat, jestli hráč slovo uhodl nebo je nakreslená celá šibenice - pokud ano, tak vypsat nějakou hlášku a cyklus ukončit (break;)...
mam tu tenhle program na vypis slova ,ktere po stisknuti enter napise jen 1 a posledni pismeno a chtel bych to rozsirit o to ze se bude hadat slovo a kdyz to pismeno tam bude doplni se to do slova a kdyz ne tak se odecte pokus..
pomuze mi s tim nekdo prosim ?
{
char vstup[50];
int i;
cout << "Prosim hrace c.1 aby zadal slovo o max. delce 20 znaku: ";
cin >> vstup;
system("CLS");
for ( i = 1; i < strlen(vstup)-1; i++ )
{
vstup[i] = '-';
}
cout << vstup;
cout << "\n";
cout << "Prosim hrace c2. aby zadal pismeno : ";
system("PAUSE");
return EXIT_SUCCESS;
}
Program budeš muset trochu rozšířit. Předně si zadaný řetězec (slovo) v té proměnné vstup "znehodnotíš" těmi znaky -.
Takže si založ 2. řetězcovou proměnnou (třeba vystup :-)). Po zadání slova si do této proměnné udělej kopii (pokud nemáš po ruce žádnou funkci na kopírování řetězců, tak si vystačíš s for cyklem).
Pak bude následovat náhrada za - a zadávací cyklus pro 2. hráče (řekněme do-while :-)).
V tom cyklu načteš zadaný znak od hráče, zjistíš jeho výskyt v původním (překopírovaném) řetězci. Když tam bude, tak ho do upraveného vrátíš, a když ne tak odpočítáš pokus. Následovat bude test na vyčerpání pokusů a cyklus uzavře test na to, jestli hráč slovo už neuhodnul. Například porovnáním, jestli uložený a upravený řetězec už jsou zase shodné.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Sibenice-nacitani ze souboru — založil Tom
Šibenice -> Výpis výsledků a řazení z .dat souboru — založil Jakub Stodůlka
Java 2D hra - tvorba menu (hra nereaguje na klavesy) — založil Marek
Hra? — založil johny5
Moderátoři diskuze