Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Projekt

Aktivity
Avatar
gamer111111
Člen
Avatar
gamer111111:16.3.2015 19:11

Potřebuji pomoct s jednoduchou hrou, která vykreslí na obrazovce 3 hrací kostky, na kterých se budou střídat náhodná čísla. Cílem hráče je zmáčknout mezerník v případě, že jsou alespoň na 2 kostkách stejná čísla. Hra bude počítat body.

 
Odpovědět
16.3.2015 19:11
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:16.3.2015 21:33

Nejsem si jistý, zda tady moc lidí bude (pozitivně) reagovat na příspěvek, který si mohou vyložit i tak, že bys chtěl, aby za tebe někdo jiný ten úkol v podstatě udělal.

Každopádně, zadání známe (alespoň jeho obrysy). Zkus specifikovat, co ti přesně dělá problémy.

Nahoru Odpovědět
16.3.2015 21:33
2 + 2 = 5 for extremely large values of 2
Avatar
gamer111111
Člen
Avatar
gamer111111:20.3.2015 17:47

Zatím mám toto ale nevím jak to udělat aby se mi ty čísla v konzoly střídala.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int i, n;
time_t t;

n = 1;

srand;

for( i = 0 ; i < n ; i++ ) {
printf("--- \n");
printf("[%d] \n", rand() % 6);
printf("--- \n");

printf("\n");

printf("--- \n");
printf("[%d] \n", rand() % 6);
printf("--- \n");

printf("\n");

printf("--- \n");
printf("[%d] \n", rand() % 6);
printf("--- \n");
}

system ("PAUSE");
return(0);
}

 
Nahoru Odpovědět
20.3.2015 17:47
Avatar
Odpovídá na gamer111111
Libor Šimo (libcosenior):21.3.2015 9:21
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* funkcia - pauza na 1 milisekundu */
void sleep(unsigned int msecund)
{
    clock_t ciel; // deklarácia premennej typu clock_t
    ciel = msecund + clock(); // vložiť do premennej čas o trvaní 1 milisekundy (sekunda má 1000 milisekúnd)
    while (ciel > clock()); // beží kým sa nevy-clock-uje po 0 (nulu)
}

int main(void)
{
    int i, n;

    n = 10;

    srand(time(0));

    for( i = 0 ; i < n ; i++ ) {
        printf("--- \n");
        printf("[%d] \n", rand() % 6);
        printf("--- \n");

        printf("\n");

        printf("--- \n");
        printf("[%d] \n", rand() % 6);
        printf("--- \n");

        printf("\n");

        printf("--- \n");
        printf("[%d] \n", rand() % 6);
        printf("--- \n");
        sleep(1500);
        system("cls");
    }

    system ("PAUSE");

    return(0);
}
Nahoru Odpovědět
21.3.2015 9:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Novák
Tvůrce
Avatar
David Novák:21.3.2015 10:01

gamer111111 Libor Šimo (libcosenior)

Když už děláte něco v C, tak to zkuste dělat multiplatformně ;)
Tj. nepoužívat system("PAUSE") a podobně.. Doporučuju překládat se specifikovaným standardem a pedantic kontrolou.

Nahoru Odpovědět
21.3.2015 10:01
Chyba je mezi klávesnicí a židlí.
Avatar
David Novák
Tvůrce
Avatar
David Novák:21.3.2015 23:01

Ohledně toho se mi líbil jeden příspěvek na fóru, kde se to řešilo.. :D

"Don't use system("anything"). It is slow. It is disliked by antivirus software. It is OS-dependent. It tags you as an absolute beginner. And it is a massively huge, gaping, ugly security hole.
If all you are doing is some silly homework assignment or playing with your own code, it is fine. But for everything else: please, please don't."

Ale abych byl kontruktivní, tak se to dá jednoduše nahradit například vypsáním textu a prázdným getcharem nebo něco podobného.. Otázka ale je, proč to vlastně používat.. Nevím přesně, jak je to ve windows, když spustíš normálně terminálovou aplikaci.. Zavře se hned po returnu z main? Vím, že to dělají některé IDE (což je ale teda hrubý nedostatek), ale docela by mě i zajímalo, jak se bude chovat normálně spuštěná aplikace..

