matematykaszkolna.pl
obiektowyC++ obiektowyC++: Dzień dobry, dopiero zaczynam przygodę z programowaniem, dlatego też proszę o wyrozumiałość. Piszę obiektowo (C++) grę, jednak stanęłam w pewnym miejscu: Chcę wylosować położenie pewnych obiektów na ekranie. Tzn. np. mam pole 20x20 i w tym polu chcę umieścić losowo 5 elementów: 2 elementy zajmujące 2 pola i 3 elementy zajmujące 3 pola (coś na zasadzie gry w statki) w taki sposób, aby stawione elementy nie dotykały się wzajemnie. Mogę prosić o pomoc? Jakieś wskazówki?
2 lis 09:08
jc: Najpierw losujesz 1 z 400. Po wylosowaniu wypada Ci kilka pól, na których nie możesz postawić następnego elementu. Potem losujesz 1 z pozostałej liczby. Itd. Inne rozwiązanie, proste, ale znacznie gorsze. Jeśli wylosujesz złe pole, powtarzasz losowanie. Jeszcze inne rozwiązanie. Jeśli źle trafisz, wybierasz pierwsze wolne pole. Niestety przy takim losowaniu niektóre możliwości będą bardziej prawdopodobne od innych.
2 lis 09:27
obiektowyC++: rysunekChyba ten pierwszy sposób wydaje mi się najlepszym rozwiązaniem. Wyobraźmy sobie że mam jakąś taką tablicę i chcę ułożyć elementy jak na rysunku (zielone, niebieskie i różowe). Wówczas losuję jedną pozycję (np. pierwszą od góry/od lewej) i potem wstawiam elementy także do kolejnych pól?
2 lis 09:41
jc: Tylko po wylosowaniu zielonych, powinieneś otoczyć zielone strefą zakazaną. Zadanie wydaje się ciekawe. Może się zdarzyć, że dla fioletowych nie będzie już miejsca.
2 lis 10:03
obiektowyC++: Chyba zrozumiałam o co chodzi, dzięki za wskazówki. Miłego dnia emotka
2 lis 13:58