rodnichok

Project Description

Our project was designed for people who like to learn while playing games. No matter young or adult! You can use it for every subject, there is no lock-in for specific area. Adding new games is very easy - by editing human readable xml data files and creating new classes. All exercises, and correct answers stored in game.xml, menu items - in menu.xml, so it is very flexible.

Who is interested in it ?
First of all, those who will use it:
1. Children from 4 to 7
For them we have developed sample games for learning russian language:
- "Magic well" (choose letters from list, that are missing in the words on display )
- "Sew a head on a word"
- "Typesetter"
- "Crypto scientist"

Games can be in any language. You can easily create new games, such as
- "Calf and mother" (find a mother for specified animal)
- "Who is it?" (listen to the audio, and choose appropriate animal)
- "Puzzles"

or it can be logical games, like:
- "Mathematical beads"
- "Chain"

even learning a foreign language:
- "Guess a preposition"
- "Continue phrase"

2. Schoolchild

3. Teachers (computer-aided knowledge test system)

4. Parents (sure they do!)

5. Last, but not least, developers, which are new to Java programming! They can use it for learning object-oriented programming techniques, writing add-ons, modifying codebase, because it is all Open Source.

Inspiration

Somedays ago senior students have developed first version using Pascal language. It was designed for children (from 4 to 6) from studio of early learning "Rodnichok" ("young spring") based on City Palace of Youth Creative Activity. It was great! Children were very excited when computer smiled to them in case of the right answer.
But time goes on, and we have decided to replace old DOS programs based on structural programming techniques, with new ideas and modern technology to foster further development.

We have switched to Delphi/Windows, but eventually replaced it with Ubuntu and Java (thanks to Dmitry Lavrov, Sun Campus Ambassador in Omsk State University).
It is not easy to start using new technology, so while reading books about Java, step by step we practiced by rewriting our game platform in new language. Not an easy task, but we got help from our graduated student - Sergey Alexandrov, who has become a teacher for us (lectures, practices, etc.) It was not only interesting and challenging task, but also very funny! We have recorded video where Sergey tries to explain us new programming methods using a case from popular russian fairy tale "Gusi-lebedi" ("geese and swans"), you should see it!
 

Who will enjoy this the most?

It is a great pleasure for babies from 4 to 6, who learn to read.
Also programmers from Open Source community, that will read our code, extend or modify it.
 

The Project

Address our project Rodnichok

http://kenai.com/projects/rodnichok/downloads

«Rodnichok». Project manual.

Adding new game:

1) Create new panel for the game
    create new class in packet SwingViewGamesDefault
New -> BeanForm
Enter the name for the new class: WordHeadSwing (example)
SuperClass: swingView.GameView

2) Add visual components of the game, change their properties

3) Define following parameters in class:
game – points to game logic (object Game)
gameBase – points to main window of the project (object GameJFrame)

example:
public WordHeadSwing (Game game, GameJFrame gameBase) {
    super (game, gameBase);
    initComponents();
    setFocusable(true);
}

4) Redefine methods init(), changeTask():

public void init() {
    game.startNewGame();
}

public void changeTask() {
    jWordLabel.setText(game.getTaskData()[0]);
}

5) Exception handling, for example:


    private void formKeyTyped(java.awt.event.KeyEvent evt) {
       String[] mas_st;               /** pointer to an array of strings */
       mas_st = new String[1];                   /** array of one string */
       mas_st[0] = Character.toString(evt.getKeyChar());
       AnswerResult res;                           /** pointer to result */
       jWordLabel.setText(jWordLabel.getText().replace('*', evt.getKeyChar()));
       res = game.answerTask(mas_st);
       if (game.hasMoreTasks())
            gameBase.paintAnswer(res);
       else
           gameBase.paintResult(game.getResult().toString());
    }

6) Add new game to the menu (edit file menu.xml)

7) Add tasks and right answers (edit file game.xml)

8) Add new game to configuration file (file swingView.properties)


 

 

 

http://www.youtube.com/watch?v=uXspmxRMaX0