| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 29.12.10 Prihlásený: 26.10.16 Príspevky: 62 Témy: 19 |
caute, viem ze by som mal napisat len cast kodu s chybou ale neviem kde je ta chyba... toto je len pokus o taku hru =D.. no asi to nebude najpodarenejsie.. prosim zistite kde je chyba, pretoze sa program spusti a ked zadam tie cisla ktore mam(pocty jednotiek) tak to vobec neberie podla tych podmienok "if" .. dakujem (117 riadkov) =D
Kód: #include <stdio.h> #include <conio.h>
int silalukov(int lukostrelci, int atkl); int silapesiakov(int pesiaci, int atkp); int silajazdcov(int jazdci, int atkj); int silakatapultov(int katapulty, int atkk);
int main(void){ printf("Vitaj v strategickej hre !"); int lukostrelci; printf("\nnapis pocet tvojich lukostrelcov: "); scanf("%d", &lukostrelci); int silalukov; int atkl; atkl == 8; //atkl - attack lukov int pesiaci; printf("\nnapis pocet tvojich pesiakov: "); scanf("%d", &pesiaci); int silapesiakov; int atkp; atkp == 6; //atkp - attack pesiakov int jazdci; printf("\nnapis pocet tvojich jazdcov: "); scanf("%d", &jazdci); int silajazdcov; int atkj; atkj == 9; //atkj - attack jazdcov int katapulty; printf("\nnapis pocet tvojich katapultov: "); scanf("%d", &katapulty); int silakatapultov; int atkk; atkk == 15; //atkk - attack katapultov int lukostrelci1 = 20; int silalukov1; silalukov1 == atkl * lukostrelci1; int pesiaci1 = 40; int silapesiakov1; silapesiakov1 == atkp * pesiaci1; int jazdci1 = 20; int silajazdcov1; silajazdcov1 == atkj * jazdci1; int katapulty1 = 3; int silakatapultov1; silakatapultov1 == atkk * katapulty1; printf("\nJednotky tvojho nepriatela: \n"); printf("lukostrelci PC: 20\n"); printf("pesiaci PC: 40\n"); printf("jazdci PC: 20\n"); printf("katapulty PC: 3\n"); printf("\n\n\n\n");
if(silalukov < silalukov1){ printf("\nTvoji lukostrelci bohuzial prehrali"); } if(silalukov > silalukov1){ printf("\nBlahozelam, tvoji lukostrelci porazili nepriatelskych lukostrelcov"); } if(silapesiakov < silapesiakov1){ printf("\nTvoji pesiaci bohuzial prehrali"); } if(silapesiakov > silapesiakov1){ printf("\nTvoji pesiaci porazili nepriatelskych pesiakov, blahozelam"); } if(silajazdcov < silajazdcov1){ printf("\nTvoji jazdci bohuzial prehrali"); } if(silajazdcov > silajazdcov1){ printf("\nTvoji jazdci rozprasili nepriatelskych jazdov"); } if(silakatapultov < silakatapultov1){ printf("\nTvoje katapulty bohuzial prehrali"); } if(silakatapultov > silakatapultov1){ printf("\nTvoje katalupty rozprasili vsetky nepriatelske katapulty"); } getch(); return 0; }
int silalukov(int lukostrelci, int atkl){ return atkl * lukostrelci; } int silapesiakov(int pesiaci, int atkp){ return atkp * pesiaci; } int silajazdcov(int jazdci, int atkj){ return atkj * jazdci; } int silakatapultov(int katapulty, int atkk){ return atkk * katapulty; }
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 29.12.2010 22:29 | |
|
Neviem, či ti je jasné, čo sa udeje po vykonaní tohto kódu:
Kód: atkl == 8; //atkl - attack lukov
Vyhodnotí sa to ako false (lebo atkl je neinicializované, takže tam bude všetko možné, len nie 8) a pokračuje sa bez akéhokoľvek priradenia.
atkl == 8 - rovná sa atkl osmičke ??
atkl = 8 - do premennej atkl ulož osmičku
Uprav si všade tie inicializácie a skús to znova skompilovať.
|
|
Registrovaný: 29.12.10 Prihlásený: 26.10.16 Príspevky: 62 Témy: 19 |
ďakujem za takú rýchlu odpoveď
no ja som ten kód opravil ako si napísal namiesto dvoch som dal ==(toto som mal urobiť však? =D), a to som spravil pri každom atkl/k/j/p, a takmer nič sa nezmenilo iba to, že mi po zadaní akýchkoľvek čísel vždy napíše že vyhrali tie iste jednotky(pred tým to písal tiež ale pri iných jednotkách)... a čo sa týka tých funkcií a podmienok to je ok?
( ja programujem v C len týzden)
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 30.12.2010 11:12 | |
|
janik12333 píše: no ja som ten kód opravil ako si napísal namiesto dvoch som dal ==
Trochu som ti to opravil, na konci ti napíšem také zhrnutie, čomu sa nabudúce vyhnúť:
Kód: #include <stdio.h> #include <conio.h>
int SilaLukov( int lukostrelci, int atkl ); int SilaPesiakov( int pesiaci, int atkp) ; int SilaJazdcov( int jazdci, int atkj ); int SilaKatapultov( int katapulty, int atkk );
int main(void) { printf( "Vitaj v strategickej hre !" ); int lukostrelci; printf( "\nnapis pocet tvojich lukostrelcov: " ); scanf( "%d", &lukostrelci ); int atkl = 8; //atkl - attack lukov int pesiaci; printf( "\nnapis pocet tvojich pesiakov: " ); scanf( "%d", &pesiaci ); int atkp = 6; //atkp - attack pesiakov int jazdci; printf( "\nnapis pocet tvojich jazdcov: " ); scanf("%d", &jazdci); int atkj = 9; //atkj - attack jazdcov int katapulty; printf( "\nnapis pocet tvojich katapultov: " ); scanf( "%d", &katapulty ); int atkk = 15; //atkk - attack katapultov
int silalukov = SilaLukov( lukostrelci, atkl ); int silapesiakov = SilaPesiakov( pesiaci, atkp ); int silajazdcov = SilaJazdcov( jazdci, atkj ); int silakatapultov = SilaKatapultov( katapulty, atkk ); int lukostrelci1 = 20; int silalukov1 = atkl * lukostrelci1; int pesiaci1 = 40; int silapesiakov1 = atkp * pesiaci1; int jazdci1 = 20; int silajazdcov1 = atkj * jazdci1; int katapulty1 = 3; int silakatapultov1 = atkk * katapulty1; printf( "\nJednotky tvojho nepriatela: \n" ); printf( "lukostrelci PC: 20\n" ); printf( "pesiaci PC: 40\n" ); printf( "jazdci PC: 20\n" ); printf( "katapulty PC: 3\n" ); printf( "\n\n\n\n" );
if( silalukov < silalukov1 ) printf( "\nTvoji lukostrelci bohuzial prehrali" );
if( silalukov > silalukov1 ) printf("\nBlahozelam, tvoji lukostrelci porazili nepriatelskych lukostrelcov" );
if( silapesiakov < silapesiakov1 ) printf("\nTvoji pesiaci bohuzial prehrali" );
if( silapesiakov > silapesiakov1 ) printf("\nTvoji pesiaci porazili nepriatelskych pesiakov, blahozelam" );
if( silajazdcov < silajazdcov1 ) printf( "\nTvoji jazdci bohuzial prehrali" );
if( silajazdcov > silajazdcov1 ) printf( "\nTvoji jazdci rozprasili nepriatelskych jazdov" );
if( silakatapultov < silakatapultov1 ) printf( "\nTvoje katapulty bohuzial prehrali" );
if( silakatapultov > silakatapultov1 ) printf( "\nTvoje katalupty rozprasili vsetky nepriatelske katapulty" ); getch(); return 0; }
int SilaLukov( int lukostrelci, int atkl ) { return atkl * lukostrelci; } int SilaPesiakov( int pesiaci, int atkp ) { return atkp * pesiaci;
}
int SilaJazdcov( int jazdci, int atkj ) { return atkj * jazdci;
}
int SilaKatapultov( int katapulty, int atkk ) {
return atkk * katapulty;
}
1.) = je priradenie, == je porovnávanie, nie je to ten istý operátor!
2.) snaž sa vyhýbať voliť rovnaký názov pre premenné a pre funkcie (tu bol aj teraz tvoj problém). Sú zavedené rôzne konvencie, ktoré vravia, že napríklad premenné sa píšu malým písmom a funkcie začínajú veľkým, pričom každé ďalšie nové slovo je opäť veľké. Napr:
premenná --> int modrystol;
funkcia --> void ModryStol();
Môžeš použiť ako teraz rovnaký text, ale rozlíš veľké písmena ( nakoľko jazyk C je case sensitive ).
3.) snaž sa kód písať čo najprehľadnejšie, rob odstavce, atď. Videl som už aj horšie formátovanie, ale ešte sa to dá vylepšiť
4.) nemáš v kóde ošetrenie, ak sú sily vyrovnané ( ak je remíza )
5.) veľa šťastia v učení
|
|
Registrovaný: 29.12.10 Prihlásený: 26.10.16 Príspevky: 62 Témy: 19 |
aha super, takže už viem niečo nové ! ďakujem
|
|
Registrovaný: 29.12.10 Prihlásený: 26.10.16 Príspevky: 62 Témy: 19 |
zasa rovnaký problém, zle mi vypočítava silu(jednotky)
Kde stále robím chybu? Teraz už vo funkciách a názvoch dúfam chyba nie je..
robím v DEVC++
ďakujem ak tam nájdete tú chybu a poviete ako ju odstrániť!
Kód: /* POKUS O HRU */
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <windows.h>
int Vojsko2(int silalukov2, int silapesiakov2, int silajazdcov2, int silakatapultov2); int Vojsko1(int silalukov1, int silapesiakov1, int silajazdcov1, int silakatapultov1); int Vojsko(int silalukov, int silapesiakov, int silajazdcov, int silakatapultov); int SilaLukov(int lukostrelci, int atkl); int SilaPesiakov(int pesiaci, int atkp); int SilaJazdcov(int jazdci, int atkj); int SilaKatapultov(int katapulty, int atkk); int CenaLukov(int lukostrelci, int cenal); int CenaPesiakov(int pesiaci, int cenap); int CenaJazdcov(int pesiaci, int cenaj); int CenaKatapultov(int katapulty, int cenak);
void gotoxy( int x, int y ) {
COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
int main(void) { printf("**_U_R_O_V_E_N_1_**"); int z=700; printf("\n\n\nTvoje pociatocne zlato je %d", z); /*LUKOSTRELCI*/ int lukostrelci; int atkl = 8; //atkl - attack lukov int silalukov = SilaLukov( lukostrelci, atkl ); printf( "\n\n\nNapis pocet tvojich lukostrelcov\n(cena:5/lukostrelec): " ); scanf( "%d", &lukostrelci ); /*CenaLukov*/ int cenal = 5; int cenalukov = CenaLukov( lukostrelci, cenal ); printf("Cena lukostrelcov bola %d", cenalukov); /*PESIACI*/ int pesiaci; int atkp = 6; int silapesiakov = SilaPesiakov( pesiaci, atkp ); printf( "\nNapis pocet tvojich pesiakov\n(cena:4/1pesiak): " ); scanf( "%d", &pesiaci ); //atkp - attack pesiakov /*CenaPesiakov*/ int cenap = 4; int cenapesiakov = CenaPesiakov( pesiaci, cenap); printf("Cena pesiakov bola %d", cenapesiakov); /*JAZDCI*/ int jazdci; int atkj = 9; //atkj - attack jazdcov int silajazdcov = SilaJazdcov( jazdci, atkj ); printf( "\nNapis pocet tvojich jazdcov\n(cena:7/jazdec): " ); scanf("%d", &jazdci); /* CenaJazdcov */ int cenaj = 7; int cenajazdcov = CenaJazdcov( jazdci, cenaj); printf("Cena jazdcov bola %d", cenajazdcov); /*KATAPULTY*/ int katapulty; int atkk = 15; //atkk - attack katapultov int silakatapultov = SilaKatapultov( katapulty, atkk ); printf( "\nNapis pocet tvojich katapultov\n(cena:45/katapult): " ); scanf( "%d", &katapulty ); int vojsko = Vojsko( silalukov, silapesiakov, silajazdcov, silakatapultov ); /*CenaKatapultov*/ int cenak = 45; int cenakatapultov = CenaKatapultov( katapulty, cenak); printf("Cena katapultov bola %d", cenakatapultov); printf( "\nTvoje zlato je %d", z - cenalukov - cenapesiakov - cenajazdcov - cenakatapultov ); Sleep(2000); if(z - cenalukov - cenapesiakov - cenajazdcov - cenakatapultov < 0){ system("cls"); printf("Tvoje zlato je menej ako 0 - prehral si, program sa zatvori o 3sekundy"); Sleep(4000); exit(EXIT_SUCCESS); }
/* POCITAC - UROVEN 1 */ int lukostrelci1 = 20; /* pocet lukostrelcov pocitaca*/ int silalukov1 = atkl * lukostrelci1; /* silalukov sa pocita - atkl * pocet lukostrelcov (zavisi od poctu lukostrelcov) */ int pesiaci1 = 40; /* pocet pesiakov pocitaca*/ int silapesiakov1 = atkp * pesiaci1; /* silapesiakov sa pocita - atkp * pocet pesiakov (zavisi od poctu pesiakov) */ int jazdci1 = 20; /* pocet jazdcov pocitaca */ int silajazdcov1 = atkj * jazdci1; /* silajazdcov sa pocita - atkj * pocet jazdcov ( zavisi od poctu jazdcov)*/ int katapulty1 = 3; /* pocet katapultov pocitaca */ int silakatapultov1 = atkk * katapulty1; /* pocetkatapultov sa pocita - atkk * pocet katapultov ( zavisi od poctu katapultov) */ int vojsko1 = Vojsko1( silalukov1, silapesiakov1, silajazdcov1, silakatapultov1 ); printf( "\nJednotky tvojho nepriatela: \n" ); printf( "lukostrelci PC: 20\n" ); printf( "pesiaci PC: 40\n" ); printf( "jazdci PC: 20\n" ); printf( "katapulty PC: 3\n" ); printf( "\n\n\n\n" );
if( silalukov < silalukov1 ) printf( "\nTvoji lukostrelci bohuzial prehrali" );
if( silalukov > silalukov1 ) printf("\nBlahozelam, tvoji lukostrelci porazili nepriatelskych lukostrelcov" ); if( silalukov == silalukov1 ) printf("\n Sily su vyrovnane, nikto nemoze zvitazit.");
if( silapesiakov < silapesiakov1 ) printf("\nTvoji pesiaci bohuzial prehrali" );
if( silapesiakov > silapesiakov1 ) printf("\nTvoji pesiaci porazili nepriatelskych pesiakov, blahozelam" ); if ( silapesiakov == silapesiakov1) printf("\nSily su vyrovnane, nikto nemoze zvitazit."); if( silajazdcov < silajazdcov1 ) printf( "\nTvoji jazdci bohuzial prehrali" );
if( silajazdcov > silajazdcov1 ) printf( "\nTvoji jazdci rozprasili nepriatelskych jazdcov" ); if(silajazdcov == silajazdcov1) printf("\n Sily su vyrovnane, nikto nemoze zvitazit."); if( silakatapultov < silakatapultov1 ) printf( "\nTvoje katapulty bohuzial prehrali" );
if( silakatapultov > silakatapultov1 ) printf( "\nTvoje katalupty rozprasili vsetky nepriatelske katapulty" ); if( silakatapultov == silakatapultov1 ) printf("\n Sily su vyrovnane, nikto nemoze zvitazit."); /**//**//**//**//**//**//**//**/ /**/ Sleep(5000); /**/ /**/ /**/ /*po vyhodnoteni boja 5s a tak odpoved vyhra/prehra*/ /**/ system("cls"); /**/ /**//**//**//**//**//**//**//**/ if( vojsko == vojsko1 ){ printf("\n\n\n\n Obe vojska su vyrovnane, nikto nemoze zvitazit."); Sleep(5000); exit(EXIT_SUCCESS); } if( vojsko < vojsko1 ){ printf("\n\n\n\n Tvoje vojsko bohuzial prehralo."); Sleep(5000); exit(EXIT_SUCCESS); } if( vojsko > vojsko1 ) printf("\n\n\n\n Tvoje vojska vyhrali! Blahozelam!"); Sleep(10000); /**************************************************************************************************************************************************************/ /* UROVEN 2 */ int zlato2 = 1200; printf("**_U_R_O_V_E_N_2_**"); printf("\nTvoje pociatocne zlato je 1200"); if( silalukov > silalukov1 ) { printf("Vdaka tomu, ze tvoji lukostrelci vyhrali\n ti ostava plny pocet ich jednotiek: %d", lukostrelci); } if( silajazdcov > silajazdcov1 ) { printf("Vdaka tomu, ze tvoji jazci vyhrali\n ti ostava plny pocet ich jednotiek: %d", jazdci); } if( silapesiakov > silapesiakov1 ) { printf("Vdaka tomu, ze tvoji pesiaci vyhrali\n ti ostava plny pocet ich jednotiek: %d", pesiaci); }
if ( silakatapultov > silakatapultov1 ) { printf("Vdaka tomu, ze tvoje katapulty vyhrali\n ti ostava plny pocet ich jednotiek: %d", katapulty);
}
int lukostrelci2 = 40; int silalukov2 = atkl * lukostrelci2; int pesiaci2 = 60; int silapesiakov2 = atkp * pesiaci2; int jazdci2 = 40; int silajazdcov2 = atkj * jazdci2; int katapulty2 = 5; int silakatapultov2 = atkk * katapulty2; int vojsko2 = Vojsko2( silalukov2, silapesiakov2, silajazdcov2, silakatapultov2 ); /* S TYM BUDEM POKRACOVAT NESKOR */
getch();
return 0; }
int SilaLukov( int lukostrelci, int atkl ) { return atkl * lukostrelci; } int SilaPesiakov( int pesiaci, int atkp ) { return atkp * pesiaci;
}
int SilaJazdcov( int jazdci, int atkj ) { return atkj * jazdci;
}
int SilaKatapultov( int katapulty, int atkk ) { return atkk * katapulty;
}
int Vojsko( int silalukov, int silapesiakov, int silajazdcov, int silakatapultov ){ return silalukov + silapesiakov + silajazdcov + silakatapultov; } int Vojsko1( int silalukov1, int silapesiakov1, int silajazdov1, int silakatapultov1 ){ return silalukov1 + silapesiakov1 + silajazdov1 + silakatapultov1; } int CenaLukov( int lukostrelci, int cenal){ return lukostrelci * cenal;
} int CenaPesiakov(int pesiaci, int cenap){ return pesiaci * cenap; } int CenaJazdcov(int jazdci, int cenaj){ return jazdci * cenaj;
} int CenaKatapultov(int katapulty, int cenak){ return katapulty * cenak; } int Vojsko2(int silalukov2, int silapesiakov2, int silajazdcov2, int silakatapultov2){ return silalukov2 + silapesiakov2 + silajazdcov2 + silakatapultov2; }
|
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal reDo: 01.01.2011 7:32 | |
|
mas tam zle poradie, pretoze si este nenacital pocet lukostrelcov a hned to nasobis so silou jedneho vo funkcii SilaLukov, lukostrelci moze byt tym padom hocico ked ich neinicializujes na nejaku hodnotu,
co takto? a aj ostatne zbrane daj takto, potom by to malo fungovat tak ako potrebujes
Kód: /*LUKOSTRELCI*/ int lukostrelci; int atkl = 8; //atkl - attack lukov printf( "\n\n\nNapis pocet tvojich lukostrelcov\n(cena:5/lukostrelec): " ); scanf( "%d", &lukostrelci ); int silalukov = SilaLukov( lukostrelci, atkl );
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| problem s PHP kódom v PHP, ASP | 4 | 373 | 03.01.2013 12:42 saboter14 | | Problem s php kodom pravdepodobne cookies v PHP, ASP | 9 | 542 | 15.06.2007 17:35 chiwo | | Problem s ochranym kodom v mobile v Mobilné zariadenia | 2 | 550 | 22.12.2008 14:52 majky358 | | Pomoc kodom v Redakčné systémy | 4 | 522 | 26.03.2007 12:16 kajbo | | pomoc s kodom v Assembler, C, C++, Pascal, Java | 3 | 497 | 01.03.2011 15:42 peto2301 | | Pomoc s umiestnenym kodom v JavaScript, VBScript, Ajax | 1 | 311 | 24.10.2012 11:07 Ďuri | | str_replace - nahradenie nového riadku kódom <br> v PHP, ASP | 7 | 801 | 30.12.2010 10:37 blazej44800 | | "Náhodné" sms s kódom od google v Služby a webstránky | 1 | 306 | 27.09.2020 9:47 shiro | | M Firefox problém so sťahovaním a GCH problém s updatom v Sieťové a internetové programy | 0 | 1362 | 23.01.2015 16:06 Stary | | Problém so zobrazovaním www stránok, problém užívateľa v Operačné systémy Microsoft | 17 | 2137 | 23.03.2009 10:41 FERDA23 | | Záhadný problém s PC... problém procesora? [ Choď na stránku: 1, 2 ] v AMD - Advanced Micro Devices | 45 | 4737 | 26.04.2012 11:14 netpeter77 | | Battlefield 3 SKIDROW problem + win7 problem v Počítačové hry | 1 | 1580 | 22.09.2012 23:51 walther | | Problém s MB ASUS P5K - problém s Realtek v Ovládače | 4 | 2305 | 14.06.2008 10:36 $ph!nX | | Problém s HDD / Problém s bootovaním v Pevné disky a radiče | 4 | 1465 | 22.02.2013 14:08 lucifer666x | | Problem v Ostatné | 3 | 209 | 18.04.2012 16:15 ViktorinoSK | | Problem? v Ostatné | 2 | 699 | 26.03.2009 19:27 Ominous |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|