コード例 #1
0
ファイル: DatabaseBuilder.cs プロジェクト: JBSTG/Kanji-Crawl
        public static void AddMeanings(KanjiListModel kl)
        {
            //Set up Sqlite
            SQLiteConnection sql = new SQLiteConnection("Data Source=Kanji.db");
            SQLiteCommand    cmd;

            sql.Open();

            for (int i = 0; i < kl.Kanji.Count; i++)
            {
                cmd = new SQLiteCommand("SELECT rowid FROM Kanji WHERE character  = '" + kl.Kanji[i].Character + "';", sql);
                int rowid = Int32.Parse(cmd.ExecuteScalar().ToString());
                for (int j = 0; j < kl.Kanji[i].Meanings.Count; j++)
                {
                    cmd = new SQLiteCommand("INSERT INTO KanjiMeaning (meaning,kanjiId)" +
                                            "VALUES(" +
                                            "@Meaning," +
                                            "@Rowid" +
                                            ")", sql);
                    cmd.Parameters.AddWithValue("@Meaning", kl.Kanji[i].Meanings[j]);
                    cmd.Parameters.AddWithValue("@Rowid", rowid);
                    cmd.ExecuteNonQuery();
                }
            }

            sql.Close();
        }
コード例 #2
0
ファイル: GameViewLogic.cs プロジェクト: JBSTG/Kanji-Crawl
        public static KanjiModel SelectTargetKanji(KanjiListModel shortList)
        {
            Random     r      = new Random();
            KanjiModel target = shortList.Kanji[r.Next(shortList.Kanji.Count)];

            return(target);
        }
コード例 #3
0
ファイル: DatabaseBuilder.cs プロジェクト: JBSTG/Kanji-Crawl
        public static void AddKanji(KanjiListModel list)
        {
            //Set up Sqlite
            SQLiteConnection sql = new SQLiteConnection("Data Source=Kanji.db");
            SQLiteCommand    cmd;

            sql.Open();

            for (int i = 0; i < list.Kanji.Count; i++)
            {
                //Insert new kanji
                cmd = new SQLiteCommand(@"INSERT INTO Kanji (character,grade,jlpt,strokeCount,unicode,heisigEnglish)" +
                                        "VALUES(" +
                                        "@Character," +
                                        "@Grade," +
                                        "@JLPT," +
                                        "@StrokeCount," +
                                        "@Unicode," +
                                        "@Heisig" +
                                        ")", sql);
                cmd.Parameters.AddWithValue("@Character", list.Kanji[i].Character);
                cmd.Parameters.AddWithValue("@Grade", list.Kanji[i].Grade);
                cmd.Parameters.AddWithValue("@JLPT", list.Kanji[i].JLPT);
                cmd.Parameters.AddWithValue("@StrokeCount", list.Kanji[i].StrokeCount);
                cmd.Parameters.AddWithValue("@Unicode", list.Kanji[i].Unicode);
                cmd.Parameters.AddWithValue("@Heisig", list.Kanji[i].HeisigEnglish);
                cmd.ExecuteNonQuery();
            }

            sql.Close();
        }
コード例 #4
0
ファイル: FileUtility.cs プロジェクト: JBSTG/Kanji-Crawl
        public static void UpdateKanjiListModelFile(KanjiListModel list, string category)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(KanjiListModel));
            var           file       = System.IO.File.Create("XML/" + category + ".xml");

            serializer.Serialize(file, list);
            file.Close();
        }
コード例 #5
0
ファイル: FileUtility.cs プロジェクト: JBSTG/Kanji-Crawl
        public static KanjiListModel GetKanjiListModelFromXML(string category)
        {
            XmlReader      x          = XmlReader.Create("XML/" + category + ".xml");
            XmlSerializer  serializer = new XmlSerializer(typeof(KanjiListModel));
            string         text       = File.ReadAllText("XML/" + category + ".xml");
            KanjiListModel list       = (KanjiListModel)serializer.Deserialize(x);

            x.Close();
            return(list);
        }
コード例 #6
0
ファイル: GameViewLogic.cs プロジェクト: JBSTG/Kanji-Crawl
        public static KanjiListModel CreateKanjiShortList(KanjiListModel fullList, int numberSelected)
        {
            KanjiListModel shortList = new KanjiListModel();
            int            max       = fullList.Kanji.Count;
            Random         r         = new Random();

            for (int i = 0; i < numberSelected; i++)
            {
                shortList.Kanji.Add(fullList.Kanji[r.Next(0, max)]);
            }
            return(shortList);
        }
