-
X-Received: by 10.49.98.162 with SMTP id ej2mr31447qeb.10.1378461076906; Fri, 06 Sep
2013 02:51:16 -0700 (PDT)
X-Received: by 10.49.98.162 with SMTP id ej2mr31447qeb.10.1378461076906; Fri, 06 Sep
2013 02:51:16 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin3!goblin.stu.neva.ru!news.ripco.com!news.glorb.com!q10no2707197q
ai.0!news-out.google.com!p7ni1016qas.0!nntp.google.com!j7no360155qai.0!postnews
.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Fri, 6 Sep 2013 02:51:16 -0700 (PDT)
In-Reply-To: <f...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=82.181.2.67;
posting-account=zOpWhAoAAABF9bK4ExUIKsZM8vPTSKQp
NNTP-Posting-Host: 82.181.2.67
References: <f...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2...@g...com>
Subject: Re: chrząszcz
From: xuesheng <p...@g...com>
Injection-Date: Fri, 06 Sep 2013 09:51:16 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:204517
[ ukryj nagłówki ]
>
> To nadal wersja beta. Gra jest deterministyczna. Mam z nią mały problem - niekiedy
generuje labirynty, których nie da się przejść. Problem jest w klasie maze_generator.
>
Wrzuciłem wersję 0.0.8, algorytm generowania labiryntu jest poprawiony, są też różne
poziomy trudności.
Idea labiryntu jest taka:
Labirynt dzieli się na n komnat (w programie nazywanych "chambers"), wszędzie tam
gdzie to możliwe powstają drzwi łączące komnaty, maksymalnie jest ich n*(n-1)/2, ale
może być mniej, zależnie od topologii. Tworzona jest macierz zero-jedynkowa
zawierająca przejścia między komnatami. Jest ona kwadratowa i symetryczna. W
programie nazywa się "matrix_of_transition_chambers". Ilość jedynek w tej macierzy to
dwa razy ilość drzwi w labiryncie.
Następnie generowane są wszystkie symetryczne macierze, które w miejscu jedynek
macierzy przejścia mają zera lub jedynki, czyli wybieramy kombinacje. Ich ilość
wynika z ilości wszystkich kluczy i symbolu Bernoulliego. Bierzemy tylko te z
macierzy, które zawierają dwa lub mniej kluczy. Mówiąc po prostu generujemy
kombinacje wszystkich par i jedynek kluczy (macierz zerowa też jest odrzucona). To
arbitralna decyzja, chciałem żeby gracz miał w każdej chwili maksymalnie dwa klucze,
ale nigdy zero. Wszystkie te macierze będę dalej nazywał macierzami kluczy.
Następnie generowane są pary (komnata, macierz kluczy). Właściwy labirynt to tak
naprawdę graf nieskierowany, w którym węzłami są te właśnie pary. Krawędzie grafu
odpowiadają albo przejściu do innej komnaty z TYMI SAMYMI kluczami, albo wymianie
kluczy w TEJ SAMEJ komnacie.
Nawet na najniższym poziomie trudności, dla trzech komnat, ilość tych par może być
np. 15. Dla siedmiu komnat wyszło mi 144 (to oczywiście wartość losowa). Przejście do
innej komnaty jest możliwe zawsze, gdy mamy odpowiedni klucz. Natomiast wymiana
kluczy w tej samej komnacie nie zawsze jest możliwa.
W każdej komnacie, w której można wymienić klucze chodzi sobie ork, któremu odpowiada
pewna relacja równoważności na zbiorze macierzy kluczy. Relacja ta dzieli ów zbiór na
klasy równoważności. Wymienić się można tylko na macierze-reprezentantów klasy,
której reprezentanta już mamy. Czyli ork pozwala nam odwrócić każdą transakcję, ale
nie na każdą transakcję się zgodzi. Mimo to labirynt jest tak skonstruowany, że
istnieje rozwiązanie, tj. istnieje ścieżka w grafie z każdej pary (komnata, macierz
kluczy) do każdej innej pary.
Przepraszam, jeśli trochę przynudzam. Tego typu labirynty wydają mi się ciekawe.
Myślałem o grze, w której oprócz kluczy mamy jeszcze inne przedmioty, które
zwiększają ilość węzłów w grafie. Wówczas orki mogłyby oferować różne transakcje,
zależnie od tego czy mamy np. Święty Gral, czy nie.
Pozdrawiam,
Paweł Biernacki
Następne wpisy z tego wątku
- 10.09.13 12:17 g...@g...com
- 10.09.13 20:01 xuesheng
- 10.09.13 20:40 Ghost
- 10.09.13 20:56 xuesheng
- 10.09.13 21:06 Ghost
- 11.09.13 09:33 g...@g...com
- 11.09.13 20:18 xuesheng
- 20.09.13 13:31 xuesheng
- 24.09.13 15:45 g...@g...com
- 29.09.13 22:36 xuesheng
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-13 Filtr do pompy ruskiej
- 2024-11-12 Gdzie kosz?
- 2024-11-13 elektrycznie
- 2024-11-12 Jebane kurwa, kurwy.
- 2024-11-13 karta parkingowa
- 2024-11-13 Wl/Wyl (On/Off) bialy/niebieski
- 2024-11-12 I3C
- 2024-11-13 Kraków => DevOps Engineer (Junior or Regular level) <=
- 2024-11-13 Łódź => Senior SAP HANA Developer <=
- 2024-11-13 Zabrze => Senior PHP Symfony Developer <=
- 2024-11-13 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-13 Kraków => QA Inżynier <=
- 2024-11-13 Żerniki => Dyspozytor Międzynarodowy <=
- 2024-11-13 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-11-13 Lublin => Delphi Programmer <=