Problem z menu tekstowym i zmienna string
Ostatnio zmodyfikowano 2013-06-09 18:49
Karol346 Temat założony przez niniejszego użytkownika |
Problem z menu tekstowym i zmienna string » 2013-06-09 16:50:22 Witam, postanowiłem znów zacząć naukę C++. I próbuję swoich sił pisząc prostą grę tekstową, lecz mam 2 problemy 1)menu Chciałem zrobić tak: [G]raj [A]utor [W]yjście i wciśniecie G,A lub W miało przechodzić do podmenu, lecz gdy dam zmienna string wywala błąd: error: switch quantity not an integer| a gdy dam zmienną int to wszystko działa z tym że muszą być liczby 1,2,3. Podmenu jest zrobione za pomocą switch...case, lecz nie wiem czy to dobry pomysł i czy nie lepiej będzie wykorzystać instrukcję warunkową if...else. 2) Menu jest w int main(), i teraz mam pytanie jak zrobić aby po przejściu do podmenu przejść do int/void graj(), int/void autor() to mój kod: #include <iostream> #include <string> #include <stdio.h>
using namespace std;
void moja_funkcja() { printf( "\033[2J" ); printf( "\033[0;0f" ); }
int main() { cout << "Witaj w Dragon Hunter! \nWciśnij [ENTER]."; cin.get(); moja_funkcja(); cout << "Jesteś w menu głownym gry."; cout << "\n [1]Graj \n [2]Autorzy \n [3]Wyjście \n "; int opcja; cin >> opcja; switch( opcja ) { case 1: cout << "===Tworzenie Postaci==="; break; case 2: cout << "strona o autorze"; break; case 3: cout << "wyjscie z gry"; break; default: cout << "Podaj liczbę odpowiadającą opcji."; break; } return 0; } PS. Pracuje na systemie linux Ubuntu, w programie Code::Block Pozdrawiam i dziękuje za pomoc |
|
unimator |
» 2013-06-09 18:35:07 1. std::string jest typem złożonym (klasą innymi słowy) a switch przyjmuje jako argument/parametr zwykłą zmienną (podstawową). W Twoim przypadku wystarczy wyłuskać znak ze zmiennej std::string metodę std::string::at(unsigned pos), która zwróci zmienną char, czyli typ podstawowy. Jednak o wiele prościej byłoby użyć zwykłej zmiennej char zamiast std::string skoro i tak będziesz pobierał tylko jeden znak. 2. Normalnie, po case x: wywołujesz funkcję graj(), autor() (zależnie od case rzecz jasna) itd., potem break. |
|
Karol346 Temat założony przez niniejszego użytkownika |
» 2013-06-09 18:49:31 Ok, dziękuje za pomoc.
@edit
Wszystko działa :) |
|
« 1 » |