コード例 #7
0
ファイル: DataAccess.cs プロジェクト: JBSTG/Kanji-Crawl
        public static KanjiListModel LoadKanjiFromSet(string name)
        {
            KanjiListModel   kl         = new KanjiListModel();
            SQLiteConnection connection = new SQLiteConnection("Data Source=Kanji.db", true);
            SQLiteCommand    command;

            connection.Open();
            command = new SQLiteCommand(
                "SELECT * " +
                "FROM Kanji " +
                "WHERE rowid in " +
                "( SELECT kanjiId FROM KanjiInSet WHERE kanjiSetId in" +
                "( SELECT rowid FROM KanjiSet WHERE kanjiSetName = @KanjiSetName))", connection);
            command.Parameters.AddWithValue("@KanjiSetName", name);
            var r = command.ExecuteReader();

            while (r.Read())
            {
                string c = r.GetString(0);
                int    g = r.GetInt32(1);
                int    s = r.GetInt32(2);
                int    j = r.GetInt32(3);
                string u = r.GetString(4);
                string h = r.GetString(5);
                kl.Kanji.Add(new KanjiModel(c, g, s, j, u, h));
            }

            for (int i = 0; i < kl.Kanji.Count; i++)
            {
                command = new SQLiteCommand(
                    "SELECT meaning " +
                    "FROM KanjiMeaning " +
                    "WHERE kanjiId = " +
                    "(" +
                    "SELECT rowid " +
                    "FROM Kanji " +
                    "WHERE character = @Character" +
                    ")", connection);
                command.Parameters.AddWithValue("@Character", kl.Kanji[i].Character);
                r = command.ExecuteReader();
                while (r.Read())
                {
                    kl.Kanji[i].Meanings.Add(r.GetString(0));
                }
            }
            connection.Close();
            return(kl);
        }
コード例 #8
0
ファイル: DatabaseBuilder.cs プロジェクト: JBSTG/Kanji-Crawl
        public static void AddKanjiToGradeSet(KanjiListModel list, int grade)
        {
            SQLiteConnection connection = new SQLiteConnection("Data Source=Kanji.db");
            SQLiteCommand    command;

            connection.Open();
            string category = "grade-" + grade;

            command = new SQLiteCommand("SELECT rowid FROM KanjiSet WHERE kanjiSetName=@Grade", connection);
            command.Parameters.AddWithValue("@Grade", category);
            int setRowid = Int32.Parse(command.ExecuteScalar().ToString());

            command = new SQLiteCommand("INSERT INTO KanjiInSet(kanjiSetId,kanjiId) " +
                                        "SELECT @SetRowId,rowid " +
                                        "FROM Kanji " +
                                        "WHERE grade = @SetRowId", connection);
            command.Parameters.AddWithValue("@SetRowId", setRowid);
            command.ExecuteNonQuery();

            connection.Close();
        }
コード例 #9
0
ファイル: DatabaseBuilder.cs プロジェクト: JBSTG/Kanji-Crawl
        public static void BuildDatabase()
        {
            //Create Database File
            FileUtility.CreateDataFile("Kanji");

            //Create Tables
            DatabaseBuilder.AddTables("Kanji");

            for (int i = 1; i < 7; i++)
            {
                KanjiListModel list = FileUtility.GetKanjiListModelFromXML("grade-" + i);

                //Set up grade 1 set
                DatabaseBuilder.CreateSet("grade-" + i, "Kanji");
                //Add those kanji to the database
                DatabaseBuilder.AddKanji(list);
                //Add the meanings to the database
                DatabaseBuilder.AddMeanings(list);
                //Add the readings to the database
                DatabaseBuilder.AddReadings(list);
                //Add those Kanji to the correct grade set
                DatabaseBuilder.AddKanjiToGradeSet(list, i);
            }
        }
コード例 #10
0
ファイル: GameViewLogic.cs プロジェクト: JBSTG/Kanji-Crawl
        public static void DisperseKanji(ObservableCollection <ObservableCollection <string> > cellValues, KanjiListModel shortList)
        {
            Random r      = new Random();
            int    xLimit = cellValues.Count;
            int    yLimit = cellValues[0].Count;

            int x = r.Next(0, xLimit);
            int y = r.Next(0, yLimit);

            for (int i = 0; i < shortList.Kanji.Count; i++)
            {
                while ((cellValues[x][y] != String.Empty))
                {
                    x = r.Next(0, xLimit);
                    y = r.Next(0, yLimit);
                }
                cellValues[x][y] = shortList.Kanji[i].Character;
            }
        }