IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: Zadání: Vytvořte simulátor zjednodušené hry „Člověče, nezlob se!“

V předchozím kvízu, Online test znalostí Python 2.7, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Dololo
Člen
Avatar
Dololo:25.10.2022 15:32

Ahoj :)
je tu někdo, kdo tento úkol zvládne? kdyby byl někdo ochoten si vydělat na pivo, napište :)
Děkuji mnohokrát a s pozdravem

Zkusil jsem: .

Chci docílit: .

 
Odpovědět
25.10.2022 15:32
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Dololo
DarkCoder:25.10.2022 18:34

No jo, začaly Podzimní prázdniny a úkoly se nahrnuly.. :D Avšak snaha vypracovat úlohu sám je ta tam.. Přitom k vyřešení nepotřebuješ víc než základní dovednosti. Pokud se o něco pokusíš, i třeba že něčemu nebudeš rozumět, ale pokusíš, tak se zde jistě najde někdo kdo Ti poradí...

Nahoru Odpovědět
25.10.2022 18:34
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Dololo
Člen
Avatar
Dololo:25.10.2022 18:46

Prosím,můžete mi poradit, jak s tím začít. Moc prosím

 
Nahoru Odpovědět
25.10.2022 18:46
Avatar
Pavel
Člen
Avatar
Odpovídá na Dololo
Pavel:25.10.2022 19:42

Otevřeš si editor, ve kterém budeš psát kód, otevřeš browser a půjdeš na google.com. Přečteš si pořádně zadání.
Až budeš něco mít napsané, ale na něčem se zasekneš, tak napíšeš sem.

 
Nahoru Odpovědět
25.10.2022 19:42
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:26.10.2022 7:57

Forum je od toho, aby ses mohl poradit o nejakem problemu v kodu. Neresi cele programovani. Na to mas jine webovky, jako webtrh nebo tusim na jakpsatweb maji nabidky prace.
Pokud se neptas na chybu v kodu, tak se da ocekavat, ze cena programovani bude prinejmensim 500kc za kazdou zapocatou hodinu. Cili, pokud k tomu, co ti dodaji, budes mit nejake pripominky a budou to spravovat, tak te to bude stat uz min 1000, protoze mezi zacatkem prace a zacatkem uprav nejspis uplyne vice nez hodina, takze zapocnes uz 2h.

Nicmene, je tu ten google. Clovece nezlob se je pomerne proflaknuta hra a kod se bude dat najit googlem v mnoha jazycich. Jiny nazev je treba Ludo. V html/javascriptu to muzes najit treba zde (soubor - ulozit jako... a mas cely programovay kod, jen to umet prepsat do pythonu :) ):
https://mlich.zam.slu.cz/…/clovece.htm

 
Nahoru Odpovědět
26.10.2022 7:57
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:26.10.2022 8:02

Fiha, koukam, ze to je spesl zadani. To, hodne stesti :) Zkus spoluzaky. Tohle se v podstate bude muset delat cele od zacatku a promyslet. Domecek a pole pred domeckem nesmi byt otravene ani starto pole, protoze otravou se na ne vracis. At...

 
Nahoru Odpovědět
26.10.2022 8:02
Avatar
Dololo
Člen
Avatar
Dololo:27.10.2022 12:00

Něco takového už mám. teď chce, když si vytáhne číslo 6, chce, aby házel kostkou, dokud nevytáhnou jiné číslo než 6. Nevím, jak to udělat. nějaký for range nebo něco jiného?

 
Nahoru Odpovědět
27.10.2022 12:00
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.10.2022 12:48

Zkus kliknout na tlacitko editoru tady </> a zkopirovat sem kod. Obrazek neni mozne spustit na mem pc.

https://docs.python.org/…/random.html

N = random.randint(a, b)

# a zeptas se IFem, zda je mensi nez 6, ne?

Sak, v te v javascriptu delam neco podobne. Pokud nema hrac zadnou figurku mimo domecek, a ma alespon 1 nenasazenou, tak muze hazet 3x, dokud nehodi 6. Jinak muze hazet jen jednou a hrat figurkou nebo stat, podle situace. Lepsi by bylo, na jeden klik, hodit hnedka vsemi kostkami a hracovi zobrazit 1 kostku nebo 3. V tomhle to mam blbe, ze hrac musi opakovane klikat, kdyz nema nic nasazene.

 
Nahoru Odpovědět
27.10.2022 12:48
Avatar
Dololo
Člen
Avatar
Odpovídá na Peter Mlich
Dololo:27.10.2022 12:54
from random import randint
kostka = randint(1,6)
if kostka == 6:
    for j in range(kostka != 6):
        print(kostka, kostka)


n = 50
x = n +2
fig = "#"
tries = 1

print("Turn:",tries, '\t' "Throws:", kostka)

i = ("." * x)
forr_i = ""
l_p = 0
while l_p < len(i):
    if l_p % 10 == 0 and l_p != 0:
        forr_i += "P"
    forr_i += i[l_p]
    l_p += 1
print(forr_i)

