• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzę grę, I mam problem z uczciwością graczy

Object Storage Arubacloud
0 głosów
326 wizyt
pytanie zadane 30 czerwca 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)
edycja 30 czerwca 2015 przez Eryk Andrzejewski

Jestem w Chorwacji i trochę mi się nudzi, więc postanowiłem stworzyć grę. Oto jej kod:
 

#include <iostream>
#include <conio.h>

using namespace std;

string graczA, graczB;
char atakA;
int  zycieA=200, zycieB=200, atak=3;

int main()
{
    cout << "Gracz 1          Gracz 2" << endl;
    cout << zycieA << "              ";   cout << zycieB << endl;

for (;;)
{
    atakA = getch();
    switch (atakA)
    {
        case '1':
            {
                zycieB = zycieB - atak;
                cout << "Zycie gracza 2 wynosi: " << zycieB << endl;
            }
        break;

        case '2':
            {
                zycieA = zycieA - atak;
                cout << "Zycie gracza 1 wynosi: " << zycieA << endl;
            }
        break;
     }
}
    return 0;
}


Narazie cos takiego naskrobałem i nie wiem jak zrobić, aby jak gracz 1 nacisnął ,,1" to nie mógł nacisnąć ponownie, zanim gracz 2 nie naciśnie ,,2".
Jestem początkujący, i jak ktoś wie jak mi pomóc może podesłać kod, i napisać gdzie go wstawić.

 

Panie, ortografia i kod w specjalnym bloku code {...} :)

5 odpowiedzi

+1 głos
odpowiedź 30 czerwca 2015 przez Buby Pasjonat (19,590 p.)

Utwórz jedną zmienną typu bool, w której przechowasz informacje, na temat kolejności i będzie ona flagą - jeśli jest prawdziwa, to gdy gracz1 wciśnie swój przycisk wykonaj atak oraz ustaw ją na fałszywą, ale jeśli jest fałszywa to atak się nie wykona. U gracza2 odwrotnie - jeśli jest fałszywa, to wykonaj atak i zmień na prawdziwą etc.

Czyli utwórz taką zmienną oraz dodaj warunek if else wewnątrz poszczególnych case'ów.

komentarz 30 czerwca 2015 przez Avernis Nałogowiec (27,400 p.)
a mógłbym prosić o przyklad, bo nie wiem np. gdzie to wstawić, nie jestem dobry w myśleniu kreatywnym, na tym ,,poziomie", umiem myśleć kreatywnie, ale w inny sposób. Doceniam to, że chciałęś pomóc ;)
komentarz 30 czerwca 2015 przez Buby Pasjonat (19,590 p.)
edycja 30 czerwca 2015 przez Buby

Zaraz zmodyfikuję twój kod i zobaczysz o czym mówię ;)

@Edit:

Zmodyfikowałem kod i teraz jest to gra turowa - gracze muszą przemiennie wciskać przyciski.

#include <iostream>
#include <conio.h>

using namespace std;

string graczA, graczB;
char atakA;
int  zycieA=200, zycieB=200, atak=3;
bool czyjaKolej=true; //Gracz1 rozpoczyna gre!

int main()
{
    cout << "Gracz 1          Gracz 2" << endl;
    cout << zycieA << "              ";   cout << zycieB << endl;

for (;;)
{
    atakA = getch();
    switch (atakA)
    {
        case '1':
            {
                if( czyjaKolej ) //Jesli czyjaKolej ma wartosc true
                {
                    zycieB = zycieB - atak;
                    cout << "Zycie gracza 2 wynosi: " << zycieB << endl;
                    czyjaKolej = false;
                }
            }
        break;

        case '2':
            {
                if( !czyjaKolej ) //Jesli czyjaKolej ma wartosc false
                {
                    zycieA = zycieA - atak;
                    cout << "Zycie gracza 1 wynosi: " << zycieA << endl;
                    czyjaKolej = true;
                }
            }
        break;
     }
}
    return 0;
}

 

