Skocz do zawartości

[Sneaky Bastard] Mini konkurs :)


Toster

Polecane posty

Hejka,
Proponuje mini konkurs, calosc wyglada tak: Mamy wlamywacza ktory stoi sobie na wejsciu do biurowca. Jego zadanie to przeszukac wszystkie pomieszczenia i wrocic do punktu wyjscia. Oczywiscie przeszkadzaja mu w tym straznicy, ktorzy chodza po wytyczonych trasach. Kto zdobedzie najwiecej punktow ten wygrywa.

Co i jak:
1. Nalezy zaciagnac plika http://toster.ps.pl/SneakyBastard.zip
2. po uruchomieniu programu klikamy 'Start Server', mozemy zaczynac grac (nic na formie sie nie pojawi, komp czeka na polaczenie z portem 3000 localhost)
3. sterujemy naszym gosciem za pomoca polecen (mozna na poczatek polaczyc sie telnetem i sie pobawic): left, right, up, down, search, leave
pierwsze 4 odpowiadaja za przechodzenie przez konkretne drzwi, uwaga zaraz po ruchu (wejsciu do nowego pomieszczenia) gracz jest widoczny dla strazy potrzebuje jedna ture aby sie schowac.
search - powoduje przeszukanie pomieszczenia (+1 punkt) ale uwaga, szukanie trwa cala nastepna ture, jak do pomieszczenia wejdzie straznik to koniec.
leave - powoduje wyjscie z budynku, mozliwe jest tylko w pokoju w ktorym zaczynal gracz.
jesli gracz nie chce podejmowac zadnej akcji powinien wyslac dowolny tekst (np nop) ale nie ciag pusty (''), w tym momencie server przejdzie do nastepnej tury

Punktacja:
+1 Pkt za kazde przeszukane pomieszczenie
+5 za wyjscie z budynku
+5 za przeszukanie wszystkich pomieszczen

Widocznosc:
Nasz bohater jest sprytny (ale nie za bardzo), po wejsciu do pomieszczenia potrzebuje 1 tury aby sie schowac, jak sie schowa to straznicy go nie zobacza (gdy wejda do pomieszczenia). Jesli gracz wejdzie do pom. gdzie jest straznik, lub straznik wejdzie do pom. gdzie trwa przeszukiwanie to game over.

Status:
na poczatku kazdej tury server wysyla nastepujace informcje: Pozycja (wspolrzedne x,y pokoju w ktorym stoimy), drzwi (litery oznaczaja left, right, up, down jesli litera jest duza to mozna isc w danym kierunku), nasluchiwanie (Duze litery oznaczaja zza ktorych drzwi dobiega odglos - jest tam straznik), jesli w pomieszczeniu nie ma straznika pojawia sie napis Safe, jesli w pomieszczeniue jest straznik pojawia sie napis Guard oraz jego id.

Zasady:
w zabawie moga barac udzial dowolne programy sterujace gosciem, musza one potrafic polaczyc sie z serverem (localhost, port 3000) i sterowac ludkiem tak aby zrealizowac zadanie. Wygrywa ten kto zdobedzie max punktow, w przypadku takiej samej ilosci punktow decydowac bedzie czas (w turach).

Czas trwania mini-konkursu
2 tyg od dzisiaj, czyli do 18 Kwietnia, czekam na programy (same exeki + opis autora, spakowane i mozliwe do uruchomienia bez instalacji dodatkowych bibliotek i innych cudow) pod adresem toster@ps.pl

Nagroda
Piekny dyplom przeslany poczata.

Sposob testowania:
Zostanie wygenerowany losowy budynek (taki sam dla wszystkich programow) o wymiarach 10x10, do niego beda podlaczani kolejno wszyscy gracze. Program bedzie uruchamiany od poczatku dla kazdego gracza.

Organizator:
Toster :)

PS.
Jak sie spodoba i bedzie odzew to mam sporo pomyslow na wiecej Sneaky Bastardow ;)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

[quote] eeee a powie mi ktoś jak to włączyć?? [/quote]U mnie wszystko działa. Czego nie rozumiesz ? Toster opisał co należy zrobić...

Edit: Mam pytanie, na jakiej podstawie mam wiedzieć czy mój złodziej przeszedł przez wszystkie pomieszczenia skoro nie znamy wymiarów planszy czy ilości pomieszczeń ?

Edit2: W serwerze należy dodać do zdarzenia OnServer1Accept linijkę (na początku):
KODGameOverMess := '';
Inaczej, co game over będzie trzeba wyłączać i włączać serwer.

҉

Link do komentarza
Udostępnij na innych stronach

Thx, calosc pisalem miedzy kolo 4 h lacznie z konceptem wiec kod moze byc troche niedopracowany w niektorych miejscach, soon go poprawie. Co do odpowiedzi na pytanie czy przeszedles wszystkie pola to musisz sam sobie zrobic mape i stwierdzic czy wszedzie byles. Gra jest o "sprytnym zlodzieju" ktory zaladowal sie do biurowca ale wcale nie ma jego mapy :) w najgorszym przypadku bedzie to 100 pomieszczen (mapa 10x10) ale zazwyczaj algorytm wyrzuca kolo 3-7 pokoi wiec jak przejdziesz 95 pokoi to masz kolo ~98% szans na to ze wszystkie zaliczyles. [b]Pozatym jak nie zrobisz sobie po drodze mapy to nie wrocisz do wyjscia :)

Sazin:
wlaczas program, klikasz start server (czy jakos tak), uruchamiasz konsole (start->Uruchom->cmd), piszesz 'telnet 127.0.0.1 3000' albo 'telnet localhost 3000' i juz

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Ok, omińmy to czy znamy wszystkie pola czy nie. Powiedzmy, że mojego złodzieja zadowoli 10 pkt (.

Tylko jest wg mnie jeden problem, który uniemożliwia wrócenie do wyjścia. Nie ma możliwości, aby sprawdzić czy strażnik jest dwa pokoje dalej i w następnej turze, gdy my się ruszymy do góry, on się ruszy na dół. Wtedy oczywiście jest koniec gry, bo strażnk nas znajduje. Nie widzę żadnego sposobu, aby sprawdzać czy strażnik jest te dwa pokoje dalej. Nie da się też tak chodzić za strażnikami, aby zapisać wszystkie ich ruchy.

҉

Link do komentarza
Udostępnij na innych stronach

nie do konca. Trasy straznikow sa takie same i nie ulegaja zmianie. poniewaz slyszysz czy w pokojach w poblizu jest straznik mozesz przeprowadzic analize "bezpiecznosci pokoju" tzn. stojac przy drzwaiach mozesz zapisywac co jaki czas ktos sie w nim pojawi w efekcie dostaniesz ciag danych mowiacy o tym czy ktos jest czy nie. analizujac te dane mozesz wyznaczyc czestotliwosc pojawiania sie niebezpieczenstwa w pokoju, przez co mozna oszacowac moment w ktorym nalezy wejsc. Po wejsciu do pokoju mozesz analizowac kierunek ruchu straznikow (znasz ich ID oraz na podstawie nasluchu mozesz okreslic kierunek drogi).

pozatym ilosc straznikow jest relatywnie mala w stosunku do ilosci pomieszczen, mozesz w pierwszej kolejnosci odwiedzac pomieszczenia w ktorych nie bedzie straznikow. albo realizowac jakas inna polityke :) Proponuje pograc najpierw samemu przez telnet i przeanalizowac jak sam sie zachowujesz a pozniej napisac do tego progsa ;>

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Spróbuję coś wykombinować z takim nasłuchiwaniem, choć nadal mi się to wydaje nie do końca wykonalne (na pewno nie na 100%). A niby jak znam ID strażników ? Tylko, gdy znajdę się w pokoju z jakimś to poznam jego ID (.

A takie sprawdzanie przez telnet raczej nie ma sensu. Patrząc na planszę nie zachowamy się jak program (bo on na nią nie będzie patrzył), a nie patrząc będzie całkiem ciężko (.

҉

Link do komentarza
Udostępnij na innych stronach

patrzac na plansze mozesz zrozumiec (albo znalezc) jakies zaleznosci ktore pozniej bedzie mozna uzyc w tworzoeniu rozwiazania. Nie patrzac na plansze stawiasz sie w sytuacji w ktorej bazujac na malei ilosci danych musisz podjac decyzje, mozesz wtedy wypracowac alg. swojego zachowania, a pozniej wykorzystac go w tworzenie swojego programu. Podejsc do zagadnienia jest sporo, inna sprawa ze nie musisz od razu robic programu, ktory zdobedzie wszystkie punkty mozna poszukac kilku algorytmow realizujacych jakies czesci zadania (np przeszukiwanie bezpiecznych pokoi, ustalanie tras straznikow, itp), a nastepnie zrobic algorytm, ktory bedzie dobieral inny alg. ktory nalezy w danej chwili zastosowac.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

[quote] a w tym pliku który udostępniasz mozna jkoś pominąć TcpServer1?? [/quote]Przecież to jest podstawa działania programu, jak chcesz to pominąć ? Jeśli nie masz komponentu: -> www.torry.net czy po prostu google.com.

Poszukaj, bo przepisywanie na inny komponent raczej nie ma sensu ( choć też nie powinno być kłopotliwe (. )

҉

Link do komentarza
Udostępnij na innych stronach

Toster to już napisał.

[quote] Sazin:
wlaczas program, klikasz start server (czy jakos tak), uruchamiasz konsole (start->Uruchom->cmd), piszesz 'telnet 127.0.0.1 3000' albo 'telnet localhost 3000' i juz [/quote]

Jak uruchomisz program, to nic oprócz 'Start server' się nie pojawi.
Jak juz włączysz telnet to wpisujesz np:
left<ENTER> (nie pojawi się to, co będziesz pisał)
right<ENTER>
...

Jak chcesz, mogę Ci przesłać mój testowy program, który udaje złodzieja...

҉

Link do komentarza
Udostępnij na innych stronach

Na sieci znajduje sie ciut nowsza wersja (ta sama lokacja co poprzednio), nie zostala [b]wogole zmieniona logika, podmienilem tylko warstwe komunikacyjna (od nowa obsluga sieci) bo ciela sie przy szybkiej wymianie danych, dorzucilem tez szkielet klienta (AI) ktory laczy sie ze wskazanym komputerem trzeba tylko dopisac logike zlodzieja (unit AI_Engine.pas). Mam nadzieje ze bedzie to pomocne dla tych ktorzy chciali by sie tez pobawic a maja problemy z obsluga sieci.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...