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

c++ IF i SWITCH naraz czy można?

Object Storage Arubacloud
0 głosów
626 wizyt
pytanie zadane 3 kwietnia 2016 w C i C++ przez veryhotshark Obywatel (1,620 p.)
witam  mam pytanie mianowicie gdybym zrobił dwie klasy bohaterów nazwijmy ich gracz 1 i 2 i każdy z nich miałby voida wybor() i w tym voidzie jest switch(wybierz) z 2 case np. to czy mógłbym jakoś porównać wybór 1 z 2-gim?
że jezeli gracz 1 wybrał swoim switchu case 1 a drugi wybrał case 2 to robią się następujące instrukcje

czy to wyglądało by jakoś tak if(gracz 1 wybierz==2 && gracz 2 wybierz== 2)

{

// i tu jakieś instrukcje

}

czy to inaczej by wyglądało?

2 odpowiedzi

+2 głosów
odpowiedź 3 kwietnia 2016 przez Dubgron Mądrala (5,620 p.)

Cześć. Nie wiem dokładnie o co Ci chodzi,ale pierwsze pytanie jakie powinieneś sobie zadać, to po co ci oddzielne klasy dla graczy. Ale nawet jakbyś chciał obu w innej klasie, to jedną z opcji byłby void, który jest zaprzyjaźniony z oboma klasami, a jego argumenty to funkcje z obiektów klas gracz1 i gracz2. A tę metodę wybór() z voida zmieniłbym na np. inta, żeby móc ją posyłać do innej funkcji. Ten void porównywujący mógłby wyglądać tak: 

void porownywanie (int wyborgracza1, int wyborgracz 2) {

      //instrukcje do wykonania

}

A w main() wyglądałoby to tak: 

gracz1 g1;
gracz2 g2;

porownywanie(g1.wybor(),g2.wybor());

Mam nadzieję, że pomogłem. W razie pytań, pisz. Pozdrawiam.

komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
witam dziękuje za odpowiedź nie myślałem o tym dopiero zaczynam :)
komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
jeszcze do pana pewnie napisze bo chce taką mini giere w konsoli zrobić i jak będzie problem to się odezwe
komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
// plik.cpp

#include <iostream>
#include "Kowboj.h"
#include <windows.h>
#include <cstdlib>
#include <conio.h>
#include <cstdio>


using namespace std;

void Poczatek()
{
   Sleep(1000);
   cout<<"-------------------------------"<<endl;
   cout<<"|      GRA   W   KOWBOJE      |"<<endl;
   cout<<"-------------------------------"<<endl;
   Sleep(2000);
   cout<<"Zeby zaatakowac nacisnij : 1"<<endl;
   Sleep(1000);
   cout<<"Zeby zablokowac nacisnij : 2"<<endl;
   Sleep(1000);
   cout<<"Zeby przeladowac nacisnij : 3"<<endl;
   Sleep(1000);
   cout<<"Nacisnij ""enter"" zeby zaczac:";

}

void Menu()
{
   int runda=1;
   int wybor;
   getch(); // pobiera znak z klawiatury zeby zaczac Menu
   cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\\b\b\b\b\b\b"; // wykasowuje slowo "nacisnij enter..."
   cout<<"Twoja rozgrywka rozpocznie sie za :";
     for (int i=3; i>=0;i--)
    {
       Sleep(1000);
         cout<<i<<"\b";
    }
    system("cls");
   cout<<"1.ATTACK"<<" || "<<"2.BLOCK"<<" || "<<"3.RELOAD"<<endl;
   cout<<"-----------------------------------------------"<<endl;
   Ty atakuj;
    do{
   cout<<"Wybierz : ";
   cin>>wybor;
   switch(wybor) // to musisz wlozyc w petle nieskonczona np. while hp !=0 albo dopoki ktorys z graczy nie jest martwy zrob zmienna
   {
   case 1:
      {
      atakuj.Atak();
      }
   break;
   case 2:
      {
      atakuj.Obrona();
      }
   break;
   case 3:
      {
      atakuj.Przeladowanie();
      }
   break;
   default:
      cout<<"Fail";
   }}while(atakuj.HP==1);
}

Ty::Ty(int hp,int am)
{
   HP=hp;
   ammo=am;
}

void Ty::Atak()
{
   HP--;
   if(HP==0)
   {
      cout<<"Giniesz koniec gry";
   }
   getchar();
}
void Ty::Obrona()
{
      cout<<"Tarcza";
   getchar();
}

void Ty::Przeladowanie()
{

      if(ammo==6)
      {
         cout<<"pelny magazynek, zmarnowales ruch";
      }
      else
      {
      ammo++;
      cout<<"Ladowanie , masz w magazynku "<<ammo<<" naboji"<<endl;
      }

    getchar();
}


///plik.h

#include <iostream>

using namespace std;

void Poczatek();
void Menu();

class Bohater // czyli nasi bohaterowie w grze
{
   public:
   virtual void Atak()=0;
   virtual void Obrona()=0;
   virtual void Przeladowanie()=0;

};

class Ty:public Bohater // czyli nasz boheter
{
   int ammo;

