Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Máme za úkol vytvořit v BlueJ kostkovou hru Skok smrt.
Představu mám, ale napsání kódu mi dělá problémy. Mohl by někdo pomoc?
Offline

↑ bis25:
Tak tu svoji představu popiš a někdo tě usměrní. Vypadá to jednoduše.
Offline
↑ bis25:
Bohužel ti neporadím se zapsáním algoritmu (Javu neumím), ale v tvém postupu bych viděl jeden detail, který může ovlivnit průběh hry (algoritmus by fungoval, jen by neodpovídal realitě).
Když házíš dvěmi kostkami, tak to nelze nahradit jedním generováním čísla od 1 do 12, jako u hodu jednou kostkou. Při hodu dvou kostek najednou totiž nejsou všechny hodnoty součtu stejně pravděpodobné. Přesné rozdělení pravděpodobnosti je takovéto. Radil bych tedy vygenerovat dvě čísla v rozmezí 1-6 a ty poté sečíst.
Offline

↑ bis25:
Aha, já myslela, že je to součást zadání. To vypadá dobře (až na to co upozorňuje ↑ TomDlask:). Do kdy to máš mít. (Mám ještě jednu zkoušku, takže nebudu mít přes týden zatím moc čas, kdyžtak vždycky až navečer).
Já sice také Javu moc neumím, ale jestli to má být jen vypsáno na konzoli a nevloží se do toho někdo jiný, tak bych to zkusila.
Offline

↑ bis25:
To nemyslíš vážně. A máš vůbec něco? Zkus něco udělat, alespoň hrubý nárys a dej ho sem, možná se na to večer podívám, ale nic ti neslibuji.
Offline

↑ bis25:
Tak jsem ti něco udělala v C-čku - je to velmi podobné, jen předěláš výpisy, načítání z klávesnice a deklaraci pole.
Zdá se, že to funguje.
int cislo=0, pocetKostek=0, vyhral=0;
int pocetK=0, k1=0,k2=0; //kostky - pro uložení vygenerovaného čísla
int soucet[3]={0,0,0}; //pole součtů - každý uživatel jeden prvek
int hracVypadl[3]={1,2,3}; //hrac který vypadl, když vypadne jeho prvek se vynuluje
int cisloHrace[3]={1,2,3};
int pocetHracu=3,pomPH=pocetHracu;
bool konec=false;
int i=0;
/*
Hrac 1 zadá číslo a pokračuje házením
*/
printf("\nHrac %i: zadej cislo mezi 30-50: ",cisloHrace[i]); //pridej podminku, aby bylo skutecne mezi 30-50
scanf("%i",&cislo); // nacteni cisla
do
{
printf("------------------------");
for(int i=0; i<pocetHracu; i++)
{
//Do hracVypadl se zapise nula když hráč prohraje a při dalším průchodu je vynechán
if(hracVypadl[i]==0 && i!=(pomPH-1))//pomPH - aby se iterovalo až na začátku nového cyklu ne třeba v půli
i++;
printf("\nHrac %i: zadej pocet kostek: ",cisloHrace[i]); //ošetři, aby bylo zadáno jen 1 nebo 2
scanf("%i",&pocetK);
// Hraci hazeji kostkou
if(pocetK==1)
{
k1=rand()%6+1; //čísla od 1 do 6
soucet[i]+=k1; //do příslušného prvku součtu se přičte hozené číslo (soucet[i]=soucet[i]+k1)
printf("soucet hrace %i = %i; k1=%i \n", cisloHrace[i], soucet[i],k1);
}
if(pocetK==2)
{
k1=rand()%6+1; //čísla od 1 do 6
k2=rand()%6+1; //čísla od 1 do 6
soucet[i]=soucet[i]+(k1+k2); //do příslušného prvku součtu se přičte hozené číslo (soucet[i]=soucet[i]+(k1+k2))
printf("soucet hrace %i = %i, k1=%i, k2=%i, k1+k2=%i \n", cisloHrace[i], soucet[i],k1,k2,k1+k2);
}
//Když je součet >= cislo
if(soucet[i]>=cislo)
{
printf("\n\n vypadl hrac cislo: %i, se skorem: %i\n\n", cisloHrace[i],soucet[i]);
hracVypadl[i]=0;
if(pomPH > 1)
pomPH-=1;
else
break;
printf("\t\tpocet hracu: %i\n", pomPH);
}
}
if(pomPH<=1)
{
for(int k=0; k<3; k++)
{
if(hracVypadl[k]!=0)
vyhral=k+1;
}
printf("\n\nVyhral hrac cislo: %i.\n",vyhral);
konec=true;
}
printf("\n");
}while(!konec);Offline

↑ bis25:
Tak se zeptej doplním komentáře.
Offline