Kamień, Papier, Nożyce

0

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.

0

Czy ta funkcja rand, może losować jedynie z liczb ?

3

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];
0

Ok, dzięki za pomoc.

3
  1. mamy rok 2016, builder jest starszy od większości obecnych gimnazjalistów
  2. <random> i uniform_int_distribution są lepszym rozwiązaniem od rand() https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful
2
#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;
}

http://ideone.com/rrlJF8

output:

kamien
kamien
nozyce
papier
papier
kamien
kamien
nozyce
nozyce
nozyce</codE>
0

To co polecacie zamiast c++ builder'a ?

0

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

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+...

1 użytkowników online, w tym zalogowanych: 0, gości: 1