Jak zabrać się za pisanie gry planszowej

0

Mam zrobić prostą grę planszową. Oto jej zasady jest czterech graczy i każdy po sobie wyrzuca pewną ilość oczek. Jeśli wyrzuci 4 i 3 może wejść na plansze Następne rzuty będą przesuwać go o wyrzuconą liczbę oczek aż przesunie się o 10 pól. Mam problem jak podejść do tego problemu. Mam zamiar sprawdzać czy gracz wystartował za pomocą manipulacji bitami czy to dobry pomysł? Oraz czy powinienem graczy wrzucić do tablic czy każdego zdefiniować osobno?

0

Co do reszty się nie odniosę, bo tak problem opisałeś, że naprawdę ciężko załapać, co autor miał na myśli. Ale jedna rzecz mnie zastanawia - konkretnie chodzi o poniższy cytat:

Mam zamiar sprawdzać czy gracz wystartował za pomocą manipulacji bitami

Wyjaśnij proszę, co masz na myśli, o jakich manipulacjach mówisz, co i jak chcesz osiągnąć. Wydaje mi się, że chcesz sobie niepotrzebnie życie skomplikowac. Możesz zamiast stosować jakieś bity użyć zmiennej typu bool, albo jeszcze prościej - w jakiejś zmiennej liczbowej zapisywać pozycje gracza na planszy. Jeśli będzie miała ona wartość zero, to oznacza, że dany user jeszcze nie wystartował.

0

Dam przykład o co chodzi mi z bitami czyli na przykład jeśli gracz wyrzucił 4 wtedy tą czwórkę dodaje do zmiennej gracza czyli w systemie binarnym jego zmienna ma wartość 00000100 i używam operacji & z bitowa czwórka która powinna zwrócić 00000100 wtedy mogę dowiedzieć się czy gracz wyrzucił czwórkę. Programuje od dwóch tygodni i program mam stworzyć przy użyciu prostych operacji bitowych pętli i tablic. Może to nieoptymalne podejście ale takie podsunięto mi na lekcji.

0

Jeśli wyrzucił 4, to po prostu robisz iloscOczek = 4, a jeśli chcesz to sprawdzić, to zwyczajnie piszesz if (iloscOczek == 4). Tymi bitami niepotrzebnie sobie życie utrudniasz.

0
int PlayerInGame=0,PlayerPoints[PlayerCount]={0};
for(int  CurrentPlayer=0;;CurrentPlayer=(CurrentPlayer+1)%PlayerCount)
{
	int PlayerMask=1<<CurrentPlayer;
	int dice1=NextDice(),dice2=NextDice(),dicesum=dice1+dice2;
	if(PlayerInGame&PlayerMask)
	{
		PlayerPoints[CurrentPlayer]+=dicesum;
		if(PlayerPoints[CurrentPlayer]>=WinPoints)
		{
			cout<<"Player "<<(1+CurrentPlayer)<<" win!"<<endl;
			break;
		}
	}
	else if((dicesum==7)&&((dice1==3)||(dice2==3))) PlayerInGame!=PlayerMask;
}

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