Etusivulle
Sivun PHP-lähdekoodin näyttäminen
Alla on sivun katakanahiragana.php PHP-lähdekoodi.
<?PHP include ("_funktiot.php"); ?>
<?PHP NaytaSivunAlku ("Ohjelma katakana- ja hiragana-merkkien harjoitteluun"); ?>
<?PHP
$merkisto = "katakana";
if ($_GET["merkisto"] == "h") $merkisto = "hiragana";
// Taulukko merkeistä.
// array(latinalaisen vastineen alkuosa => array(latinalaisen vastineen loppuosa => japanilainen merkki, ...
// Alkuosissa "x" ja "_" eivät tarkoita mitään.
if ($merkisto == "katakana") {
// Katakanat
$merkit = array(
"x" => array("a" => "ア", "i" => "イ", "u" => "ウ", "e" => "エ", "o" => "オ"),
"k" => array("a" => "カ", "i" => "キ", "u" => "ク", "e" => "ケ", "o" => "コ"),
"s" => array("a" => "サ", "i" => "シ", "u" => "ス", "e" => "セ", "o" => "ソ"),
"t" => array("a" => "タ", "i" => "チ", "u" => "ツ", "e" => "テ", "o" => "ト"),
"n" => array("a" => "ナ", "i" => "ニ", "u" => "ヌ", "e" => "ネ", "o" => "ノ"),
"h" => array("a" => "ハ", "i" => "ヒ", "u" => "フ", "e" => "ヘ", "o" => "ホ"),
"m" => array("a" => "マ", "i" => "ミ", "u" => "ム", "e" => "メ", "o" => "モ"),
"y" => array("a" => "ヤ", "u" => "ユ", "o" => "ヨ"),
"r" => array("a" => "ラ", "i" => "リ", "u" => "ル", "e" => "レ", "o" => "ロ"),
"w" => array("a" => "ワ", "o" => "ヲ"),
"_" => array("-n" => "ン", "vokaalin pidennys" => "ー"),
);
} else {
// Hiraganat
$merkit = array(
"x" => array("a" => "あ", "i" => "い", "u" => "う", "e" => "え", "o" => "お"),
"k" => array("a" => "か", "i" => "き", "u" => "く", "e" => "け", "o" => "こ"),
"s" => array("a" => "さ", "i" => "し", "u" => "す", "e" => "せ", "o" => "そ"),
"t" => array("a" => "た", "i" => "ち", "u" => "つ", "e" => "て", "o" => "と"),
"n" => array("a" => "な", "i" => "に", "u" => "ぬ", "e" => "ね", "o" => "の"),
"h" => array("a" => "は", "i" => "ひ", "u" => "ふ", "e" => "へ", "o" => "ほ"),
"m" => array("a" => "ま", "i" => "み", "u" => "む", "e" => "め", "o" => "も"),
"y" => array("a" => "や", "u" => "ゆ", "o" => "よ"),
"r" => array("a" => "ら", "i" => "り", "u" => "る", "e" => "れ", "o" => "ろ"),
"w" => array("a" => "わ", "o" => "を"),
"_" => array("-n" => "ん"),
);
}
function MuotoileNaytettavaksi($alku, $loppu) {
// Merkkien latinalaiset nimet ohjelman sisäisestä esitysmuodosta käyttäjälle näytettäväksi
if ($alku == "x" || $alku == "_") $alku = "";
$tavu = $alku . $loppu;
if ($tavu == "si") return "shi";
if ($tavu == "ti") return "chi";
if ($tavu == "tu") return "tsu";
if ($tavu == "hu") return "fu";
return $tavu;
}
?>
Katakana ja hiragana ovat japanin kielessä käytettävät tavumerkistöt. Tällä ohjelmalla voit harjoitella joidenkin niihin kuuluvien merkkien tunnistamista. Ohjelma näyttää valitut merkit satunnaisessa järjestyksessä. Mukana ei ole mm. ゛- ja ゜-tarkkeilla varustettuja merkkejä eikä kahden merkin yhdistelmiä, koska ne muodostuvat lähes säännöllisesti perusmerkeistä. Puuttuvat merkit kannattaa opetella esim. Wikipedian <A HREF="http://en.wikipedia.org/wiki/Katakana">katakana</A>- ja <A HREF="http://en.wikipedia.org/wiki/Hiragana">hiragana</A>-sivuilta, joita olen käyttänyt lähteinä.
<P><HR><P>
<FORM NAME="asetuslomake" METHOD="get" ACTION="katakanahiragana.php">
<?PHP
echo "<INPUT TYPE=\"hidden\" NAME=\"merkisto\" VALUE=\"";
if ($merkisto == "katakana") echo "k"; else echo "h";
echo "\">\r\n";
echo "Merkistö:\r\n";
if ($merkisto == "katakana") echo "<B>katakana</B>"; else echo "<A HREF=\"katakanahiragana.php?merkisto=k\">katakana</A>";
echo " | \r\n";
if ($merkisto == "hiragana") echo "<B>hiragana</B>"; else echo "<A HREF=\"katakanahiragana.php?merkisto=h\">hiragana</A>";
echo "\r\n";
echo "<P>\r\n";
echo "Harjoiteltavat merkit:\r\n";
echo "<BR>\r\n";
// Näytetään checkboxit
foreach ($merkit as $alkukons => $tavut) {
echo "<INPUT TYPE=\"checkbox\" NAME=\"" . $alkukons . "\" VALUE=x";
if (array_search($alkukons, array_keys($_GET)) !== false) echo " CHECKED";
echo "> ";
// Näytetään konsonantin tavut
$tulostus = "";
foreach (array_keys($tavut) as $loppuosa) {
$tulostus .= MuotoileNaytettavaksi($alkukons, $loppuosa) . ", ";
}
echo substr($tulostus, 0, -2); // Viimeinen pilkku ja välilyönti pois
echo "<BR>\r\n";
}
?>
<P>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
function Valitse(param) {
// Merkintä tai sen poistaminen kaikkiin asetuslomakkeen checkboxeihin
maara = document.asetuslomake.elements.length - 3;
for (i = 0; i < maara; i++) {
document.asetuslomake.elements[i].checked = param;
}
}
function NaytaVastaus(kentta, teksti) {
// Yhden vastauksen näyttäminen tehtävälomakkeella
document.tehtavalomake.elements[2 + kentta * 2].value = teksti;
}
function KaikkiVastauksetPois() {
// Kaikkien vastausten piilottaminen tehtävälomakkeelta
maara = (document.tehtavalomake.elements.length - 2) / 2;
for (i = 0; i < maara; i++) {
document.tehtavalomake.elements[2 + i * 2].value = "";
}
}
</SCRIPT>
<INPUT TYPE="button" VALUE="Valitse kaikki" onClick="Valitse(true);">
<INPUT TYPE="button" VALUE="Poista valinnat" onClick="Valitse(false);">
<P>
<INPUT TYPE="submit" VALUE="Päivitä sivu / arvo uusi järjestys">
</FORM>
<P><HR><P>
<FORM NAME="tehtavalomake" METHOD="get" ACTION="eimitaan.html">
<?PHP
// Tehdään taulukko, jossa on näytettävät tavut
$nayttavut = array();
foreach ($merkit as $alkukons => $tavut) {
if (array_search($alkukons, array_keys($_GET)) !== false) {
foreach (array_keys($tavut) as $loppuosa) {
$nayttavut[] = array($alkukons, $loppuosa);
}
}
}
if (count($nayttavut) == 0) {
echo "Yhtään merkkijoukkoa ei ole valittu.\r\n";
} else {
shuffle ($nayttavut);
// Ei tulosteta tehtävätaulukkoa heti, vaan varastoidaan se muuttujaan, jotta "näytä kaikki"- ja "piilota kaikki"
// -napit voidaan näyttää ennen sitä.
$laskuri = 0;
$jskoodi = ""; // Tällä näytetään kaikki vastaukset
$kaikkikoodi = "<TABLE>\r\n";
foreach ($nayttavut as $tavunosat) {
$kaikkikoodi .= "<TR>\r\n";
$kaikkikoodi .= "<TD>\r\n";
$kaikkikoodi .= "<FONT SIZE=\"+3\">" . $merkit[$tavunosat[0]][$tavunosat[1]] . "</FONT>\r\n";
$kaikkikoodi .= "</TD>\r\n";
$kaikkikoodi .= "<TD>\r\n";
$kaikkikoodi .= "<INPUT TYPE=\"text\">\r\n";
$kaikkikoodi .= "<INPUT TYPE=\"button\" VALUE=\"Näytä vastaus\" onClick=\"";
// Yhden vastauksen näyttäminen
$temp = "NaytaVastaus(" . $laskuri . ", '" . MuotoileNaytettavaksi($tavunosat[0], $tavunosat[1]) . "'); ";
$jskoodi .= $temp;
$kaikkikoodi .= $temp;
$kaikkikoodi .= "\">\r\n";
$kaikkikoodi .= "</TD>\r\n";
$kaikkikoodi .= "</TR>\r\n";
$laskuri++;
}
$kaikkikoodi .= "</TABLE>";
$jskoodi = substr($jskoodi, 0, -1);
echo "<INPUT TYPE=\"button\" VALUE=\"Näytä kaikki vastaukset\" onClick=\"" . $jskoodi . "\">\r\n";
echo "<INPUT TYPE=\"button\" VALUE=\"Piilota kaikki vastaukset\" onClick=\"KaikkiVastauksetPois();\">\r\n";
echo "<P>\r\n";
echo $kaikkikoodi;
}
?>
</FORM>
<P>
<A HREF="_naytaphplahdekoodi.php?sivu=katakanahiragana.php">Tämän ohjelman PHP-lähdekoodi</A>
<?PHP NaytaSivunLoppu (); ?>
Takaisin sivulle katakanahiragana.php
Etusivulle