Rozšíření: Zahrajte si v Calcu sudoku

calc.png V tomto článku se můžete seznámit s rozšířením pro kancelářský balík OpenOffice.org, přesněji pro tabulkový procesor Calc. Po jeho nainstalování si můžete v Calcu snadno zahrát sudoku - v posledních letech populární matematickou hru s doplňováním číslic od 1 do 9.  

Ukázka Sudoku v CalcuUkázka Sudoku v Calcu

Toto rozšíření umožňuje zvolit si sudoku i v jiném než obvyklém rozsahu: od hracího plánu se čtyřmi oblastmi 2×2 po třeba 10×10 i víc (obrázek Část hracího plánu sudoku).

Část plánu Sudoku, nastaveného na 6*6Část plánu Sudoku, nastaveného na 6*6

Volba se provádí v úvodním dialogovém okně, které vidíte na obrázku – nastavuje hrací plán 3×3. Je v něm také možné nastavit obtížnost sudoku. Posuvník zcela vlevo odpovídá nejnižší obtížnosti (v hracím poli 9×9 zůstane nevyplněných jen asi 12 až 15 polí), poloha posuvníku zcela vpravo nastaví budoucímu sudoku největší obtížnost (na vaše doplnění čeká asi 55 prázdných polí).

Úvodní dialogové okno hryÚvodní dialogové okno hry

Během hry Calc hlásí, kolik číslic ještě zbývá doplnit, po vyplnění všech číslic vypíše, jestli jste hráli bezchybně nebo kolik bylo uděláno chyb (výpisy jsou v angličtině).

Hlášení výsledků po skončení hryHlášení výsledků po skončení hry

Sudoku si dnes sice můžete snadno najít na internetu, popř. vám ho nabízí přímo operační systém počítače (např. Ubuntu obsahuje sudoku s možností volby obtížnosti ve čtyřech úrovních). Pokud se vám ale na internetu nechce hledat, nabízí toto rozšíření snadno dostupné sudoku, v němž si můžete nastavit obtížnost a netradiční počet polí.

Jak získat rozšíření

Rozšíření najdete na stránce http://extensions.services.openoffice.org/project/sudoku1. Je zde popis verze, ilustrační obrázek, zatím jeden pochvalný komentář (možná se po seznámení s rozšířením přidáte), hodnocení a hlavně odkaz ke stažení rozšíření (tlačítko s textem Get it! – získat). Popisuji druhou verzi 0.5.5 s datem 7. 1. 2010, v půli dubna bylo rozšíření staženo více než 6000krát.

Jak rozšíření nainstalovat do Calcu

Po kliknutí na uvedené tlačítko Get it! (získat) by se mělo automaticky nabídnout uložení souboru rozšíření (u druhé verze sudoku1-0.5.5.oxt, přípona .oxt je typická pro rozšíření – eXTensions). Soubor uložte do složky, ve které soubor v dalším kroku snadno najdete (může to být např. Stažené nebo Plocha).

Potom otevřete Calc a použijte volbu z hlavní nabídky Nástroje | Správce rozšíření... V otevřeném okně Správce rozšíření klikněte na tlačítko Přidat..., vyhledejte uložený soubor a potvrďte. Nakonec okno Správce rozšíření zavřete.

Podrobný návod k instalacím rozšíření v OpenOffice.org najdete na naší wiki.

 

Okno Správce rozšíření po nainstalování SudokuOkno Správce rozšíření po nainstalování Sudoku

 

Spuštění rozšíření v Calcu

Jakmile rozšíření nainstalujete, je nezbytné ukončit kancelářský balík (resp. Calc) včetně rychlého spuštění (pokud ho používáte – najdete ho v systémové oblasti vedle hodin a dalších ikon) a znovu ho spustit.

Po restartu Calcu práci s rozšířením odstartujeme volbou z hlavní nabídky Nástroje | Přídavky, kde vybereme rozšíření Sudoku.

Spouštíme rozšíření Sudoku v CalcuSpouštíme rozšíření Sudoku v Calcu

 

Práce s rozšířením – řešení SU-DO-KU

Po předchozím kroku Calc otevře nový nepojmenovaný sešit. Ten obsahuje tři listy: Puzzle, Solution a Sample, jak ukazuje obrázek. Po spuštění se otevře list Puzzle (hádanka, hlavolam), který obsahuje vlastní sudoku. List Solution (řešení) je stejné sudoku už vyřešené a Sample (vzorek) obsahuje pravidelně uspořádaná čísla, snad kvůli generování sudoku.

V barevné oblasti vpravo se znázorňuje počet ještě nevyplněných čtverců (Empty squares) a po dořešení se zobrazí počet případných chyb (Differences between solutions), viz obrázek Hlášení výsledků po skončení hry umístěný výše.