komentarz 1 lipca 2015 przez niezalogowany
@Avernis - ja też jestem w Chorwacji! :D Jak tam, ciepła woda, komary nie budzą w nocy? Bo u mnie na odwrót ;)
0 głosów
odpowiedź 30 czerwca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
Hmmm myślę że zmienna statyczna dała by radę tutaj
0 głosów
odpowiedź 30 czerwca 2015 przez WojciechJot Gaduła (3,410 p.)
Czy da sie to rozwiązać za pomocą dwóch obiektów? Jak myślicie panowie>?
0 głosów
odpowiedź 30 czerwca 2015 przez Dorion300 Szeryf (90,250 p.)
NIe żebym wnikał ale nie ogarniam tej gry.

O co tutaj chodzi?

Po takie naparzanie: 1 i 2 jest bezsensu.
komentarz 30 czerwca 2015 przez Avernis Nałogowiec (27,400 p.)
A czytałeś opis? To po 1. Po 2 jak będziesz chciał to napisz do mnie (jeśli tak się da) za 1/2/3 dni, to się dowiesz efektów końcowych.
komentarz 30 czerwca 2015 przez Dorion300 Szeryf (90,250 p.)

Tak dziwnie to wykląda.

Po prostu ktoś klika 1 albo 2.

jak 1 to atakuje gracz 1 a jak 2 atakuje gracz 2.

gracz 1 nacisnął ,,1" to nie mógł nacisnąć ponownie, zanim gracz 2 nie naciśnie ,,2". 

 Czyli po prostu każdy tłucze się po koleji.

Wynik końcowy jest taki że gracz 1 zawsze wygra.

gdyż domyslny damage to 3 i jak ktoś pierwszy zacznie, ten już ma na bang wygrane.

No chyba że wpienisz system losowości.

Ale i tak kod nie wykłada za pięknie.

Ale mam nadzieję że to tylko moje pesymistyczne przeczucia i tak naprawdę gra będzie orginalna i znajdę sens.

chwilowo obecną zrobiłem taki kod:

#include <iostream>
#include <conio.h>

using namespace std;

string graczA, graczB;
char atakA;
int  zycieA=200, zycieB=200, atak=3;
bool firstA = true;

int main()
{
    cout << "Gracz 1          Gracz 2" << endl;
    cout << zycieA << "              " << zycieB << endl;

    while (true)
    {
        atakA = getch();
        switch (atakA)
        {
        case '1':
        {
            if(firstA)
            {
                zycieB = zycieB - atak;
                cout << "Zycie gracza 2 wynosi: " << zycieB << endl;
                firstA = false;
            }
        }
        break;

        case '2':
        {
            if(!firstA)
            {
                zycieA = zycieA - atak;
                cout << "Zycie gracza 1 wynosi: " << zycieA << endl;
                firstA = true;
            }
        }
        break;
        }
    }
    return 0;
}

Mam nadzieję że chociaż minimalnie pomogłem.

Pozdrawiam.

0 głosów
odpowiedź 1 lipca 2015 przez Pan Kulomb Pasjonat (18,630 p.)
Ale jak zrobisz tę grę turową to będzie ona bez sensu, bo wiadomo kto wygra. Dlaczego nie chcesz pozwolić na kilka ataków z rzędu? Gra będzie wtedy ciekawsza.
komentarz 1 lipca 2015 przez Avernis Nałogowiec (27,400 p.)
Bo to dopiero poczętek programu? Czemu wszyscy chcą wszystko odrazu?! To już męczy!!!

Podobne pytania

–1 głos
0 odpowiedzi 762 wizyt
pytanie zadane 18 sierpnia 2019 w Nasze projekty przez Wraith Gaduła (4,370 p.)
+1 głos
2 odpowiedzi 1,060 wizyt
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 27 listopada 2015 w PHP przez Rakietka Nowicjusz (140 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...