start = 0
end = x

print("Game finished in turn", tries)
 
Nahoru Odpovědět
27.10.2022 12:54
Avatar
Dololo
Člen
Avatar
Dololo:27.10.2022 12:57

Vím, že to není dobré, ale snažím se dělat cokoliv

 
Nahoru Odpovědět
27.10.2022 12:57
Avatar
DarkCoder
Člen
Avatar
DarkCoder:27.10.2022 13:06
// Forrest Gump Simulator

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

#define GUMP 'P'
#define NONE '.'
#define SHIT '#'
#define NEWLINE '\n'
#define SPACE ' '
#define LIMIT 100
#define START_POS 1

void draw_info(unsigned turns, unsigned throws);
void game_simul(unsigned len);
void draw_board(unsigned len, unsigned forr_pos, unsigned shit_pos);
void draw_nums(unsigned len);
unsigned dice_roll(unsigned max);

int main(void) {

        srand((unsigned)time(NULL));

        puts("Jmenujes se Forrest Gump. Investice do firmy s ovocem Ti bohuzel nevysla.");
        puts("A tak si se rozhodl, ze uspejes tim ze prebehnes napric celou Alabamu.\n");

        puts("Priprav se, jdeme na to.\n");

        game_simul(80);

        return 0;
}

void game_simul(unsigned len) {
        unsigned forr_pos = START_POS;
        unsigned shit_pos = 10;
        unsigned throws = 0;
        unsigned turns = 0;

        while(turns <= LIMIT) {
                draw_info(turns, throws);
                draw_board(len, forr_pos, shit_pos);
                draw_nums(len);
                putchar(NEWLINE);

                if (forr_pos == len) break;

                throws = dice_roll(6);

                if (forr_pos + throws <= len) {
                        forr_pos += throws;

                        if (((forr_pos % shit_pos) == 0) && (forr_pos != len)) {
                                puts("Jee, prave si slapnul do desivyho hovna. Vracis se na start pro nove Najky.\n");
                                forr_pos = START_POS;
                        }
                }

                turns++;
        }

        if (forr_pos == len) {
                puts("Gratuluji Forreste, podarilo se Ti prebehnou napric celou Alabamu.");
                puts("Libas sve bezecke Najky a odhazujes do rvouciho davu sve upocene tricko.");
                puts("V cili Te s nadsenim vita Buba, ktery mezitim zbohatl na obchodu s krevetami.");
                puts("Zapomen na neuspesnou investici do firmy s ovocem, krevety jsou nej.\n");
        }
        else {
                puts("Bohuzel Forreste, nepodarilo se Ti prebehnout napric celou Alabamu. To bejva.");
                puts("Ale diky tobe jsme zjistili jak je cela ta cesta plna desivych hoven.");
                puts("Nevzdavej se, priste se Ti to urcite podari.\n");
        }
}

void draw_info(unsigned turns, unsigned throws) {
        printf("Turn: %5u Throws: %5u\n", turns, throws);
}

void draw_board(unsigned len, unsigned forr_pos, unsigned shit_pos) {
        for (unsigned i = 1; i <= len; i++) {
                if(((i % shit_pos) == 0) && (i != len)) putchar(SHIT);
                else {
                        if (i == forr_pos) putchar(GUMP);
                        else putchar(NONE);
                }
        }
        putchar(NEWLINE);
}

void draw_nums(unsigned len) {
        for (unsigned i = 1; i <= len; i++) {
                if ((i % 2) == 0) printf("%u", i % 10);
                else putchar(SPACE);
        }
        putchar(NEWLINE);
}

unsigned dice_roll(unsigned max) {
        unsigned throw, sum = 0;
        do {
                throw = (rand() % max) + 1;
                sum += throw;
                if (throw != max) break;
        } while (sum < LIMIT);

        return sum;
}
Editováno 27.10.2022 13:08
Nahoru Odpovědět
27.10.2022 13:06
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Pavel
Člen
Avatar
Odpovídá na Dololo
Pavel:27.10.2022 19:12
  • pojmenuj si proměnné čitelnějším způsobem
  • když hodíš 6, tak musíš hodit znovu a přičíst to k té 6, a to se musí opakovat tak dlouho kolikrát za sebou padne 6
  • pokud hráč vstoupí na otrávené pole, musíš jeho pozici vrátit zpět na 0
  • tečky, P a # slouží pro grafiku, logika té hry by měla pracovat s číselnou pozicí hráče, tj. k pozici přičítáš celkovou hodnotu hodu
  • jakmile máš spočtenou novou pozici, vykreslíš aktuální herní pole, proto je dobré mít vykreslení ve vlastní funkci
  • na konci musí poloha před hodem + hodnota hodu přesně sedět na poslední pole
 
Nahoru Odpovědět
27.10.2022 19:12
Avatar
Dololo
Člen
Avatar
Odpovídá na Pavel
Dololo:30.10.2022 10:31

mockrát děkuji za cenné rady.

 
Nahoru Odpovědět
30.10.2022 10:31
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 13 zpráv z 13.