Tři záložky listů v sešitu se SudokuTři záložky listů v sešitu se Sudoku

Co se děje v pozadí – jak to funguje?

Pro zkoumavého čtenáře může být zajímavé proniknout do toho, jak toto rozšíření pracuje, a nejspíš věc prozkoumá sám. Pokud ale chcete se zkoumáním pomoci, snad vám poslouží následující odstavce.

Samotný list se sudoku (Puzzle)

Přímo v listu se sudoku jsou použity tři vzorce. První (v buňce vedle textu Empty squares) počítá zbývající počet nevyplněných polí. U klasického sudoku s 81 čtverci vypadá vzorec takto:

=81-COUNTA(A1:I9)

Je zde použita funkce COUNTA (ze skupiny statistických funkcí Calcu), která počítá počet libovolných hodnot ve vyznačené oblasti. Pokud by tvůrce rozšíření použil podobnou funkci COUNT, která určí jen počet číselných hodnot, pak by v případě, že hráč omylem vyplní např. písmeno místo číslice, počítadlo ukazovalo i při vyplněném hracím poli, že některé čtverce vyplněny nebyly.

Druhý vzorec má za úkol zobrazit nápis o počtu chyb („Differences between solutions:“), ale teprve po vyplnění všech políček sudoku (po vyplnění všech čtverců, proto byla v předchozím případě použita uvedená funkce COUNTA). Ve druhém vzorci půjde tedy o podmínku IF:

=IF(L1=0;"Differences between solutions: ";"")

Nápis o počtu chyb se zobrazí teprve tehdy, když výsledkem předchozí funkce v poli L1 je nula (vše bylo vyplněno). Do té doby se nezobrazuje nic, jak předepisují závěrečné prázdné uvozovky v příkazu: ;"".

Třetím vzorcem se počítá počet chyb, a to také až po skončení hry:

=IF(L1=0;SUM(IF(Puzzle.A1:I9-Solution.A1:I9=0;"";1));"")

