package wordik.magneto; import java.util.Random; import android.database.sqlite.SQLiteDatabase; import android.widget.TextView; import android.widget.Toast; import wordik.magneto.db.MSRLang; import wordik.magneto.db.MSRMeanSemrelXX; public class GameLogic { private MagnetowordikActivity magnet_activity; private SQLiteDatabase db; private TextView tv_mark; /** The language selected by user for learning. */ private MSRLang xx_lang; /** The main word, that user have to guess. */ private MSRMeanSemrelXX semrel_main_word; /** Other words, one of which is a synonym (or antonym, etc.) to the main word. * I hope, that other words do not contain main_word. */ private String[] other_words; private int other_len = 3; // number of other words private int success = 0; private int failure = 0; private Random generator = new Random(); public GameLogic(MagnetowordikActivity _magnet_activity, SQLiteDatabase _db, TextView _tv_mark) { magnet_activity = _magnet_activity; db = _db; tv_mark = _tv_mark; other_words = new String[other_len]; } /** Restart game. */ public void reStart() { MSRMeanSemrelXX[] mm = MSRMeanSemrelXX.getRandom (db, xx_lang, 4); semrel_main_word = mm[0]; // gets 3 random words, except : semrel_main_word for(int i=0; i < other_len; i++) other_words [i] = mm [i + 1].getPageTitle(); String syn_word = semrel_main_word.getRandomSynonym(); // let's one of other words is a synonym, or antonym, etc. other_words[ generator.nextInt( other_len ) ] = syn_word; } /** Sets learning language. */ public void setLang (MSRLang _xx_lang) { xx_lang = _xx_lang; } /** Gets header of main word (entry). */ public String getMainWord() { return semrel_main_word.getPageTitle(); } /** Gets link to main word (entry) in the Wiktionary. */ public String getMainWordURL() { return "http://en.wiktionary.org/wiki/" + // substitute space by underscore in URL semrel_main_word.getPageTitle().replace(' ', '_'); } /** Gets header of main word (entry). */ public String getMainWordMeaning() { return semrel_main_word.getMeaning(); } /** Gets other random words. */ public String[] getOtherWords() { return other_words; } /** Checks whether the clicked word is a synonym for the main word. */ public void clickAndCheckSynonym (String candidate) { if(null == semrel_main_word) return; if( semrel_main_word.hasRelatedWord(candidate) ) { success ++; Toast.makeText(magnet_activity, "Yes!", Toast.LENGTH_LONG).show(); String relation = semrel_main_word.getRelation(candidate); String mark = "\n" + semrel_main_word.getPageTitle() + " - " + relation + " - " + candidate + "\n\n" + " - " + failure + " + " + success + " = " + (success - failure); reStart(); magnet_activity.reStart(); tv_mark.setText(mark); } else { failure ++; Toast.makeText(magnet_activity, "No", Toast.LENGTH_LONG).show(); //tv_mark.setText("\nNo!"); } } }