Avatar
Erik Báča
Člen
Avatar
Erik Báča:

Ahoj, potřeboval bych poradit, mám hotovou část konzolové hry, a potřeboval bych nějak udělat, aby po každé hře začínal druhý hráč, nebo aby vždycky začínal hráč co prohrál (je to jedno), sám jsem vymyslel tohle, ale když vyhraje 1 hráč 2x po sobě tak začíná ten co vyhrál (vím proč, ale nevím jak to změnit)

import java.util.Scanner;
public class gejmz {


        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);


                // vysvětlení pravidel
                System.out.println("Znáte pravidla hry?");
                String volba1 = "ano"; //nahradit za sc.nextLine();
                if (volba1.equals("ne"))
                        System.out.println("Na stole leží 25 sirek, hráči se střídají v odebírání sirek ze stolu, v jednom kole může hráč odebrat maximálně 3 sirky, prohrává ten kdo si vezme poslední sirku.");


                // výběr módu
                System.out.println("Chcete hrát proti počítači, nebo proti jinému hráči?");
                System.out.println("1 - CPU");
                System.out.println("2 - Hráč");
                int mod = 2; //nahradit za sc.nextLine();


                // mód proti počítači
                if (mod == 1)
                {

                }


                // mód proti jinému hráči
                if (mod == 2)
                {


                        String hrac2 = "HRÁČ 2";
                        String hrac2v = "Hráč 2 vyhrává";
                        String hrac1 = "HRÁČ 1";
                        String hrac1v = "Hráč 1 vyhrává";


                        String pokracovat = "ano";
                        while (pokracovat.equals("ano")) //cyklus pro možnost opakování hry bez nutnosti restartovat hru
                        {

                                int aktualniStav = 25;
                                while ((aktualniStav <= 25) && (aktualniStav > 0))
                                {

                                        System.out.println(hrac1);
                                        System.out.println("Kolik sirek chcete odebrat?");
                                        int volba2 = Integer.parseInt(sc.nextLine());


                                        if ((volba2 < 4) && (volba2 > 0)) // zamezuje podvádění
                                        {
                                                aktualniStav = aktualniStav - volba2; // počítá kolik sirek hráči odebrali
                                        }
                                        else // když hráč podvádí...
                                        {
                                                        System.out.println("neplatná volba");
                                        }

                                        if (aktualniStav == -1)
                                                aktualniStav = aktualniStav + 1;

                                        if (aktualniStav == -2)
                                                aktualniStav = aktualniStav + 2;


                                        System.out.println("Ještě zbývá " + aktualniStav + " sirek"); // výpis pro hráče


                                        if (aktualniStav == 0) // když už známe vítěze
                                        {
                                                System.out.println(hrac2v);

                                                hrac1 = hrac1.replace("HRÁČ 2", "HRÁČ 1");
                                                hrac1v = hrac1v.replace("2", "1");
                                                hrac2 = hrac2.replace("HRÁČ 1", "HRÁČ 2");
                                                hrac2v = hrac2v.replace("1", "2");


                                                System.out.println("Chcete hrát novou hru?");
                                                pokracovat = sc.nextLine();

                                        }


                                        else // když zatím nikdo nevyhrál, hraje další hráč
                                        {
                                                System.out.println(hrac2);
                                                System.out.println("Kolik sirek chcete odebrat?");
                                                int volba3 = Integer.parseInt(sc.nextLine());


                                                if ((volba3 < 4) && (volba3 > 0)) // zamezuje podvádění
                                                aktualniStav = aktualniStav - volba3; // počítá kolik sirek hráči odebrali
                                                else // když hráč podvádí...
                                                {
                                                        System.out.println("neplatná volba");
                                                }


                                                if (aktualniStav == -1)
                                                        aktualniStav = aktualniStav + 1;

                                                if (aktualniStav == -2)
                                                        aktualniStav = aktualniStav + 2;


                                                System.out.println("Ještě zbývá " + aktualniStav + " sirek"); // výpis pro hráče


                                                if (aktualniStav == 0) // když už známe vítěze
                                                {
                                                        System.out.println(hrac1v);


                                                        hrac1 = hrac1.replace("HRÁČ 1", "HRÁČ 2");
                                                        hrac1v = hrac1v.replace("1", "2");
                                                        hrac2 = hrac2.replace("HRÁČ 2", "HRÁČ 1");
                                                        hrac2v = hrac2v.replace("2", "1");


                                                        System.out.println("Chcete hrát novou hru?");
                                                        pokracovat = sc.nextLine();
                                                }


                                        }
                                }
                        }
                }



                if ((mod != 1) && (mod != 2)) // žádný jiný mód zatím neexistuje
                {
                        System.out.println("Neplatná volba");
                }

        }

}
Odpovědět 18. ledna 17:58
Když mi dáš mínus, napiš proč!
Avatar
Atrament
Člen
Avatar
Atrament:

Řekl bych, že jsi dospěl přesně do toho okamžiku, kdybys měl sednout k nějakým tutoriálům nebo knize o objektově orientovaném programování, pořádně si to prostudovat a pak to v tom duchu přespat. Sám vidíš, že takto - všechno v jedné metodě - se moc dál pokračovat nedá, aniž by ses z toho zbláznil :) Jenom z toho množství ifů mně přecházejí oči :)

 
Nahoru Odpovědět  +5 21. ledna 0:15
Avatar
Erik Báča
Člen
Avatar
Odpovídá na Atrament
Erik Báča:

Už se na to chystám (y)

Nahoru Odpovědět 21. ledna 11:47
Když mi dáš mínus, napiš proč!
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Erik Báča
Daniel Vítek:

Jejda sirky, to má na svědomí Stloukal, co? :D

 
Nahoru Odpovědět  +1 21. ledna 19:19
Avatar
Erik Báča
Člen
Avatar
Erik Báča:

Yep, já to programování s ním moc neřeším, ale řekl mi abych něco podobnýho udělal tak proč ne, ale teď mě hrozně dostal, když jsme po půl roce vývojových diagramů začali dělat něco v Basicu, 1. hodinu jsme se snažili spustit visual studio ( nakonec se to povedlo půlce) a 2. hodinu jsme si ukázali pár jednoduchých příkazů, potom nám chtěl ukázat něco složitějšího, ale nešlo mu to a tak hledal v nápovědách a používal ctrl - c, ctrl - v, u těch příkazů nám nic nevysvětlil a řekl nám, že když nebudeme vědět co dělá nějakej příkaz, tak na něj najedeme a zmáčkneme F1, takže mám strach, že ty hodiny budou jenom o tom naučit se nazpaměť nějaký algoritmy a bude nám to k ničemu..... :D

Nahoru Odpovědět  ±0 21. ledna 20:26
Když mi dáš mínus, napiš proč!
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Erik Báča
Daniel Vítek:

On dělá hlavně ty algoritmy, programování je až potom v druháku :)

// Ale to už je offtopic :D

Editováno 21. ledna 21:13
 
Nahoru Odpovědět 21. ledna 21:12
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Erik Báča
Daniel Vítek:

Jednoduše by to šlo udělat takto:
Pro lepší "přehlednost" si můžeš od uživatele vytáhnout jméno. Na konci si do další proměnné uložíš jméno hráče, který prohrál, a pak jen vypíšeš Na tahu je hráč X.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 21. ledna 21:15
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 7 zpráv z 7.