Zde jsou do sebe vloženy dvě logické funkce – podmínky IF. Vnitřní podmínka porovnává hodnoty vyřešeného sudoku (list Puzzle) se vzorovým řešením (list Solution) tím, že odpovídající si hodnoty po jednotlivých polích odečítá a porovnává rozdíl s nulou (výraz Puzzle.A1:I9-Solution.A1:I9=0). Pokud je rozdíl nula (bylo vyplněno správné číslo), nevrátí funkce IF nic, v opačném případě vrátí číslo 1 (zbývající část podmíněného příkazu: ;"";1). Před vnitřním IF je funkce SUM, která sečte počet jedniček (chyb): SUM(IF...

Vnější funkce IF začíná podmínkou L1=0, a proto se „spustí“ až po vyplnění všech polí sudoku, stejně jako u druhého vzorce. Jestliže je tedy tato podmínka splněna, vrátí vnější funkce IF počet chyb, určený svým prvním výrazem po podmínce – se zmíněným součtem SUM:

SUM(IF(Puzzle.A1:I9-Solution.A1:I9=0;"";1));

Jestliže podmínka vyplnění sudoku splněna není, nezobrazí nic (viz prázdné uvozovky jako u druhého vzorce).

Makro

Větší část práce v rozšíření sudoku ale obstarává makro. Zobrazíte si ho volbou Nástroje | Makra | Správce maker | OpenOffice.org Basic... (protože toto makro je psáno v základním jazyku maker pro OpenOffice.org, v Basicu).

Tato volba otevře dialogové okno Makra v OpenOffice.org Basic, ve kterém je třeba vybrat správné makro. Makra popisovaného rozšíření jsou uložena v knihovně sudoku1 ve dvou modulech: Module1 a Module2.

Po instalaci rozšíření se knihovna umístí do knihovního kontejneru Moje makra. Tam se umisťují makra, která mají být dostupná všem dokumentům z dané aplikace (v tomto případě Calc). Obdobným knihovním kontejnerem s makry je kontejner Makra OpenOffice.org. Vše vidíte na obrázku Moduly maker rozšíření sudoku.

Moduly maker rozšíření sudokuModuly maker rozšíření sudoku

Knihovní kontejner: Makro (např. Main) se v OpenOffice.org zapisuje a ukládá spolu s „příbuznými“ makry (která se podílejí na řešení společného úkolu, např. řešení sudoku) do modulů (Module1, Module2 apod.). Moduly se ukládají do knihoven (sudoku1, Standard apod.) a ty zase do knihovních kontejnerů (Moje makra, Makra OpenOffice.org, svůj knihovní kontejner má také automaticky každý soubor v OpenOffice.org, tento kontejner má stejný název jako dokument). Nejlépe to uvidíte, když si výše uvedenou volbou Nástroje | Makra | Správce maker | OpenOffice.org Basic... otevřete dialogové okno Makra v OpenOffice.org Basic.

V našem obrázku tohoto okna byl vybrán modul Module1 a v něm makro Main. Pak už stačí jen kliknout na tlačítko Upravit (viz šipka myši na obrázku) a zobrazí se editor maker v OpenOffice.org, ve kterém se makra dají upravovat a tvořit.

Editor maker neboli integrované vývojové prostředí (IDE)Editor maker neboli integrované vývojové prostředí (IDE)

Neodvážím se pustit do podrobného rozboru textu maker, uvedu jen, že makra v prvním modulu mají 255 řádek, ve druhém 17 (všimněte si záložek pro přepínání mezi moduly v dolní části IDE, třetí záložka obsahuje úvodní dialogové okno). Smekám před autorem, který zde naprogramoval generování sudoku s možností nastavení různé úrovně obtížnosti i různé velikosti hrací plochy.

Zkuste makro upravit

Snad jen dvě poznámky k makrům rozšíření, podle druhé byste si mohli makro sami vylepšit:

  1. V modulu Module2 se pracuje s úvodním dialogovým oknem. Na 10. řádku se po kliknutí na tlačítko OK předá řízení makru Main z modulu Module2, přičemž se předávají i dva parametry (hodnoty v závorce za názvem makra Main). Jde o zadané číslo jako proměnná NN a dále hodnota nastavená posuvníkem jako proměnná SB (ze spojení slov ScrollBar).

  2. Na řádku 215 v modulu Module1 začíná makro Yazyk (příkazem Sub Yazyk). Zde se nastavuje jazyk, kterým má rozšíření s uživatelem hovořit. Z názvu tohoto makra i z hodnot rozhodovacího příkazu case (za řádkem 227) je vidět, že tvůrce rozšíření je asi z Ruska. Pokud byste chtěli, aby s vámi rozšíření komunikovalo v češtině, stačí provést dvě změny:

  • na řádku 237, který následuje za příkazem Case Else:, přepište text English na např. Cesky (raději bez háčku nad C);

  • na konec textu modulu Module1 připište tyto řádky:

Sub Cesky
Na(0)="Hra"
Na(1)="Řešení"
Na(2)="Vzorek"
Na(3)="Prázdných polí: "
Na(4)="""Počet chyb: """
End Sub

Nakonec nezapomeňte změny uložit (volbou Soubor | Uložit nebo kombinací [Ctrl-s]). Až sudoku otevřete příště, budou už hlášení v češtině.

Hodnocení rozšíření

O kladech rozšíření jsem už psal: snadno dostupné sudoku v rámci OpenOffice.org, někdo možná zkusí netradiční počet čtverců, možnost nastavení obtížnosti hry.

Co by se dalo vylepšit? Bylo by příjemné nabídnout možnost tisku, při které by zmizelo barevné podbarvení polí a bylo by nahrazeno ohraničením s tradiční dvojí tloušťkou čar. Neujme se toho některý ze čtenářů?

(Jako ve škole) Průměr: 2.33 | Hodnotilo: 3
 

Komentáře

user avatar Vlachovský
Odpovědět
Rozšíření: Zahrajte si v Calcu sudoku
31. 05. 2010, 11:34:31
Bohužel po prvním spuštění jsem našel chybu- nastavil jsem maximální obtížnost a ve vygenerované hře nebyla obsazená dvě čísla. Neexistuje tedy jediné řešení (smí chybět maximálně jedno číslo). Asi by to mělo jít snadno opravit.
user avatar Vlachovský
Odpovědět
Rozšíření: Zahrajte si v Calcu sudoku
31. 05. 2010, 11:34:39
Bohužel po prvním spuštění jsem našel chybu- nastavil jsem maximální obtížnost a ve vygenerované hře nebyla obsazená dvě čísla. Neexistuje tedy jediné řešení (smí chybět maximálně jedno číslo). Asi by to mělo jít snadno opravit.
user avatar Josef Svoboda
Odpovědět
Rozšíření: Zahrajte si v Calcu sudoku
1. 06. 2010, 19:43:28
To je zajímavé: myslíte na nějaké principiální pravidlo jednoznačnosti nebo nejednoznačnosti v řešení Sudoku? To neznám.
Přidávám jen pár dalších čísel: počty prázdných polí, která mi rozšíření vygenerovalo při nastavení největší obtížnosti (62, jindy 37, potom 64), naopak u nejmenší obtížnosti to bylo třeba dvakrát 17 prázdných polí, pak 8 apod.
Zdravím Vás
Josef Svoboda

Odpovědět

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Josef Svoboda

Josef Svoboda

J. Svoboda učí M, F a IVT na Gymnáziu ve Frýdlantu nad Ostravicí

 
 
 
woo jaw demo hz