Naučte se Python a elektroniku s Minecraft Pi Edition

  • Gabriel Brooks
  • 77
  • 3055
  • 92
reklama

Vždy jste se chtěli naučit kódovat, ale nevěděli jste, kde začít? Naučte se ovládat Minecraft na Raspberry Pi pomocí Pythonu a nějaké jednoduché elektroniky. Zde je konečný výsledek:

Pro tento projekt budete potřebovat Pi 2 nebo novější a většinu těchto úkolů byste mohli dokončit pomocí příkazového řádku přes Secure Shell (SSH), ale tento tutoriál se zaměří na kódování přímo na Pi.

Jste v Minecraft novým? Nedělejte si starosti - zde je náš průvodce začátečníky Minecraft (Latecomer) Průvodce začátečníky Minecraft (Latecomer) Průvodce začátečníků Minecraft Pokud ale přijdete pozdě na párty, nebojte se - tento obsáhlý průvodce pro začátečníky vás pokrývá. .

Úvod do Minecraft Pi

Minecraft pro Raspberry Pi byl vyvinut pro učení a drotářství (a je zdarma). Je dodáván s aplikačním programovacím rozhraním (API), které poskytuje způsob, jak kód snadno komunikovat s Minecraft. Je to skvělé, když se naučíte, jak kódovat v Pythonu, a také jak začít s elektronikou. Začátečník elektronika: 10 dovedností, které potřebujete znát Začátečník elektronika: 10 dovedností, které potřebujete znát Mnoho z nás se nikdy nedotklo páječky - ale výroba věcí může neuvěřitelně obohacující. Zde je deset nejzákladnějších DIY elektroniky, které vám pomohou začít. .

Co je Python?

Python je programovací jazyk. to je interpretováno, což znamená, že při spuštění souboru nebo programu Python musí počítač nejprve do souboru udělat malou práci. Nevýhody jsou, že to může být považováno za pomalé ve srovnání s kompilovanými jazyky.

Výhodou tlumočených jazyků je rychlost kódování a jejich přívětivost. Nemusíte říkat počítači co data, která chcete uložit, jen to, že chcete něco uložit a počítač zjistí, co dělat. Existují samozřejmě výjimky, a to je poněkud zjednodušený pohled, programování by však mělo být zábavné! Pokud začnete kopat do složitých technických detailů, může to být trochu pracné.