Pokud by se hned zavřela (což nechceme), tak když už system(něco), tak to dát do podmíněného překladu..

#ifdef _WIN32
  system("pause");
#endif

Takhle se tam to systémové volání vloží jen při překladu pro windows a nebude házet undefined error při překladu např. pod linuxem.. :)

Samozřejmě stejně to jde udělat pro linux, mac, unix.. Obecně je dobrá praxe tohle udělat, když už použiju nějaký ten platform-specific kód..

Editováno 21.3.2015 23:04
Nahoru Odpovědět
21.3.2015 23:01
Chyba je mezi klávesnicí a židlí.
Avatar
gamer111111
Člen
Avatar
gamer111111:22.3.2015 15:06

Díky za rady, ale potřeboval bych, aby se mi ty čísla v té kostce měnila, a já když uvidím dvě stejná čísla, tak to zastavím.

 
Nahoru Odpovědět
22.3.2015 15:06
Avatar
Libor Šimo (libcosenior):23.3.2015 14:16

Vyskúšaj tento programík.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#if GETCH_LINUX
int getch()
{
    struct termios oldt,
    newt;
    int ch;
    tcgetattr( STDIN_FILENO, &oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, &newt );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
    return ch;
}
#endif


#ifdef _WIN32
    #include <conio.h>
    #define CLEAR system("cls")
    #define GETCH_LINUX 0
#else
    #include <termios.h>
    #include <unistd.h>
    #define CLEAR system("clear")
    #define GETCH_LINUX 1
#endif

int main(void)
{
    int i, n;
    char c;

    n = 10;
    srand(time(0));
    for( i = 0 ; i < n ; i++ ) {
        CLEAR; // pre win, linux, unix
        printf("--- \n");
        printf("|%d| \n", rand() % 6);
        printf("--- \n");

        printf("\n");

        printf("--- \n");
        printf("|%d| \n", rand() % 6);
        printf("--- \n");

        printf("\n");

        printf("--- \n");
        printf("|%d| \n", rand() % 6);
        printf("--- \n");

        /* klávesou Enter pokračuješ ďalej, klávecou 's' to stopneš */
        c = getch();
        if (c == 's')
            break;
        else
            continue;
    }
    printf("\nSTOP!\nUkoncite lubovolnou klavesou.\n");
    getch();

    return(0);
}
Nahoru Odpovědět
23.3.2015 14:16
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na gamer111111
Libor Šimo (libcosenior):23.3.2015 14:51

Teraz som si všimol, že v zadaní máš stopnutie medzerníkom, tak si to v kóde oprav.

Nahoru Odpovědět
23.3.2015 14:51
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
gamer111111
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
gamer111111:23.3.2015 20:57

Nevím přesně, kde to je, nějak se v tom neorientuji.

 
Nahoru Odpovědět
23.3.2015 20:57
Avatar
gamer111111
Člen
Avatar
gamer111111:23.3.2015 21:01

Už jsem to našel, ale mám jiný problém ta konzole se mi objeví, ale jak cokoliv zmáčknu tak se vypne?

 
Nahoru Odpovědět
23.3.2015 21:01
Avatar
Odpovídá na gamer111111
Libor Šimo (libcosenior):24.3.2015 9:06

V čom to compiluješ?

Nahoru Odpovědět
24.3.2015 9:06
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na gamer111111
Libor Šimo (libcosenior):24.3.2015 15:01

Veľmi staré IDE, prejdi na Code::Blocks alebo Visual Studio.

Nahoru Odpovědět
24.3.2015 15:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
gamer111111
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
gamer111111:26.3.2015 18:20

Toto funguje dobře, ale ještě bych potřeboval, abych to mohl zastavit, a aby mi to počítalo ty body, když jsou dvě čísla stejné.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* funkcia - pauza na 1 milisekundu */
void sleep(unsigned int msecund)
{
clock_t ciel; // deklarácia premennej typu clock_t
ciel = msecund + clock(); // vložiť do premennej čas o trvaní 1 milisekundy (sekunda má 1000 milisekúnd)
while (ciel > clock()); // beží kým sa nevy-clock-uje po 0 (nulu)
}

int main(void)
{
int i, n;

n = 10;

srand(time(0));

for( i = 0 ; i < n ; i++ ) {
printf("--- \n");
printf("[%d] \n", rand() % 6);
printf("--- \n");

printf("\n");

printf("--- \n");
printf("[%d] \n", rand() % 6);
printf("--- \n");

printf("\n");

printf("--- \n");
printf("[%d] \n", rand() % 6);
printf("--- \n");
sleep(1500);
system("cls");
}

system ("PAUSE");

return(0);
}

 
Nahoru Odpovědět
26.3.2015 18:20
Avatar
Odpovídá na gamer111111
Libor Šimo (libcosenior):26.3.2015 18:25

Trosku sa musis posnazit aj sam. Zakladny kod mas, teraz to uz len dokoncit. ;-)

Nahoru Odpovědět
26.3.2015 18:25
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
gamer111111
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
gamer111111:31.3.2015 15:23

Nevím jak to dokončit

 
Nahoru Odpovědět
31.3.2015 15:23
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na gamer111111
David Novák:1.4.2015 8:57

zkoušej.. ;)
Jinak se programovat nikdy nenaučíš.. musíš se naučit myslet.. dekomponovat problém na podproblémy.. Když to někdo napíše za tebe, je ti to k ničemu.. V dospělosti za tebe nikdo pracovat nebude.

Nahoru Odpovědět
1.4.2015 8:57
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na gamer111111
Libor Šimo (libcosenior):1.4.2015 18:27

Je tam pre mňa problém s threadom, nemám s tým ešte žiadne skúsenosti. Je divné, že ste dostali takú náročnú úlohu.
Ale možno špatne rozumiem zadaniu a je to jednoduché.

Nahoru Odpovědět
1.4.2015 18:27
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
gamer111111
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
gamer111111:12.4.2015 20:37

Skoro to už mám ale nevím jak to zastavovat tím mezerníkem, můžete mi pomoct?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* funkcia - pauza na 1 milisekundu */
void sleep(unsigned int msecund)
{
clock_t ciel; // deklarácia premennej typu clock_t
ciel = msecund + clock(); // vložiť do premennej čas o trvaní 1 milisekundy (sekunda má 1000 milisekúnd)
while (ciel > clock()); // beží kým sa nevy-clock-uje po 0 (nulu)
}
int main(void)
{
int i, n;
int a,b,c,body,zdrzo­vac;
body= 0;
n = 10;
srand(time(0));
for( i = 0 ; i < n ; i++ ) {
printf("--- \n");
a = rand() % 6;
a++;
printf("[%d] \n", a);
printf("--- \n");
printf("\n");
printf("--- \n");
b = rand() % 6;
b++;
printf("[%d] \n", b);
printf("--- \n");
printf("\n");
printf("--- \n");
c = rand() % 6;
c++;
printf("[%d] \n", c);
printf("--- \n");
if (a == b) {
body++;
}
if (a == c) {
body++;
}
if (b == c) {
body++;
}
printf(" \nAktualni pocet bodu: %d\n", body);
sleep(1500);
system("cls");
}
printf(" \n Celkovy pocet bodu : %d \n", body);
getch();
system ("PAUSE");
return(0);
}

 
Nahoru Odpovědět
12.4.2015 20:37
Avatar
Nahoru Odpovědět
15.4.2015 10:38
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):15.4.2015 10:44

Samozrejme, že to nie je dokonalé, na tom nemal čas. :)

Nahoru Odpovědět
15.4.2015 10:44
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Novák:15.4.2015 10:44

Jsi na něho nějaký hodný - měl by se to naučit sám ;)

Jo a pokud by byl OP někdy na vysoké, tak s takovým to postupem prakticky okamžitě skončí - plagiátorství a disciplinární komise..

Nahoru Odpovědět
15.4.2015 10:44
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na David Novák
Libor Šimo (libcosenior):15.4.2015 12:18

Ten chlapec nikdy nebude programovať a navyše si myslím, že keď odovzdá to čo som napísal, môže s tým mať problém. Ak pochopí princíp (popísal som to myslím dostatočne), môže si to upraviť a bude to jeho. ;)

Nahoru Odpovědět
15.4.2015 12:18
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 24.