   public:

   int HP;
   Ty(int=1,int=0);
   virtual void Atak();
   virtual void Obrona();
   virtual void Przeladowanie();
};

class AI:public Ty // czyli nasz boheter
{
   public:
   AI(int=1);
   virtual void Atak();
   /*virtual void Obrona();
   virtual void Przeladowanie();*/
};


//main

#include <iostream>
#include "Kowboj.h"
#include <windows.h>
#include <cstdlib>
#include <conio.h>
#include <cstdio>


using namespace std;



int main()
{
   Poczatek();
   Menu();

    return 0;
}

 

komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
witam to ogólnie w grze chodzi o to
że są dwaj bohaterowie i przed każdą rundą jest odliczanie 2 sekund powiedzmy pierwsza runda to 3 sekundy i w voidze Menu zrobiłem takiego Switcha że można wybrać atak czyli strzal , obrona to obrona  i przeladowanie rewolwera. I chciałbym zrobić to samo dla komputera funkcja rand() czy jakoś tak że komputer też wybiera 3 opcje powyżzej wymienione dlatego chciałem drugiego bohatera. I mam problem bo nie wiem jak zrobic funkcje która pobiera dane kto co wybrał i decyduje czy gra się kończy a reguły gry to takie:
1.jeśli gracz 1 wybrał atak i gracz 2 też to obaj giną i jest remis

2.jeśli gracz 1 wybrał atak a gracz 2 obrone to kontynujemy grę czyli następna runda

3.jeśli gracz 1 wybrał atak a gracz 2 przeladowanie to ginie i wygrywa gracz 1

no i na odwrót i teraz chciałbym funkcje która porównuje co gracz 1 wybrał i komputer
komentarz 3 kwietnia 2016 przez Dubgron Mądrala (5,620 p.)
Ok, więc na początek zmieniłbym nazwy wszystkich zmiennych na angielskie, taka dobra praktyka. Po drugie utworzyłbym klasę o nazwie np. Game, która miałaby 3 metody: start(), menu() oraz duel(int, int). Pierwsza byłaby główną pętlą gry, druga wyświetlałaby menu, a ostatnia przyjmowałaby dwa agrumenty - wybór gracza i to co wylosował bot - i na tej podstawie decydowałaby kto zginął.

Do stworzenia gracza oraz bota użyłbym 2 klas oraz struktury. Enemy, Player jako klasy oraz Stats jako struktura. Klasa Enemy miałaby w konstruktorze funkcje srand() oraz ustawienie ilości życia i ammo, i metodę pick() - która zwracałaby inta z tym co zrobi bot (swoją drogą, na twoim miejscu opracowałbym jakiś algorytm, którym posługiwałby się bot, ponieważ losowy wybór czynności może sprawić, że będzie bardzo łatwy do pokonania). Klasa Player miałaby metody Attack(), Defence() i Reload(). W konstruktorze miałaby ustawienie życia i ammo. A struktura Hero zawierałaby zmienne health i ammo, a klasy Enemy i Player miałyby w sobie te strukturę.

W mainie tworzysz tylko obiekt klasy Game i wywołujesz metodę start(). A w niej tworzysz gracza i bota i w pętli wypisujesz grę.

Wiem, że trochę zagmatwałem, ale jak będziesz miał problemy w implementacji to pisz na priv.
komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
dobrze dziękuje jeszcze się doucze kilku rzeczy i napisze za jakiś czas :)
+1 głos
odpowiedź 3 kwietnia 2016 przez Adrian1999 Nałogowiec (34,570 p.)
#include <iostream>


using namespace std;

class BohaterMain
{
	int zdrowie, armor;

protected:
	char wybranie;
public:
	
	virtual void wybor() =0 ;
	void porownaj(BohaterMain a,BohaterMain b)
	{
		if (a.wybranie == b.wybranie)
			cout << "to samo wybrales";
		else
			cout << "wybrales cos innego";
	}
};

class bohaterjeden 
	:public BohaterMain
{
public:
 void wybor()
	{
		cin >> wybranie;
		//reszta funkcji
	}
};
class bohaterdwa
	:public BohaterMain
{
public:
	void wybor()
	{
		cin >> wybranie;
		//reszta funkcji
	}
};
int main()
{
	bohaterjeden first;
	bohaterdwa second;

	cout << "Wybor dla A\n";
	first.wybor();
	cout << "Wybor dla B\n";
	second.wybor();
	cout << endl;
	first.porownaj(first, second);
	return 0;
}

Zrozumiałem mniej więcej że o to ci chodzi :D 

komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
witam podeśle panu kod na górze zmienie opis i wyjaśnie o co chodzi ale podobne
komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
ma pan kod na górze a pod w komentarzu wyjaśnie o co chodzi

Podobne pytania

0 głosów
2 odpowiedzi 337 wizyt
pytanie zadane 22 sierpnia 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
+1 głos
1 odpowiedź 221 wizyt
pytanie zadane 25 października 2016 w C i C++ przez BanditPlayGame Użytkownik (680 p.)
0 głosów
3 odpowiedzi 301 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...