Witam, piszę grę papier,kamień,nożyce w c++ builderze, jednak nie wiem jaka funkcja może losować z tych trzech obiektów. Dlatego zwracam się do Was o pomoc.
rand. Wiecej w linku
http://www.cplusplus.com/reference/cstdlib/rand/
Czy ta funkcja rand, może losować jedynie z liczb ?
tak, ale mozesz zrobic sobie cos takiego
std::map<int, string> myMap;
dodasz do mapy cos takiego
myMap[0] = std::string("papier");
myMap[1] = std::string("kamien");
myMap[2] = std::string("nozyce");
i pozniej losujesz za pomoca rand jakas liczbe i robisz
std::string losowyNapis = myMap[wylosowanaLiczba];
ewentualnie robisz tak (protsza wersja)
std::vector<std::string> myVector;
myVector.push_back("papier");
myVector.push_back("kamien");
myVector.push_back("nozyce");
int wylosowanaLiczba = 1; /*tutaj piszesz funkcje z rand*/
std::string losowyNapis = myVector[wylosowanaLiczba];
Ok, dzięki za pomoc.
- mamy rok 2016, builder jest starszy od większości obecnych gimnazjalistów
-
<random>
iuniform_int_distribution
są lepszym rozwiązaniem odrand()
https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful
#include <iostream>
#include <vector>
#include <random>
#include <string>
using namespace std;
template<typename T, typename RandEng>
auto random(RandEng &eng, T min, T max) {
return uniform_int_distribution<T>(min, max)
(eng);
}
int main() {
default_random_engine gen;
using symbol_type = string;
using symbols_type = vector<symbol_type>;
symbols_type symbols = {
"kamien",
"papier",
"nozyce"
};
for(auto i = 0u; i < 10u; ++i) {
cout << symbols[random(gen, 0u, symbols.size()-1)] << endl;
}
return 0;
}
output:
kamien
kamien
nozyce
papier
papier
kamien
kamien
nozyce
nozyce
nozyce</codE>
To co polecacie zamiast c++ builder'a ?
Jeśli w sensie kompilatora i IDE, to wybór jest spory.
GCC: https://gcc.gnu.org/ (http://www.mingw.org/ http://mingw-w64.org/doku.php https://nuwen.net/mingw.html http://tdm-gcc.tdragon.net/ ...)
Clang: http://clang.llvm.org/
I jeszcze więcej: https://en.wikipedia.org/wiki/List_of_compilers#C.2B.2B_compilers
- GDB i jakiś edytor lub IDE (Komodo Edit/IDE, Notepad++, Vim, Emacs, NetBeans C/C++, Qt Creator, Eclipse CDT, Sublime, Code::Blocks, etc... https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#C.2FC.2B.2B)
MS Visual Studio: https://www.visualstudio.com/pl-pl/products/visual-studio-express-vs.aspx (chociaż obsługa C++11,14,17 pozostawia trochę do życzenia, a o porządnym wsparciu dla C99/11 to zdaje się nie ma co marzyć...)
Jeśli w sensie budowania aplikacji okienkowych - to Qt Creator, Visual Studio (no i masz za darmo C#.NET uchyla sie przed zbukami Dobra, dobra, już nie będę!), FLUID dla FLTK, Glade dla GTK+...