Python rozlišuje velká a malá písmena. To je důležité vědět, protože Python nerozpozná objekty i když jsou napsány správně pokud je případ nesprávný. “Dělej něco()” nebude fungovat, pokud je metoda skutečně volána “Dělej něco()”. Python také používá odsazení. Ostatní programovací jazyky se nemusí zajímat, kolik má odrážka váš kód, zatímco Python ano péče. Odsazení se používají k tomu, aby Pythonu řekli, kam kód patří. Mohou se používat i jiné jazyky “Složené závorky” () pro seskupení kódu - Python je nepoužívá. Python používá hash (#) pro komentáře a komentáře se používají k tomu, aby ostatním vývojářům nebo lidem, kteří sledují kód, řekli, co konkrétní část dělá, nebo proč je to nutné. Python nic ignoruje po hašování.

Nakonec existují dvě hlavní verze Pythonu - Python 2.7.xa Python 3.x. Mezi nimi jsou určité rozdíly (jaké jsou rozdíly?). Tento tutoriál použije Python 3.

Počáteční nastavení

Poskytnutí vašeho Pi je již nastaveno a spuštěno Raspbian Jak nainstalovat operační systém na Raspberry Pi Jak nainstalovat operační systém na Raspberry Pi Zde je návod, jak nainstalovat operační systém na Raspberry Pi a jak naklonovat vaše perfektní nastavení pro rychlé zotavení po katastrofě . , není potřeba počáteční nastavení.

Otevřít terminál (Menu> Příslušenství> Terminál) a spusťte tento příkaz. Je vždy dobrým zvykem udržovat seznam repozitářů aktuální, a to stáhne nejnovější seznam programů (nebude stahovat programy samotné, to pomůže Pi vědět, jaké programy se nazývají a kde je najít).

aktualizace sudo apt-get 

Nyní aktualizujte Pi (může to chvíli trvat):

sudo apt-get upgrade 

Python a Minecraft Pi jsou již nainstalovány, ale pokud není Minecraft Pi z nějakého důvodu nainstalován, je snadné nainstalovat 5 způsobů instalace softwaru na Raspberry Pi 5 způsobů instalace softwaru na Raspberry Pi Chcete-li s Raspberry Pi něco udělat, potřebují vědět, jak nainstalovat operační systém a software, který na něm běží. Pokud jste v systému Linux nováčkem, může to být skličující. :

sudo apt-get install minecraft-pi

Přejděte na dokumenty a vytvořte novou složku s názvem “Minecraft”:

cd Dokumenty / mkdir Minecraft

Můžete zobrazit obsah této nové složky:

ls

Tady je tip - pokud začnete psát a stisknete klávesu TAB, příkazový řádek se pokusí automaticky doplnit příkaz za vás.

Cestu k aktuálnímu adresáři můžete prozkoumat pomocí pwd, což znamená Print Working Directory:

pwd

Začněte Minecraft tím, že půjdete Menu> Hry> Minecraft Pi. Tento běh budete potřebovat, ale později se k němu vrátíte.

Otevřete Python 3 z Menu> Programování> Python 3 (IDLE). Tento program poskytuje způsob, jak spouštět příkazy Python a psát programy.

Nyní můžete napsat své příkazy Pythonu, ale to není příliš praktické. Jít do Soubor> Nový soubor a pak Soubor> Uložit a uložte ji do složky, kterou jste vytvořili dříve. (Dokumenty> Minecraf). Říkejme tomu “hello_world.py“. Nemusíte používat příponu .py, bude to přidáno automaticky, ale je to dobrý postup.

Pokud přepnete zpět na terminál a přejdete do složky Minecraft, měli byste vidět právě vytvořený soubor:

cd Minecraft / ls

Tento soubor můžete spustit takto:

python hello_world

Všimněte si jak “krajta” je malá písmena. Toto musí být před názvem souboru, protože to říká Pi, že následující soubor je Python, takže by měl být spuštěn jako takový.

Přepněte zpět do editoru Python a napište:

tisk "Ahoj, svět!"

Uložte tento soubor a spusťte jej znovu - nyní byste měli vidět “Ahoj světe!” objeví se na příkazovém řádku - elegantní! Příkaz print jednoduše řekne Pythonu, aby následující text vydal ve dvojitých uvozovkách. To je dobré, ale pro Minecraft to není moc užitečné, pojďme to propojit:

z mcpi.minecraft import Minecraft mc = Minecraft.create () mc.postToChat ("Ahoj, svět!") 

Pokud nyní uložíte a spustíte tento soubor, měli byste vidět “Ahoj světe!” objeví se ve hře Minecraft. Rozdělme si kód:

z mcpi.minecraft import Minecraft

Tento řádek říká Pythonu, že chcete použít kód z jiného souboru. Tento soubor mcpi.minecraft byl vyvinut, aby umožnil snadné ovládání Minecraft.

mc = Minecraft.create ()

Tento řádek vytvoří objekt nazvaný “mc” (Minecraft). Musíte to vytvořit, abyste umožnili komunikaci s hrou Minecraft - nestačí pouze zahrnout soubor.

mc.postToChat („Ahoj, svět!“)

Nakonec tento řádek říká Minecraftovi, aby do chatu napsal nějaký text. Zkuste změnit “Ahoj světe!” k něčemu jinému a uvidíte, co se stane, ale nezapomeňte zahrnout obě uvozovky. Pokud máte problémy se softwarem, jedná se o některé běžné chyby Python a Minecraft Pi:

  • AttributeError - jedná se o překlep, například pint nebo prnt místo tisku
  • NameError: jméno 'Minecraft' není definováno - nezapomeňte importovat potřebné moduly
  • NameError: jméno 'true' není definováno - Python rozlišuje velká a malá písmena, změňte na “Skutečný”
  • socket.error: [Errno 111] Připojení odmítnuto - Ujistěte se, že Minecraft běží

Projekty

Nyní, když znáte základy Pythonu a Minecraft, pojďme udělat nějaké skvělé projekty. Všechny kódy lze stáhnout z Githubu.

Automatizovaný stavitel mostů

Tento program účinně postaví most přes vodu. Když se hráč přiblíží k vodní hladině, program převede několik bloků na kámen. Protože Minecraft používá souřadnicový systém, je velmi snadné zjistit polohu hráče spolu s typem bloků kolem hráče. Minecraft Pi je mírně omezený, takže není možné hromadně aktualizovat více různých bloků. Toto chování však můžete snadno kódovat sami.

Vytvořit nový soubor (Soubor> Nový soubor) a uložte jej jako “bridge_builder.py“.

z mcpi.minecraft import Minecraft mc = Minecraft.create () # vytvořte Minecraft Object, zatímco True: x, y, z = mc.player.getPos () # store player position # uložte okolní bloky a = mc.getBlock (x, y - 1, z + 1) b = mc.getBlock (x, y - 1, z - 1) c = mc.getBlock (x - 1, y - 1, z) d = mc.getBlock (x + 1, y - 1, z) jestliže a == 8 nebo a == 9 nebo b == 8 nebo b == 9 nebo c == 8 nebo c == 9 nebo d == 8 nebo d == 9: # 8 nebo 9 je voda. Nastavte okolní bloky na podlaze na pevný (kámen), pokud je nalezena voda mc.setBlocks (x, y - 1, z, x + 1, y - 1, z + 1, 1) mc.setBlocks (x, y - 1 , z, x - 1, y - 1, z - 1, 1) mc.setBlocks (x, y - 1, z, x - 1, y - 1, z + 1, 1) mc.setBlocks (x, y - 1, z, x + 1, y - 1, z - 1, 1) 

Všimněte si, jak se hodnota y skutečně dívá na y - 1. Toto je úroveň podlahy. Pokud by byla použita hodnota y, skript by hledal bloky na úrovni kolen - nefungovalo by to velmi dobře! Mc.getBlock () vrátí ID bloku pro dané souřadnice. Protože x, y a z jsou souřadnice hráče, můžete je od nich přidat nebo odečíst, abyste získali pozice kolem hráče. Nemusíte používat hodnoty x, y a z, můžete použít libovolné číslo, ale možná nevíte, jak se daný blok týká hráče - je lepší použít hodnoty relativně vůči hráči. Spusťte tento soubor z příkazového řádku a podívejte se, co se stane.

Měli byste vidět, že malá část země se změní na kámen, jakmile hráč dosáhne vodní hladiny. Není to skvělé - jste schopni chodit dostatečně rychle, abyste způsobili problém. To byste mohli vyřešit převedením většího množství vody na pevninu. Poslední část metody mc.setBlocks () je id bloku. Jedním z nich je blok id pro kámen. Dalo by se to změnit na dřevo, trávu nebo cokoli. Pokud jste chtěli, můžete to docela snadno převést na složitý design - možná visutý most!

Tlačítko Super Mining

V tomto příkladu bude práce s těžbou krátká. Skládá se z fyzického tlačítka, které po stisknutí vytěží 10 krychlových bloků. Začněme s tlačítkem. Podobně jako tlačítka na Arduino budete potřebovat malé množství elektroniky, které by mělo být nalezeno v základní startovací sadě Co je ve vaší startovací sadě Arduino? [Arduino začátečníci] Co je ve vaší Arduino Starter Kit? [Arduino Beginners] Díky krabici plnou elektronických součástek je snadné přemoci. Zde je průvodce přesně tím, co najdete v sadě. :

  • 1 x prkénko
  • 1 x krátkodobý spínač
  • 1 x 220 ohmový rezistor
  • Ženské> mužské kabely pro skok
  • Zástrčka> Zástrčné kabely

Zde je okruh:

Tento rezistor se nazývá a “strhnout” odpor. Pomáhá zajistit, že to, co si Pi myslí, je, že je stisknuto tlačítko, skutečně je to stisknuté tlačítko. Nemusíte to používat, ale doporučuje se, protože bez něj můžete najít spoustu šumu a chybných údajů.

Tlačítko je připojeno ke kolíku 14. Vstupního výstupu GPIO (General Purpose Input Output). Můžete použít jakýkoli kolík GPIO, nejdřív se však podívejte na pinout, protože nejsou všechny ovládatelné z Pi a mezi modely se mírně liší..

Nyní, když je tlačítko připojeno, je čas to vyzkoušet. Vytvořte nový soubor a uložte jej jako “button_test.py“. Přidejte tento kód, uložte jej a poté spusťte v Terminálu.

import RPi.GPIO jako GPIO doba importu GPIO.setmode (GPIO.BCM) # řekněte Pi, jaké záhlaví použít GPIO.setup (14, GPIO.IN) # řekněte Pi tento pin je vstup, zatímco True: pokud GPIO.input (14) == Pravda: # hledejte stisknutí tlačítka tisk "BUTTON WORKS!" # log result time.sleep (0,5) # počkejte 0,5 sekundy 

lis Control + C zastavit skript. Pokud všechno funguje správně, měli byste vidět “TLAČÍTKA PRÁCE!” v terminálu. Všimněte si, jak tento modul, stejně jako modul Minecraft, používá moduly RPi.GPIO a časové moduly. Umožňují Pi přístup k hardwarovým pinům a poskytují užitečné funkce časování.

Nyní můžete dokončit zbytek kódu. Vytvořte nový filecalled “super_mine.py“. Zde je kód:

import RPi.GPIO jako GPIO import čas z mcpi.minecraft import Minecraft mc = Minecraft.create () # create Minecraft Object GPIO.setmode (GPIO.BCM) # řekněte Pi, jaké záhlaví použít GPIO.setup (14, GPIO.IN) ) # řekněte Pi, že tento pin je vstup, zatímco True: pokud GPIO.input (14) == True: # hledejte stisknutí tlačítka x, y, z = mc.player.getPos () # přečtěte pozici hráče mc.setBlocks (x, y, z, x + 10, y + 10, z + 10, 0) # důl 10 bloků mc.setBlocks (x, y, z, x - 10, y + 10, z - 10, 0) # důl 10 bloků time.sleep (0,5) # počkat 0,5 sekundy 

mc.player.getPos () vrátí aktuální souřadnice hráčů, které jsou poté uloženy v x, y a z. setBlocks () metoda říká Minecraft, aby vyplnil všechny bloky mezi začátkem a koncem následujícím blokem. Nula je blok-id pro vzduch. Dalo by se to změnit na jiné ID bloku, abyste vyplnili oblast. Můžete také změnit souřadnice na +100 nebo dokonce +1000 bloků, ale Pi se může začít potýkat, pokud budete příliš blázni. Všimněte si, jak y + 10 je stejné pro oba řádky. Pokud byste chtěli odstranit bloky v podzemí, můžete to změnit na y - 10.

Teleporting

Dalším jednoduchým použitím tohoto tlačítka by mohlo být “teleport”. Minecraft Pi Api poskytuje způsob, jak nastavit pozici hráče. Následující kód bude “teleport” přehrávač na přednastavené místo:

mc.player.setPos (0, 0, 0)

Všimněte si, že jeho metoda přijímá tři parametry; x, y a z - abyste je mohli nastavit na cokoli, abyste mohli okamžitě teleportovat hráče na toto místo.

Vytvořte kopii souboru super_mine (Soubor> Uložit kopii jako) a upravte jej nahrazením if, pokud:

pokud GPIO.input (14) == True: # hledejte tlačítko stiskem mc.player.setPos (0, 0, 0) # teleport player time.sleep (0,5) # počkejte 0,5 sekundy 

Tento soubor by nyní měl vypadat takto:

import RPi.GPIO jako GPIO z mcpi.minecraft import Minecraft doba importu mc = Minecraft.create () # create Minecraft Object GPIO.setmode (GPIO.BCM) # řekněte Pi, jaké záhlaví použít GPIO.setup (14, GPIO.IN) ) # řekněte Pi, že tento pin je vstup, zatímco True: pokud GPIO.input (14) == True: # hledejte stisknutí tlačítka mc.player.setPos (0, 0, 0) # teleport player time.sleep (0.5) # počkat 0,5 sekundy 

Uložit jako “teleport.py” a běžet.

Možná zjistíte, že se hráč při použití uvízl uvnitř některých bloků. V takovém případě budete muset upravit souřadnice podle známého otevřeného prostoru (levá horní část obrazovky zobrazuje vaši aktuální polohu)..

Postavit dům

Posledním úkolem tohoto tlačítka je postavit dům. Stejně jako výše uvedený příklad rychlého dobývání, toto jednoduše nahradí bloky obklopující hráče a vytvoří dům. Pro různé materiály (okna, stěny atd.) Budou použity různé identifikátory bloků. Aby se věci snadněji kódovaly, vytvoří se pevný blok a poté se odstraní vnitřek (nastaví blok na vzduch) a vytvoří se dutá skořepina. Můžete přidat doplňky jako postel nebo dveře, nicméně projekt Minecraft Pi je trochu neúplný, a zatímco tyto objekty fungují, když jsou umístěny hráčem, nejsou brilantní, když používají Python.

z mcpi.minecraft import Minecraft import RPi.GPIO jako čas importu GPIO mc = Minecraft.create () # create Minecraft Object GPIO.setmode (GPIO.BCM) # řekněte Pi, jaké záhlaví použít GPIO.setup (14, GPIO.IN) ) # řekněte Pi, že tento pin je vstup, zatímco True: pokud GPIO.input (14) == True: x, y, z = mc.player.getPos () mc.setBlocks (x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # make shell mc.setBlocks (x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # odebrat uvnitř mc.setBlocks (x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # vytvořte vchodové mc.setBlocks (x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # vytvořte okno 1 mc.setBlocks (x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # vytvořte okno 2 mc.setBlocks (x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # vytvořte okno 3 

Uložit jako “house.py” a běžet. Když je vše v pořádku, měli byste vidět malý dům, který se objeví (možná budete muset otočit, abyste to našli). Je to velmi jednoduché, otevření a některá okna. Teoreticky neexistuje žádné omezení, jak velká nebo složitá budova byste mohli postavit.

Udělejte si mini hru

Dále udělejme mini-hru! To bude docela jednoduché, když hráč vstoupí na blok písku, promění se v lávu po náhodném množství času. Je to dobrá hra, kterou byste si mohli udělat, protože byste mohli navrhnout své vlastní úrovně nebo je upravit tak, aby věci byly těžší. Tlačítko v tomto příkladu nebudete potřebovat.

Vytvořte nový soubor a uložte jej jako “mini_game.py“. Zde je kód:

z mcpi.minecraft importu Minecraft importu náhodný čas importu mc = Minecraft.create () # vytvořte Minecraft Object, zatímco True: x, y, z = mc.player.getPos () block_under_player = mc.getBlock (x, y - 1, z ) pokud block_under_player == 12: # hráč stojící na písku, spusťte časovač random_time = random.uniform (0,1, 2,5) # vygenerujte náhodné číslo time.sleep (random_time); # wait mc.setBlock (x, y - 1, z, 11) # přeměňte na lávu 

Tento kód je dobrým startérem na internetu náhodný() funkce: random.uniform (0,1, 2,5) vygeneruje náhodné číslo mezi 0,1 (1/10 sekundy) a 2,5 (2 1/2 sekundy). Zvýšení těchto čísel usnadní hru.

Vyzkoušet to! Postavte se na blok písku a brzy se změní na lávu. To by mohlo být základem složitější hry.

Udělejte další mini hru

Předpoklad pro tuto hru je jednoduchý - nestojte na dřevěné podlaze, když vyprší čas. Hráč dostane teleportován do “aréna”. Jsou nuceni stát, dokud hra nezačne. Po spuštění se podlaha změní na vodu, jakmile časovač vyprší. Hráč musí stát v bezpečné zóně (diamantové bloky), aby přežil. Každá úroveň snižuje časovač o jednu sekundu. Po každé úspěšné úrovni se bezpečná oblast zvětšuje. Podívejte se na níže uvedený kód:

import čas import náhodně z mcpi.minecraft import Minecraft mc = Minecraft.create () # create Minecraft Object # clear area mc.setBlocks (-10, 1, -10, 25, 5, 25, 0) # create shell arena mc. setBlocks (0, 0, 0, 25, 10, 25, 17) # hollow out aréna mc.setBlocks (1, 1, 1, 24, 10, 24, 0) # přesunout hráče do arény mc.player.setPos (14 , 25, 20) # teleportní hráč # je přinutí zůstat # teleportním hráčem tak, aby startoval každou každou 10/10 sekundu. # to po dobu 5 sekund, pak spusťte hru time.sleep (2) total_wait = 0 mc.postToChat ("Waiting to Start"), zatímco total_wait < 5: mc.player.setPos(14, 1, 20) # teleport player time.sleep(0.1) total_wait += 0.1 mc.postToChat("BEGIN!") # 10 levels for level in range(10): x, y, z = mc.player.getPos() level_time = 10 - level # reduce time by 1 second for each level mc.postToChat("Level - " + str(level + 1) + " start") # build floor mc.setBlocks(0, 0, 0, 25, 0, 25, 17) # make safe area safe_area_start = random.uniform(0, 22) safe_area_end = random.uniform(0, 22) mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) elapsed_time = 0 while elapsed_time < 10: x, y, z = mc.player.getPos() time.sleep(0.25) elapsed_time += 0.25 # check player is still on floor if y < 0.75: mc.postToChat("Game Over") break; else: # remove floor mc.setBlocks(-10, 0, -10, 25, 0, 25, 8) # put safe area back mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) time.sleep(2.5) continue break 

Uložit jako “mini_game_2.py” a zkus to.

Pi 2 má při běhu Minecraft nějaké problémy s výkonem. Graf využití centrální procesorové jednotky (CPU) (pravý horní roh) nikdy neukazuje žádné velké zatížení, takže se musí jednat o špatnou konstrukci a optimalizaci vývojářů. Tyto problémy nesouvisejí s běžícím kódem (protože pokračují, když Python neběží), ale tato mini hra je znásobuje. Pokud váš Pi opravdu bojuje, možná budete chtít snížit velikost arény nebo přetaktovat váš Pi Not Dave Juice? Squeeze Your Raspberry Pi přetaktováním nestačí šťávy? Squeeze Your Raspberry Pi přetaktováním Pokud v roce 2012 vyšel jakýkoli hardware, do kterého se pravděpodobně zamilujete, je to malinkový Raspberry Pi, mini počítač navržený a postavený ve Velké Británii, který byl dodán po celém ... .

Diamantový detektor

Udělejme další okruh. Tím se rozsvítí dioda LED (Light Emitting Diode), která se rozsvítí, pokud jsou pod ní diamanty (do 15 bloků). Zde je to, co potřebujete:

  • 1 x prkénko
  • 1 x LED
  • 1 x 220 ohmový rezistor
  • Ženské> mužské kabely pro skok
  • Zástrčka> Zástrčné kabely

Zde je okruh:

Připojte anodu (dlouhou nohu) k GPIO Pin 14. Tento pin funguje jako + 5V. Připojte katodu (krátkou nohu) k zemi.

Použil jsem levnou rudnou hračku a upravil ji odstraněním zadního krytu a elektroniky, poté jsem pod ni umístil LED. Dalo by se to snadno udělat trvalým lepidlem nebo něčím podobným.

Uložte tento kód jako “diamonds.py“:

import RPi.GPIO jako GPIO doba importu z mcpi.minecraft import Minecraft mc = Minecraft.create () # create Minecraft Object led_pin = 14 # uložte číslo pin GPIO GPIO.setmode (GPIO.BCM) # řekněte Pi, jaké záhlaví použít GPIO.setup (14, GPIO.OUT) # řekněte Pi, že tento pin je výstup, zatímco True: # opakujte neurčitě x, y, z = mc.player.getPos () pro i v rozsahu (15): # podívejte se na každý blokujte do bloku 15, pokud mc.getBlock (x, y - i, z) == 56: GPIO.output (led_pin, True) # zapněte LED diodu time.sleep (0.25) # wait GPIO.output (led_pin, False) # vypněte LED. Čas spánku (0,25) # počkejte 

Pokud je pod přehrávačem blok diamantové rudy (do 15 bloků), bude světlo blikat.

Udělali jste něco cool s Minecraft Pi? Dejte mi vědět v komentářích, co jste dosáhli nebo jak daleko jste dosáhli ve hrách.




anurequtuyixd ([email protected])
06.12.21 18:05
http://slkjfdf.net/ - Aboenid <a href="http://slkjfdf.net/">Ibukaon</a> pnk.efgv.cs.unedose.fr.hrj.cv http://slkjfdf.net/
eqoxuqezuyi ([email protected])
06.12.21 17:44
http://slkjfdf.net/ - Obuhihzo <a href="http://slkjfdf.net/">Otiqajop</a> iaw.sfum.cs.unedose.fr.muj.xk http://slkjfdf.net/
ehejiyosolk ([email protected])
06.12.21 13:52
<a href=http://slkjfdf.net/>Opidumar</a> <a href="http://slkjfdf.net/">Awevuwed</a> ins.gaec.cs.unedose.fr.fua.hk http://slkjfdf.net/
aqabcasug ([email protected])
06.12.21 13:32
<a href=http://slkjfdf.net/>Obusja</a> <a href="http://slkjfdf.net/">Ikgatuo</a> zrv.gtxc.cs.unedose.fr.chp.sa http://slkjfdf.net/
06.12.21 07:24
<a href=http://slkjfdf.net/>Eowimie</a> <a href="http://slkjfdf.net/">Exifoj</a> gsq.dcog.cs.unedose.fr.uxd.ih http://slkjfdf.net/
O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.