Naháňačka robotov-pomoc – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Naháňačka robotov-pomoc – Python – Fórum – Programujte.comNaháňačka robotov-pomoc – Python – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

Darts
~ Anonymní uživatel
2 příspěvky
9. 12. 2016   #1
-
0
-

Zdravím. Chcel by som sa spýtať, či by st

Vytvořte jednoduchou simulaci světa, ve kterém se pohybují roboti:

svět má podobu mřížky M x N
na některých políčkách je neprůchodná překážka (poloha překážek je generována náhodně)
robot zabírá jedno políčko
robot umí následující základní akce: pohyb směrem dopředu, otočení doleva, otočení doprava
robot nemůže vstoupit na pole s překážkou nebo jiným robotem

Naučte roboty pohybovat se a) náhodně, b) směrem k cílovému poli (stačí "naivní" implementace - robot se snaží jít "přímo", pokud narazí na překážku, tak se zasekne).

S využitím těchto funkcí implementujte "honičku" - jeden robot se pohybuje náhodně, ostatní jej pronásledují (pokud je dost robotů a dost dlouhá simulace, měli by jej "obklíčit" a znemožnit mu pohyb).

Umožněte vykreslení "trajektorie" robota (přes která pole se pohyboval).

Bonus: Udělejte "inteligentní" navigaci robota směrem k cílovému poli.

Pokyny a rady

Využijte objekty, nepoužívejte globální proměnné.
Je doporučeno definovat dvě třídy:

World - reprezentuje mřížku (rozměry, zdi), udržuje informaci o robotech, má metodu pro výpis, ...
Robot - reprezentuje robota, udržuje informaci o světě, ve kterém robot žije (World), poloze, směru, má metody především pro pohyb

Bude se vám hodit "seznam robotů".
Funkce pro odehrání hry bude obsahovat parametr, který obmedzí počet kol hry -> pokud by "honička" měla trvat príliš dlouho (málo robotů nebo prekážek)
Pokuste se minimalizovat "copy and paste kód".
Úlohu dobře rozložte na dílčí problémy. Při dobré dekompozici mají jednotlivé metody/funkce jen pár řádků kódu.
Pokud byste si s úlohou nevěděli rady, zkuste si ji pro začátek zjednodušit, např. ignorovat překážky, uvažovat pouze 1 robota, uvažovat pouze pohyb rovně, ...

Výstup by mal byť 


^ . . . . . . # . #

. . # . # # . # . .

. . . . . . < < . .

. . . v . . . # v .

. . ^ . # . < < . #

 A mal by pokračovať ďalej..nechce sa mi to tu rozpisovať, to je len pre predstavu. Môžete mi nejako pomôcť? :)

Nahlásit jako SPAM
IP: 78.45.143.–
Darts
~ Anonymní uživatel
2 příspěvky
9. 12. 2016   #2
-
0
-

#1 Darts
Poznámka: Stačí iba nejaký začiatok, kde sa implementuje class World plus nejaké nadviazanie na class Robots, ostatok by som mal už nejako dorobiť, len jednoduchio neviem rozmýšľať v súvislosti s objektmi, resp. v živote som sa ich neučil :)

Nahlásit jako SPAM
IP: 78.45.143.–
gna
~ Anonymní uživatel
1503 příspěvků
10. 12. 2016   #3
-
0
-

Vynech kraviny o tom, že ses něco neučil.

class Robot:
	def __init__(self, world, x, y):
		self.world = world
		self.x = x
		self.y = y
		self.smer = '^'
		world.mapa[y][x] = self

	def __str__(self):
		return self.smer 

class World:
	def __init__(self, vyska, sirka):
		self.vyska = vyska
		self.sirka = sirka
		self.mapa = [['.' for i in range(self.sirka)] for i in range(self.vyska)]
		self.korist = Robot(self, 4, 4)
		self.lovci = [ Robot(self, 1, 1), Robot(self, 3, 3) ]
Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 24 hostů

Podobná vlákna

Pomoc !!! — založil Vlasta

Pomoc — založil piwolukas

Pomoc — založil Aikon

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý