Názory ke článku C++ - 8. lekce
24. 11. 2005
Když napíšeš typedef long slovo; Tak vytvoříš datový typ long s názve slovo, což je celkem naprd, typedef je dobrý se strukturou ;-)
31. 1. 2006
zkousel jsem si spojovat stringy a kdyz na vstup zadam string obsahujici mezeru - skonci program, proc mu to vadi?
U toho času mi jaksi nefunguje ani jeden z těch příkladů na konci, hrozně rychle za sebou (bez nějakejch 2 sekund) mi to začne vipisovat ahoj, ahoj, ... čim to je?
Chci stáhnout 7. a 8. lekci v pdf., ale nějak to nejde. Všechny ostatní lekce ale jdou stáhnout
Príkaz <b>typedef_datovy_typ_ nazov_premennej</b> sa používa na to, že ak budem mať v programe 10 premenných, napr. typu unsigned short int, napíšem toto: typedef unsigned short int USHORT; a namiesto toho, aby som 10krát napísal unsigned short nazov_premennej, použíjem iba USHORT. Pokojne si to vyskúšaj;-).
riešilo sa to v 7. lekcii:
Datum: 31.05.2006 22:45:59
Vložil: Curo
Titulek: Re: Nejde export do PDF
Ano, některé články zatím není možné exportovat,
No tak to má fungovat, nejdřív ti to vypíše ahoj,ahoj,ahoj,ahoj..., pak to udělá tu 2 sekundovou pauzu a pak se program ukončí....
Lze donutit switch pracovat s více rozměrným polem?
for (int a = 1; a <= 8; a++)
for (int b = 1; b <= 8; b++)
{
switch (pozice[a])
{
case "b_pesec" : ShowMessage("b_pesec");
case "b_stelec" : ShowMessage("b_pesec");
};
};
Zdar , mám takový problém , vytvořil jsem si program na fyzikální vzorečky , za pomoci cyklu switch a nevím jak se vrítit do menu :
while(prum_rychlost_001 != 8)
{
switch(prum_rychlost_001)
{
case 1: cout << "\nZadejte km/h :";
double km_h;
cin >> km_h;
cout <<"\n";
cout << "Rychlost "<<km_h<<" km/h je "<<km_h / 3.6<<" m/s\n";
cout << "\Zadejte sekvenci pro ukonceni : ";
break;
case 2: cout << "\nZadejte m/s :";
double m_s;
cin >> m_s;
cout <<"\n";
cout << "Rychlost "<<m_s<<" m/s je "<< m_s * 3.6<<" km/h\n";
break;
case 3: cout << "\n Zadejte s (drahu)(km) : ";
double draha_prum_rychlost;
cin >> draha_prum_rychlost;
cout << " \n";
cout << " Zadejte t (cas) (hod) : ";
double cas_prum_rychlost_hod;
cin >> cas_prum_rychlost_hod;
cout << "\n";
cout << " v = "<< draha_prum_rychlost / cas_prum_rychlost_hod<<" km / h = "<< draha_prum_rychlost / cas_prum_rychlost_hod / 3.6<<" m / s\n\n";
break;
case 4: cout << "\n Zadejte s (drahu) (m) : ";
double draha_prum_rychlost_m;
cin >> draha_prum_rychlost_m;
cout << "\n Zadejte t (cas) (sec) : ";
double cas_prum_rychlost_sec;
cin >> cas_prum_rychlost_sec;
cout << "\n v = "<<draha_prum_rychlost_m / cas_prum_rychlost_sec<<" m / s = "<<draha_prum_rychlost_m / cas_prum_rychlost_sec * 3.6<<" km / h\n";
break;
case 5: cout <<"\n Zadejte t(cas)(hod) : ";
double cas_prum_rychlost_hod_000;
cin >> cas_prum_rychlost_hod_000;
cout <<"\n Zadejte v(rychlost)(km /h) : ";
double rychlost_prum_rychlost_km_h_000;
cin >> rychlost_prum_rychlost_km_h_000;
cout << "\n v = "<<cas_prum_rychlost_hod_000 * rychlost_prum_rychlost_km_h_000<<" km /h\n";
break;
case 6: cout <<"\n Zadejte v1(rychlost)(km / h) : ";
double rychlost_prum_rychlost_km_h_001;
cin >> rychlost_prum_rychlost_km_h_001;
cout <<"\n Zadejte t1(cas)(celkove doby)(cinitel) : ";
double cas_prum_rychlost_celkova_doba_001_cinitel;
cin >> cas_prum_rychlost_celkova_doba_001_cinitel;
cout <<"\n Zadejte t1(cas)(celkove doby)(jmenovatel) : ";
double cas_prum_rychlost_celkova_doba_001_jmenovatel;
cin >> cas_prum_rychlost_celkova_doba_001_jmenovatel;
cout <<"\n Zadejte v2(rychlost)(km / h) : ";
double rychlost_prum_rychlost_km_h_002;
cin >> rychlost_prum_rychlost_km_h_002;
cout <<"\n Zadejte t2(cas)(celkove doby)(cinitel) : ";
double cas_prum_rychlost_celkove_doby_002_cinitel;
cin >> cas_prum_rychlost_celkove_doby_002_cinitel;
cout <<"\n Zadejte t2(cas)(celkove doby)(jmenovatel) : ";
double cas_prum_rychlost_celkove_doby_002_jmenovatel;
cin >> cas_prum_rychlost_celkove_doby_002_jmenovatel;
cout << "\n v = "<<cas_prum_rychlost_celkova_doba_001_cinitel * rychlost_prum_rychlost_km_h_001 / cas_prum_rychlost_celkova_doba_001_jmenovatel + rychlost_prum_rychlost_km_h_002 / cas_prum_rychlost_celkova_doba_001_jmenovatel<<" km / h \n";
break;
case 7: cout <<"\n Zadejte v1(rychlost)(km /h) : ";
double rychlost_prum_rychlost_km_h_003;
cin >> rychlost_prum_rychlost_km_h_003;
cout <<"\n Zadejte s1(draha)(celkove doby)(cinitel) : ";
double draha_prum_rychlost_celkova_draha_cinitel_001;
cin >> draha_prum_rychlost_celkova_draha_cinitel_001;
cout << "\n Zadejte s1(draha)(celkova draha)(jmenovatel) : ";
double draha_prum_rychlost_celkova_draha_jmenovatel_001;
cin >> draha_prum_rychlost_celkova_draha_jmenovatel_001;
cout <<"\n Zadejte v2(rychlost)(km /h) : ";
double rychlost_prum_rychlost_km_h_004;
cin >> rychlost_prum_rychlost_km_h_004;
cout <<"\n Zadejte s2(draha)(celkove doby)(cinitel) : ";
double draha_prum_rychlost_celkova_draha_cinitel_002;
cin >> draha_prum_rychlost_celkova_draha_cinitel_002;
cout << "\n Zadejte s2(draha)(celkova draha)(jmenovatel) : ";
double draha_prum_rychlost_celkova_draha_jmenovatel_002;
cin >> draha_prum_rychlost_celkova_draha_jmenovatel_002;
cout << "\n v = "<< draha_prum_rychlost_celkova_draha_jmenovatel_001 * rychlost_prum_rychlost_km_h_003 * rychlost_prum_rychlost_km_h_004 / (rychlost_prum_rychlost_km_h_003 + draha_prum_rychlost_celkova_draha_cinitel_001 * rychlost_prum_rychlost_km_h_004)<<" km / h\n";
break;
default: cout << " TOTO NENI VOLBA \a\a\a\a\a\a\a\a\n\n\n";
break;
}
}
22. 7. 2011
#3 Cubche
pouzi cin.getline() alebo cin.get()
mas napr char mesto[50];
tak das nacitat 50 pismen do charu mesto
cin.getline(mesto,50) || cin.get(mesto,50); a nezabudni za tym cin.get() ...
to bolo v predchadzajucej lekcii nepozorne precitana :D
Čafte,nvie niekto ak sa da spravit nieco take ze budem zadavat cokolvek a zaroven pritom mi bude bezat cas alebo dajme tomu niaky cyklus?,,,, dufam ze viete co myslim,lebo ked mam prikazy ako je cin tak dalej sa nepohne program pokial nezadam hodnotu ale ja chcem pocas zadavania hodnoty aby nieco mi aj bezalo programe ,,,,nvm na to prist rozmyslam stale aj som hladal ,staci ked mi niekto da radu a uz by som si mal poradit ,dakujem :)
31. 5. 2013
Dobrý den,
řeším následující problém: Mám textový soubor, jedna řádka-jedno slovo(bez mezer). Chci vytvořit dynamické dvourozměrné pole pomocí operátotu "new". To problém není, ale pořebuji s tím polem pracovat, třídit, seskupovat stejná slova a zjišťovat jejich četnost. Je možnost vytvořit i nové dynamické pole. Nechci však používat "vector"-jen klasický C-čkovský kód. Prosím, poraďte. Díky moc.
22. 6. 2018
Ahoj,
tak jsem si trochu pohrála a vytvořila menší prográmek. Jen do mě :) vím, že to není dokonalé a ráda se přiučím.
#include <iostream>
#include<ctime>
using namespace std;
int main()
{
char aa=160, AA=181;
char cc=159, CC=172;
char dd=212;
char ee=130, EE=144;
char ie=216;
char ii=161, II=214;
char nn=229;
char oo=162;
char rr=253, RR=252;
char ss=231, SS=230;
char uu=163, uo=133;
char yy=236, YY=237;
char zz=167;
char oddelovac[]="\n_______________________________________________________\n";
cout<<"TOTO JE PROGRAM VYTVO"<<RR<<"EN"<<YY<<" PRO ZLEP"<<SS<<"EN"<<II<<" N"<<AA<<"LADY.";
cout<<"\n______________________________________________";
cout<<"\n\nVyber z nab"<<ii<<"dky, co t"<<ie<<" tr"<<aa<<"p"<<ii<<":";
cout<<"\n\n\t1 - M"<<aa<<"m lehkou depresi.\n\t2 - M"<<aa<<"m t"<<ie<<zz<<"kou depresi.\n\t3 - Jsem frustrovan"<<aa<<"/"<<yy<<".";
cout<<"\n\t4 - Nem"<<aa<<"m na nic n"<<aa<<"ladu.\n\t5 - Chci ukon"<<cc<<"it program\n";
int vyber;
cout<<"\nNapis cislo: ";
cin >> vyber;
while (vyber != 5)
{
switch(vyber)
{
case 1 : cout<<"\nPro zlep"<<ss<<"en"<<ii<<" n"<<aa<<"lady Ti "<<rr<<"eknu vtip.\nV"<<ii<<ss<<", pro"<<cc<<" chod"<<ii<<" kr"<<aa<<"l"<<ii<<"ci v"<<zz<<"dy ve dvou?";
{
cout<<"\n\nOdpov"<<ie<<dd<<" se zobraz"<<ii<<" za:\n";
int zbytek=0;
int secs=16;
clock_t delay = secs * CLOCKS_PER_SEC;
clock_t start= clock();
do
{
int novy_zbytek=(delay - (clock()))/ CLOCKS_PER_SEC;
if (zbytek!=novy_zbytek)
{
zbytek=novy_zbytek;
cout <<zbytek<<" ";
}
}while(clock()- start < delay);
cout<<"\n\n\tProto"<<zz<<"e jeden nikdy nev"<<ii<<"!";
cout<<oddelovac;
break;}
case 2 : cout << "\nM"<<aa<<ss<<" t"<<ie<<zz<<"kou depresi. Tak si vyber vtip: \n";
{
cout<<"\n1 - vtip o mu"<<zz<<ii<<"ch\n2 - vtip o "<<zz<<"en"<<aa<<"ch\n\n";
int vtip;
cin>>vtip;
if(vtip == 1)
{
cout<<"\nJak se pozn"<<aa<<", "<<zz<<"e chlap l"<<zz<<"e? Pohybuj"<<ii<<" se mu rty!";
cout<<oddelovac;
}
else if (vtip == 2)
{
cout<<"\nN"<<ie<<"kter"<<ee<<" "<<zz<<"eny jsou jako Chorvatsko. V"<<ie<<"t"<<ss<<"ina tam u"<<zz<<" byla!";
cout<<oddelovac;
}
else
cout<<"\nChyba! Zadal jsi "<<ss<<"patn"<<ee<<" "<<cc<<ii<<"slo."<<oddelovac;
}
break;
case 3 : cout << "\nNezapome"<<nn<<", "<<zz<<"e: Sol lucet omnibus.\n(Slunce sv"<<ii<<"t"<<ii<<" pro ka"<<zz<<"d"<<ee<<"ho.)"<<oddelovac;
break;
case 4 : cout<<"\nBreve et irreparabile tempus omnibus est vitae! (Vergilius)\nKr"<<aa<<"tk"<<yy<<" a nen"<<aa<<"vratn"<<yy<<" je pro v"<<ss<<"echny "<<zz<<"ivota "<<cc<<"as!"<<oddelovac;
break;
default : cout << "\nZadal jsi "<<cc<<ii<<"slo, kter"<<ee<<" nen"<<ii<<" v nab"<<ii<<"dce. Zkus to znovu!\n";
}
cout<<"\n\nVyber z nab"<<ii<<"dky, co t"<<ie<<" tr"<<aa<<"p"<<ii<<":";
cout<<"\n\n\t1 - M"<<aa<<"m lehkou depresi.\n\t2 - M"<<aa<<"m t"<<ie<<zz<<"kou depresi.\n\t3 - Jsem frustrovan"<<aa<<"/"<<yy<<".";
cout<<"\n\t4 - Nem"<<aa<<"m na nic n"<<aa<<"ladu.\n\t5 - Chci ukon"<<cc<<"it program\n";
cout<<"\n\nNapis cislo: ";
cin >> vyber;
}
cout << "Ukon"<<cc<<"il jsi aplikaci. Sbohem!\n";
return 0;
}
29. 11. 2020
Ok vím, že je skoro konec roku 2020 a tento "starý" seriál z r. 2005 už asi ani nikdo nečte (krom mě :-) ), ale když už jsem tuto úlohu 8.8 zpracoval tak co sní .. dám to sem. Třeba to někoho inspiruje k další tvorbě.
Zde je malá ochutnávka výsledného snažení :-)
A zde je zpracováni v kódu:
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
/*
Hra spočivá ve vytvořeni dvourozměrného pole, do něj se náhodně vloží náhodný počet lodí,
hrač bude hrat proti PC, hrač začíná, vybere souřadnice, pokud zasáhne loď pokračuje dalším výběrem,
pokud hráč netrefí - hraje PC. Vyhrává vyšší skóre potopených lodí.
*/
//konstanty
const int RADEK = 10; //velikost hraciho pole v ose y
const int SLOUPEC = 10; //velikost hraciho pole v ose x
const int ZASAH = 254; //pro označení zásahu hráčem
const int PC_ZASAH = 256; //pro označení zásahu strojem
const int MIMO = 255; //pro označeni střely mimo
const char HORIZONTAL = char(95); //horizontálni linka
const char TVYPR = char(16); //trojuhelnik vpravo
const char TVYPL = char(17); //trojuhelnik vlevo
const char VERTIKAL = char(179); //vertikalni linka
const char VYPLN_PLNA = char(254); //plný čtvereček
const char SD = char(25); //sipka dolů
const char SP = char(26); //sipka vpravo
//globálni proměnné
bool dalsiTah = true;
bool tahHrac = true;
int hZasah = 0;
int pZasah = 0;
//Struktury (předchůdce tříd)
struct Souradnice
{
int x;
int y;
};
struct Hrac
{
int x;
int y;
int pTahu;
};
//Prototypy funkcí
string textCZ(string str); //funkce zpracuje zadaný text a vráti text s dosazenými CZ znaky
void oddelovac(); //pouze esteticka úprava
void informace(); //základní informace o hře
int rozmistitPlavidla(Souradnice xy[][SLOUPEC]); //náhodně rozmísti plavidla v hracím poli
void vykresliHru(Souradnice xy[][SLOUPEC], int plav, Hrac hr); //vykreslí hru
Hrac vyberSouradnic(Hrac hr); //výběr souřadnic hráč
int hraPC(Souradnice xy[][SLOUPEC], int plav); //Výběr souřadnic PC
int porovnani(Souradnice xy[][SLOUPEC], Hrac hr, int plav); //pororovnáni souřadnic s hracím polem
//Funkce a jejich definice
string textCZ(string str)
{
for (unsigned int i = 0; i < str.length(); i++)
{
switch (str[i])
{
case 'á':
str[i] = char(160); break;
case 'Á':
str[i] = char(181); break;
case 'é':
str[i] = char(130); break;
case 'É':
str[i] = char(144); break;
case 'í':
str[i] = char(161); break;
case 'Í':
str[i] = char(146); break;
case 'ý':
str[i] = char(236); break;
case 'Ý':
str[i] = char(237); break;
case 'ó':
str[i] = char(162); break;
case 'Ó':
str[i] = char(224); break;
case 'ú':
str[i] = char(163); break;
case 'Ú':
str[i] = char(233); break;
case 'ů':
str[i] = char(133); break;
case 'ď':
str[i] = char(212); break;
case 'Ď':
str[i] = char(210); break;
case 'ť':
str[i] = char(156); break;
case 'Ť':
str[i] = char(155); break;
case 'ň':
str[i] = char(229); break;
case 'Ň':
str[i] = char(213); break;
case 'ž':
str[i] = char(167); break;
case 'Ž':
str[i] = char(166); break;
case 'č':
str[i] = char(159); break;
case 'Č':
str[i] = char(172); break;
case 'š':
str[i] = char(231); break;
case 'Š':
str[i] = char(230); break;
case 'ř':
str[i] = char(253); break;
case 'Ř':
str[i] = char(252); break;
case 'ě':
str[i] = char(216); break;
case 'Ě':
str[i] = char(183); break;
}
}
return str;
}
void oddelovac()
{
for (int i = 0; i < 9 * SLOUPEC; i++)
{
cout << char(22);
}
cout << endl;
}
void informace()
{
cout << endl;
cout << textCZ("VITEJTE V BITVĚ - Vašim úkolem je najít a zničit více plavidel než soupeř ") << endl;
cout << endl;
cout << textCZ("Tato hra vznikla na popud zadané úlohy 8.8 ze seriálu o C++ z r.2005 na www.programujte.com") << endl;
cout << endl;
cout << textCZ("Tento projekt vytvořil 'Z_code' 29.11.2020 ve Visual Studio Comunity 2019 ") << endl;
cout << endl;
oddelovac();
cout << endl;
}
void vykresliHru(Souradnice xy[][SLOUPEC], int plav, Hrac hr)
{
cout << endl;
cout << textCZ("LODÍ V HRACIM POLI") << "\t" << "[ " << plav << " ]" << endl;
cout << endl <<"\t\t\t" << HORIZONTAL;
for (int i = 0; i < SLOUPEC; i++)
{
cout << HORIZONTAL << HORIZONTAL << i << HORIZONTAL << HORIZONTAL; //horizontalni číslováni
if (i == SLOUPEC - 1)
cout << SP << " X ";
}
cout << endl;
for (int i = 0; i < RADEK; i++)
{
cout << "\t\t\t" << i; // vertikálni číslováni
for (int j = 0; j < SLOUPEC; j++)
{
if (xy[i][j].x == ZASAH && xy[i][j].y == ZASAH)
cout << "|" << VYPLN_PLNA << VYPLN_PLNA << VYPLN_PLNA << "|";
else if (xy[i][j].x == PC_ZASAH && xy[i][j].y == PC_ZASAH)
cout << "|" << TVYPR << VYPLN_PLNA << TVYPL << "|";
else if (xy[i][j].x == MIMO && xy[i][j].y == MIMO)
cout << "|" << " " << " " << " " << "|";
else
{
cout << "|" << j << " " << i << "|"; //zadávám prvni x-sové a až pak y-lonové souřadnice
}
}
cout << endl;
}
cout << "\t\t\t" << SD << endl;
cout << "\t\t\t" << "Y" << endl << endl;
cout << textCZ("Potopených lodí - HRÁČ ") << " [ " << hZasah << " ]" << "\t\t\t" << textCZ("Potopených lodí - PC ") << " [ " << pZasah << " ]" << endl;
//cout << textCZ("LODÍ V HRACIM POLI") << "\t" << "[ " << plav << " ]" << endl << endl;
if ((tahHrac) && (hr.pTahu > 0))
cout << textCZ("HRAČ souřadnice -xy- ") << hr.x << "-" << hr.y << endl;
else if (!tahHrac)
cout << textCZ("PC souřadnice -xy- ") << hr.x << "-" << hr.y << endl;
oddelovac();
}
Hrac vyberSouradnic(Hrac hr)
{
hr.pTahu = 1;
int x = 0;
int y = 0;
string vstup;
/*
Ošetření vstupu uživatele - pokud bude zadáno něco jiného než číslo program na to upozorní,
bude vyvolán požadavek na nové zadáni. Pokud uživatel zadá číslo, ale zbytečně velké budou
akceptována pouze dvě číslice - první a poslední - vše ostatní bude zahozeno.
*/
cout << textCZ("Vyber souřadnice - zadej dvojčíslo v pořadí -xy- (00 až 99) a zmáčkni ENTER ");
while (true)
{
cin >> vstup;
int pozice = 0;
int kontrola = 0;
if (vstup.length() > 1 )
{
for (unsigned int i = 0; i < vstup.length(); i++)
{
pozice = vstup[i];
switch (pozice)
{
case 48: if (i == 0) { x = 0; }
else { y = 0; } break;
case 49: if (i == 0) { x = 1; }
else { y = 1; } break;
case 50: if (i == 0) { x = 2; }
else { y = 2; } break;
case 51: if (i == 0) { x = 3; }
else { y = 3; } break;
case 52: if (i == 0) { x = 4; }
else { y = 4; } break;
case 53: if (i == 0) { x = 5; }
else { y = 5; } break;
case 54: if (i == 0) { x = 6; }
else { y = 6; } break;
case 55: if (i == 0) { x = 7; }
else { y = 7; } break;
case 56: if (i == 0) { x = 8; }
else { y = 8; } break;
case 57: if (i == 0) { x = 9; }
else { y = 9; } break;
default:
cout << textCZ("ERROR - Chybný vstup") << endl;
cout << textCZ("Zadej dvojčíslo v pořadí -xy- (00 až 99) a zmáčkni ENTER ");
i = vstup.length();
kontrola++;
}
}
}
else
{
cout << textCZ("ERROR - Chybný vstup") << endl;
cout << textCZ("Zadej dvojčíslo v pořadí -xy- (00 až 99) a zmáčkni ENTER ");
kontrola++;
}
if (kontrola == 0)
{
break;
}
}
hr.x = x;
hr.y = y;
return hr;
}
int rozmistitPlavidla(Souradnice xy[][SLOUPEC])
{
cout << textCZ("VELIKOST HRACIHO POLE ") << "[ " << RADEK << " ][ " << SLOUPEC << " ]" << endl << endl;
int x, y;
int pocet = 0;
srand((unsigned)time(NULL)); // inicializace generatoru pseudonahodnych cisel
cout << "\t\t\t" << HORIZONTAL;
for (int i = 0; i < SLOUPEC; i++)
{
cout << HORIZONTAL << HORIZONTAL << i << HORIZONTAL << HORIZONTAL; //horizontalni číslováni
if (i == SLOUPEC - 1)
cout << SP << " X ";
}
cout << endl;
for (int i = 0; i < RADEK; i++)
{
cout << "\t\t\t" << i; // vertikálni číslováni
for (int j = 0; j < SLOUPEC; j++)
{
x = rand() % 10; //čísla 'x' v rozsahu 0-9
y = rand() % 10; //čísla 'y' v rozsahu 0-9
if ((i != x) && (j == y) || (j == x) || (x % 2 == y))
{
//náhodný výběr políček dle pocatecni podminky
//cout << "|" << VYPLN_PLNA << VYPLN_PLNA << VYPLN_PLNA << "|";
cout << "|" << HORIZONTAL << HORIZONTAL << HORIZONTAL << "|";
xy[i][j].x = j; //proměnná x - sloupec
xy[i][j].y = i; //proměnná y - řádek
pocet++;
}
else
{
//vyplnění zbylých políček ve dvourozměrném poli nulami
cout << "|" << HORIZONTAL << HORIZONTAL << HORIZONTAL << "|";
xy[i][j].x = NULL;
xy[i][j].y = NULL;
}
}
cout << endl;
}
cout << "\t\t\t" << SD << endl;
cout << "\t\t\t" << "Y" << endl << endl;
return pocet;
}
int porovnani(Souradnice xy[][SLOUPEC], Hrac hr, int plav)
{
int lode = plav;
int j = hr.x; // souřadnici x - sloupec
int i = hr.y; // souřadnici y - řádek
if ((xy[i][j].x == j && xy[i][j].y == i)||(xy[i][j].x == ZASAH && xy[i][j].y == ZASAH))
{
if ((xy[i][j].x == ZASAH && xy[i][j].y == ZASAH))
{
//cout << textCZ("Na souřadnicích -")<< j << i <<textCZ("- je již potopená loď - ztráciš svůj další tah") << endl << endl;
dalsiTah = false;
}
else
{
lode--;
}
if (tahHrac)
{
xy[i][j].x = ZASAH;
xy[i][j].y = ZASAH;
hZasah++;
}
else
{
xy[i][j].x = PC_ZASAH;
xy[i][j].y = PC_ZASAH;
pZasah++;
}
}
else
{
xy[i][j].x = MIMO;
xy[i][j].y = MIMO;
dalsiTah = false;
}
vykresliHru(xy, lode, hr);
return lode;
}
int hraPC(Souradnice xy[][SLOUPEC], int plav)
{
cout << textCZ("HRA PC -ČEKEJTE-") << endl;
Hrac hracPc;
int lode = plav;
while (true)
{
int i, j;
srand((unsigned)time(NULL)); // inicializace generatoru pseudonahodnych cisel
i = rand() % 10; //čísla 'x' v rozsahu 0-9
j = rand() % 10; //čísla 'y' v rozsahu 0-9
if ((xy[i][j].x == ZASAH && xy[i][j].y == ZASAH) || (xy[i][j].x == PC_ZASAH && xy[i][j].y == PC_ZASAH) || (xy[i][j].x == MIMO && xy[i][j].y == MIMO))
{
continue;
}
else
{
hracPc.x = j;
hracPc.y = i;
lode = porovnani(xy, hracPc, lode);
break;
}
}
return lode;
}
int main()
{
informace();
Souradnice HraciPlocha[RADEK][SLOUPEC]; //vytvořím hrací plochu
int plavidel = rozmistitPlavidla(HraciPlocha);
char vyber;
Hrac hrac1 = { 0,0,0 }; //inicializace hodnot
cout << textCZ("Hraješ proti PC nebo druhému hráči???") << endl;
cout << textCZ("1) PC") << "\t\t" << textCZ("-stiskni klavesu-") << "\t" << textCZ("p") << endl;
cout << textCZ("2) Hráč") << "\t\t" << textCZ("-stiskni klavesu-") << "\t" << textCZ("h") << endl;
cout << textCZ("3) Konec") << "\t" << textCZ("-stiskni klavesu-") << "\t" << textCZ("k") << endl;
bool hra = true;
while (hra)
{
do
{
vyber = cin.get();
} while (vyber == '\n');
if (vyber == 'P')
vyber = 'p';
if (vyber == 'H')
vyber = 'h';
if (vyber == 'K')
vyber = 'k';
switch (vyber)
{
case 'p':
vykresliHru(HraciPlocha, plavidel, hrac1);
while (true)
{
if (tahHrac)
{
if (!dalsiTah)
{
tahHrac = false;
dalsiTah = true;
}
else
{
cout << endl << textCZ("HRA HRAČ") << endl;
hrac1 = vyberSouradnic(hrac1);
plavidel = porovnani(HraciPlocha, hrac1, plavidel);
}
}
else
{
if (!dalsiTah)
{
tahHrac = true;
dalsiTah = true;
}
else
{
plavidel = hraPC(HraciPlocha, plavidel);
}
}
if ((plavidel==0) || ((plavidel + pZasah) < hZasah) || ((plavidel + hZasah) < pZasah))
{
if (pZasah < hZasah)
{
oddelovac();
cout << endl << textCZ("V TÉTO BITVĚ ZVÍTĚZIL HRÁČ SE SKOREM POTOPENÝCH LODÍ ") << "[ " << hZasah << " ]" << textCZ(" oproti PC - pouze ") << "[ " << pZasah << " ]" << endl;
oddelovac();
}
else if (pZasah == hZasah)
{
oddelovac();
cout << endl << textCZ("V TÉTO BITVĚ NEZVÍTĚZIL NIKDO - POČÍTAČ POTOPENÝCH LODÍ ") << "[ " << pZasah << " ]" << textCZ(" HRAČ - rovněž ") << "[ " << hZasah << " ]" << endl;
oddelovac();
}
else
{
oddelovac();
cout << endl <<textCZ("V TÉTO BITVĚ ZVÍTĚZIL POČÍTAČ SE SKOREM POTOPENÝCH LODÍ ") << "[ " << pZasah << " ]" <<textCZ(" oproti HRAČ - pouze ") << "[ " << hZasah << " ]" << endl;
oddelovac();
}
cout << endl << textCZ("Chceš hrát znovu???") << endl;
cout << textCZ("1) PC") << "\t\t" << textCZ("-stiskni klavesu-") << "\t" << textCZ("p") << endl;
cout << textCZ("2) Hráč") << "\t\t" << textCZ("-stiskni klavesu-") << "\t" << textCZ("h") << endl;
cout << textCZ("3) Konec") << "\t" << textCZ("-stiskni klavesu-") << "\t" << textCZ("k") << endl;
break;
}
}
break;
case 'h':
cout << textCZ("ERROR - Zatím neni k dispozici - snad někdy později") << endl;
cout << textCZ("Stiskni klavesu p-pro PC nebo k-pro konec ") << endl;
break;
case 'k':
hra = false;
break;
default:
cout << textCZ("ERROR - stiskni klavesu p-pro PC nebo h-pro HRAČ nebo k-pro KONEC - JINÝ VÝBĚR NENÍ POVOLEN ") << endl;
cin.get();
break;
}
}
return 0;
}