Giter VIP home page Giter VIP logo

lexica's Introduction

Lexica: The Android Word Game

Liberapay receiving Translation status F-Droid version Build Status

Get it on F-Droid Get it on Google Play

Lexica is a word game that is available on the Android platform. Players are given 3 to 30 minutes to find as many words as possible on a grid of random letters.

Features:

  • Several international dictionaries, with a combined total of millions of words
  • Multiplayer mode (send challenges to friends via SMS/Email/etc)
  • Customisable game modes:
    • 4x4, 5x5, and 6x6 sized boards
    • Different durations
    • Various scoring modes

Screenshots

Lexica game main menu In game screenshot (light theme) End game screen (showing missed words) In game screenshot (dark theme)

Contributing

Support

Lexica is an open source, GPLv3 game. It will always be freely available via F-Droid, or for anyone to build, fork, or improve via the source code.

If you wish to support further development, you can do so via:

Reporting Issues

Please report any issues or suggest features on the issue tracker.

Translating

We use Weblate to manage translations. Please see these instructions for using Weblate to translate Lexica.

Game strings F-Droid metadata
Translation status Translation status

Submitting changes

Pull requests will be warmly received at https://github.com/lexica/lexica.

Add a new language

Please read the documentation for adding a new language.

Compiling

This app uses a typical gradle folder structure.

  • To build (a debug version): gradle assembleDebug
  • To run tests: gradle test

Alternatively, you can import the project into Android Studio and build/run tests from there.

Differences from original

This fork is based on the original Lexic.

Some differences include:

  • Multiple international dictionaries and an internationalised UI.
  • New scoring modes, hint modes, and other options.
  • New user interface, including multiple themes.

Lexica API

A lot of work from many people in the community has gone into producing localised dictionaries for Lexica. To share this so that you can make your own word games, or your own Lexica versions, this information is published at:

https://lexica.github.io/lexica/

lexica's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lexica's Issues

Allow international dictionaries

As discussed in #2, Lexica needs to be able to support dictionaries beyond just English (US) and English (UK). This will involve at least the following:

  • Test coverage of the dictionary data structures.
  • More general support for rules such as "Q" is always followed by a "u" which is currently hard coded.
  • Change methods which accept bool usWord, bool ukWord to accept a more general abstraction of languages.
  • Reimplementation of the data structures to allow more than 26 characters.

Reimplementation of the data structures is taking the most time, as it includes:

  • Use strings instead of bit masks for storing words in the Trie data structures
  • Correctly read a compressed Trie for a given board configuration instead of the entire dictionary.
  • Replace all existing bit-shifting code throughout the app to expect strings instead.
  • TransitionMap
  • "Neighbourhood Mask"
  • Solvers
  • Probably others too?

This is the number one priority for me at this point. Even though other game modes would be a great addition, I think it is important that people of all sorts of different linguistic backgrounds should be able to play this game.

Polish (PL)

i could translate to polish and provide pl dict.

Indicate dictionary sizes

Knowing how many words are in a dictionary gives a rough idea how difficult the game is going to be. This could be displayed on the dictionary selection screen, the main game screen, or both.

Option to limit dictionary size to N most popular words

As someone with a good command of English but not Ultra-Professorship in Every Variant of English across Space and Time it would be fantastic to be able to limit the dictionary to the N most popular words, possibly in a logarithmic scale from 1,000 via 10,000 to the full list.

This is motivated by the unreasonably huge Lexic dictionary (the Dark Souls of word games) which I hope has not been copied to Lexica. Words which not even Google knows about is a bit much. Not everybody wants the equivalent of the New York Times crossword.

English (UK) dictionary is full of abbreviations

The word counts are somewhat misleading due to the many abbreviations (like FTP and STD). It might be nice to remove these, although only if there isn't a real word with the same letters (CAT).

option to use off-line dictionary (e.g. aard2) to lookup/define words

  • allows usage when data connection is not available (or roaming)
  • does not leak my language skills to Google
  • could allow me (non native English speaker) to select freedict-eng-xyz-0.1.4.slob within aard2 to improve my language skills (clicking one of the "MISSED WORDS" would quickly take me there). To be honest: it would be perfect if I could select two languages there...

Don't get me wrong, I already like lexica as it is!)

Feature request: replay same board

This would be a very basic form of multiplayer in which the same tablet can be passed to another person upon completion to see if they can beat the previous player's score.

This could be implemented either by immediately having a button which says "replay board", or by being able to directly enter a seed for the RNG. Although keeping a record of the previous score for the board would be nice, it is not part of this request.

Really hooked on this game (as is my other half, hence the request). Thanks for developing it.

Use 12dicts English dictionaries

I'm unsure as to the source of the original English (US + UK) dictionaries from Lexic. For #27, I needed a deterministic way to generate dictionaries from an open source tool, and so used aspell to generate word lists. I can't comment on the quality of the languages other than English, however the English languages generated using this are not ideal. They include abbreviations (e.g. "adv") which doesn't seem suitable. As such, I haven't used aspell to regenerate the English dictionaries, preferring to keep the old versions of unknown origin instead.

The end goal however, should be to use a trusted 3rd party source. In my searching, I came across 12dicts, which includes specific word lists designed for word games (http://wordlist.aspell.net/12dicts-readme/#3of6game). I think this would be a good starting point, and so we should generate a script which downloads the latest version of this and generates the relevant dictionary* files for Lexica.

Other languages should also source high quality word lists rather than deferring to aspell, but each language should get its own issue in this tracker.

Investigate Japanese board

Pretty much exactly the same as #35 (but that is for Chinese). The Japanese UI translation was one of the first to be contributed, so I want to also have a Japanese version of the board, but I don't have enough knowledge of the language to figure out if it is meaningful or how to go about implementing it.

Complete crash of the game when clicking "new game"

When clicking new game, using version 0.11 from F-droid, the game is just completely crashing.

Here's the result of adb logcat -v threadtime when it crashes:

04-25 08:42:55.936 23150 23150 D Game    : Language (from preferences): en_US
04-25 08:42:55.940 23150 23150 W ResourceType: No package identifier when getting value for resource number 0x00000000
04-25 08:42:55.941 23150 23150 E PlayLexica: top level
04-25 08:42:55.941 23150 23150 E PlayLexica: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.content.res.Resources.getValue(Resources.java:1358)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.content.res.Resources.openRawResource(Resources.java:1272)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.content.res.Resources.openRawResource(Resources.java:1248)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.serwylo.lexica.a.e.a(Unknown Source)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.serwylo.lexica.a.e.c(Unknown Source)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.serwylo.lexica.a.e.a(Unknown Source)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.serwylo.lexica.a.e.<init>(Unknown Source)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.serwylo.lexica.PlayLexica.k(Unknown Source)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.serwylo.lexica.PlayLexica.onCreate(Unknown Source)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.Activity.performCreate(Activity.java:6285)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.ActivityThread.access$900(ActivityThread.java:154)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.os.Handler.dispatchMessage(Handler.java:102)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.os.Looper.loop(Looper.java:234)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at android.app.ActivityThread.main(ActivityThread.java:5526)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at java.lang.reflect.Method.invoke(Native Method)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-25 08:42:55.941 23150 23150 E PlayLexica: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-25 08:42:55.961 23150 23150 D Game    : Language (from preferences): en_US
04-25 08:42:55.962 23150 23150 W ResourceType: No package identifier when getting value for resource number 0x00000000
04-25 08:42:55.962 23150 23150 D AndroidRuntime: Shutting down VM
04-25 08:42:55.962 23150 23150 E AndroidRuntime: FATAL EXCEPTION: main
04-25 08:42:55.962 23150 23150 E AndroidRuntime: Process: com.serwylo.lexica, PID: 23150
04-25 08:42:55.962 23150 23150 E AndroidRuntime: java.lang.RuntimeException: Unable to resume activity {com.serwylo.lexica/com.serwylo.lexica.PlayLexica}: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3160)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3191)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2529)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread.access$900(ActivityThread.java:154)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:234)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:5526)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.content.res.Resources.getValue(Resources.java:1358)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.content.res.Resources.openRawResource(Resources.java:1272)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.content.res.Resources.openRawResource(Resources.java:1248)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.serwylo.lexica.a.e.a(Unknown Source)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.serwylo.lexica.a.e.c(Unknown Source)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.serwylo.lexica.a.e.a(Unknown Source)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.serwylo.lexica.a.e.<init>(Unknown Source)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.serwylo.lexica.PlayLexica.k(Unknown Source)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at com.serwylo.lexica.PlayLexica.onResume(Unknown Source)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1259)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.Activity.performResume(Activity.java:6361)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3149)
04-25 08:42:55.962 23150 23150 E AndroidRuntime: 	... 10 more

EDIT: Running on an Android 6.0.1 phone with standard Sony ROM.

How to play?

Hello,
I'm sorry to write this here, because this is not related to a real issue of the software... but indeed it's an issue I have.
The point is: how can I select words? All I can do is to swipe through a series of consecutive letters and make that words. But as soon as I lift my finger to move it to a letter that is not "touching"the previous one, the incomplete word is processed as a try.

Which part am I missing?
Thank you.

Sharing challenge via QR code or NFC

it would be great if a challenge could be shared with (one or more) others.

Both QR code and NFC have the advantage that the players would need to directly interact.
(Generates extra dynamics that WLAN cannot not give)

Appending QR-codes for a 4x4 and a 6x6 quiz.

Again, thanks for Lexica!

"lexica:ESSNNRVOOREITGAA"
4x4

"lexica:SHAUNUOJIASHIANAHPHATIOSHAOSOHYEICHE"
6x6

Unused characters in Dutch grid

These are the letters used in the Dutch grid:

https://github.com/lexica/lexica/blob/master/app/src/main/res/raw/letters_nl.txt

They are a little weird.

To take an easy example, the î is not a letter we use, but unlike the English, we usually leave accents when we loan words from other languages (the most commonly known example in both English and Dutch might be crème fraîche), but that does not mean that the circumflex on the i (î) is a known letter to Dutch people. You don't have an î in the English grid either!

We use a diaeresis (dots above it) to make something a separate sound, so the word idee (idea) in plural is ideeën (ideas). The pronunciation between Dutch and English in singular is almost the same, save for the "a" at the end in English. In plural, we just add "en" in the end, but because it's preceded by an "e" and sequential "e"s are a single sound, we need to make clear that it's a new sound. So the e with diaeresis (ë) is not a different letter, it's just separating one "e" sound from another. Dictionary search engines like woorden.org ('words'.org) also happily include the diaeresis for you if you omit them when looking up a word: it's a detail used in writing, we omit them from laziness without loss of understandableness.

Note that this is very different from the German usage, where an "ä" is unequal to "a" in sound, and the word "nass" is definitely considered unequal from "näss".

We do have some sound modifiers, like for the word café (which means, unsurprisingly, cafe), but we also use accents for emphasis ("geen paarden!" -> "géén paarden!" could be used to mean the same as "no horses!" -> "no horses!"). This shows that we consider the letter mostly equal with only a different emphasis.

For loanwords, I guess the è, ç, and û could appear in Dutch print, but I bet the number of Dutch people who can find those keys on a keyboard is roughly equal to the number of words with such characters in the Dutch dictionary. While accents and diaeresis are taught in school, the remaining characters are really not part of the language at all (and we only use diaeresis commonly for the i and the e). Only 1 promille (138 words) in the Dutch Lexica dictionary contain any of è ñ ç û ô à ä î. The x in English occurs in 2% of words (1122 in the en_GB dictionary), so that one is super useful by comparison ;)

(There is also the letter IJ/Y: my grandma sometimes replaces ij with y to save characters in SMS messages, in old Dutch you might see the y used instead of ij, and some online dictionaries will redirect you from a word like "ys" to "ijs" (means "ice"), but it's very old fashioned. As a Dutchman, I think it's fine to ignore.)


So what should we do regarding those semi-letters? I don't know if this discussion was held already (I couldn't find it in past Github issues), and I am not a linguist, but I would say that the grid should be only A-Z. The expected behaviour would be that swiping "ideeen" matches "ideeën" and swiping "cafe" matches "café".

The easy solution is to just replace the letters by their diacriticless bases in the dictionary, but here's the catch: I do think Dutch players would expect ideeën to show up spelled correctly. I think the game logic will need to include a few lines for Dutch to check the dictionary in diacriticless manner and then saves the word to the matched list correctly.

What do you think?

Sound Effects

Sound effects would be nice and would enhance usability by providing
feedback to the user as to whether or not a word is accepted.

Original issue reported on code.google.com by [email protected] on 24 Feb 2009 at 7:13

Reimplements algorithm to calculate letter probabilities.

There is a file called letters.txt which looks like so:

Qu 3
A 73 15 2 1 1
C 43 6 1
B 21 2 1 1
E 100 35 7 1 1
D 43 6 1 1
G 35 4 1 1
F 16 2 1 1
I 81 22 4 1 1 1
H 26 2 1
K 11 1 1 1
J 3 1
M 29 4 1 1
L 53 10 1 1
O 58 13 2 1
N 69 16 2 1 1
P 32 4 1 1
S 82 23 4 1 1 1
R 73 14 1 1
U 36 3 1 1
T 68 15 2 1
W 11 1 1
V 13 1
Y 18 1
X 4 1
Z 5 1 1 1

From the source code, it seems that the second column is the probability of the word being added to the board once, the third column is the relative probability of it being added a second time, etc. So for example Qu should only ever appear once, Y twice, but S can appear 6 times.

I'm not sure of how these probabilities were generated, but we need to be able to calculate these for new alphabets too. As such, Lexica needs an algorithm to calculate these probabilities based on how often they appear in the dictionary for the given language.

There is some literature on how to calculate Scrabble scores based on letter distributions. Not sure if that is directly applicable here though, because it seems quite specific to scrabble.

faty...

Wohoo it's becoming extra big... As shows F-droid :

  • 0.11.0 on april 24th is only 766K
  • 0.11.1 on april 27th is now 3.1M
  • 0.11.2 on may 5th jumps to 3.3M
  • 0.11.3 on may 16th stays at 3.3M
  • 0.11.4 on may 22nd reachs 4.3M

Why on earth dicts add so much weight??

Investigate Chinese boards

I'm currently in the process of allowing languages other than English to be played.

I didn't know which languages to implement first, so I looked at the translations which were provided by the community, and decided to reward those translators by implementing a fully translated version of the game. Some of the first community translations were in Chinese, but I'm unsure if it is meaningful to play this game with a Chinese board.

Unfotunately I don't speak any language other than English, and so I'm looking for feedback on if/how this should be approached.

For the other languages (mostly European), I have:

  • Found a word list (ranging from 100,000-500,000 words from the GNU aspell program).
  • Go over every word and every character in every word, to figure out which are legal characters to put on the board.
  • Calculate how common each character is so when generating a board, the characters are placed randomly, but proportional to how often they occur in the language.

My questions are:

  • Does it make sense to do this with Chinese text (either simplified or traditional)?
  • If so, is there an open source/freely licensed word list available? aspell doesn't support Chinese.

The reason I fear it may not work is because of the way in which each character in Chinese is almost a word in itself, and so there will not be many opportunities to join several characters together. Any feedback on this proposal would be greatly appreciated.

US Library in 0.10.0 seems to be missing common words (Greet, Green, etc.)

Hello! I'm a big fan of Lexica, so first off thank you for continuing development and support.

I haven't tested this issue deeply, but I've noticed that as of 0.10.0 Lexica's US-English word database appears to be missing "greet", "greets", and "green". I haven't been able to generate longer words using "greet" or "green" as a base to test. "Great" is accepted. I have replicated this on multiple boards. I have managed to generate boards which include "greet" and "green" using the UK dictionary and can confirm that they are accepted using that dictionary. I believe that there are more legitimate words missing from the US dictionary that used to be considered correct, but I didn't make note of them at the time as they were more obscure/archaic.

As a slightly-related request, it would be nice to be able to import libraries to use, or at least to enable both British and American spellings simultaneously.

Thanks again for Lexica!

Randomize letter orientation

Recently attempted to use this as a replacement for a physical game set with a group of friends, and the only issue was that the aligned letters give an advantage to one position at a table. Would it be possible to add an option for randomized orientation?

Display board at end of game

Many people have requested that the board be visible at the end of the game
so that they can see where the missed words were.

Original issue reported on code.google.com by [email protected] on 24 Feb 2009 at 7:12

Allow for multiple dictionaries

At this point, the code for creating and using dictionaries is written in
such a way that only the US and UK dictionaries are easily supported. 
Rewriting some code to add support for more dictionaries would solve the
problem.

Original issue reported on code.google.com by [email protected] on 24 Feb 2009 at 7:11

Lexica app gets crashed.

Actual behavior

I opened the lexica opensource android app. After that I clicked on the New game option. And played a game. After that I saved that game. Then I clicked on the preferences option and then I activated show word length breakdown. After that I clicked on the dictionary option and changed the language. After that I got back to the mainscreen and started a new game and saved it. After that I clicked on preferences option and clicked on the dictionary option and then changed the language. After that went to the homescreen of the app and clicked on restore game option. But suddenly the app crashed. After that whenever I changed the language and clicked on restore game option. App always crashed.

How to reproduce

  • First you need to download the app from fdroid and then install it. After that open the app.

  • Click on the new game option and then play a game. After that save it.

  • Then click on preferences option. And activate the show word length breakdown option.

  • After that click on the dictionary option. And change the language.

  • Then get back to the mainscreen of the app. And start a new game and play it. After that save the game.

  • Then click on the preferences option. After that click on the dictionary option. And change the language. Then get back to the mainscreen.

  • Click on the restore game option. Suddenly the app will crash.
    After that whenever you change the language and click on the restore game option. The app will crash.

https://youtu.be/4NAvpPE_aZ0

  • Browser: Lexica

  • Version:0.11.4

  • Operating system:7.1.2

  • Device model: Redmi 4

Online-Wikipedia for russian

Great app!!! Thank you!

But duckduckgo, aard and quickdict do not work well as dictionaries in russian. When I try to lookup definitions for the missed words, I barely find anything. A link to Wikipedia would be great. Wikipedia knows all the words. Offline-Wikipedia in aard is 4,5 GB(very big) and the link does not work.

Feature request: Qu tile option

It would be really nice to have the option to change the Q tiles to Qu, like in the commercial board game Boggle. This would make it much easier to form words containing a Q in English.

Similarly, there is a house rule used in Speed Scrabble whereby a Q tile can optionally have an implicit U. Thus one can spell "quit" either QUIT or QIT. This might overcomplicate things, but it has the advantage of making Q's easier to play without eliminating the few words where Q is not followed by U.

Thanks for the great game!

Consecutive sound effects won't load

0.906 on Android 5.0. Consecutive effects won't load (e.g. discovering two new words or three fails or repeat words will result in silence) until a new effect is played or the app loses focus.

New logo

Hi, May I contribute for you? by designing a logo

LG G6

Crashes by pressing new game

Crash when using spanish dictionary

App crashes as soon as you click on new game button.

java.lang.ArrayIndexOutOfBoundsException: length=26; index=136
	at com.serwylo.lexica.game.Game.letterPoints(Game.java:400)
	at com.serwylo.lexica.view.LexicaView.drawBoard(LexicaView.java:168)
	at com.serwylo.lexica.view.LexicaView.onDraw(LexicaView.java:376)
	at android.view.View.draw(View.java:16201)
	at android.view.View.updateDisplayListIfDirty(View.java:15198)
	at android.view.View.draw(View.java:15971)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15193)
	at android.view.View.draw(View.java:15971)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15193)
	at android.view.View.draw(View.java:15971)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15193)
	at android.view.View.draw(View.java:15971)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15193)
	at android.view.View.draw(View.java:15971)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.draw(View.java:16204)
	at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2690)
	at android.view.View.updateDisplayListIfDirty(View.java:15198)
	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:282)
	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:288)
	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:323)
	at android.view.ViewRootImpl.draw(ViewRootImpl.java:2642)
	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2461)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2094)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1134)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6050)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:860)
	at android.view.Choreographer.doCallbacks(Choreographer.java:672)
	at android.view.Choreographer.doFrame(Choreographer.java:608)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:846)
	at android.os.Handler.handleCallback(Handler.java:742)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:5523)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)

Edit: Lexica 0.11.2 from F-Droid.

Word length breakdown is inaccurate

When "word length breakdown" is turned on, sometimes it will report some words remaining, but those words are not in the "missed words" list when the game is ended. The counts don't match up. According to the app info, I'm running version 0.10.0. I couldn't find any version information inside the app.

screenshot_20171207-221948
screenshot_20171207-222015
screenshot_20171207-222044
screenshot_20171207-222050

Design draft

🍉 I made a quick design draft.

I tried to leave most of the logic as it is. There are two simplifications to make it look a bit clearer.
(no score display for individual words, no space for the word length breakdown so far, both could be added though)

Font: Draft uses Rubik that comes with lovely rounded letters and quite a good language support itself but could be replaced with Noto for unsupported languages.

There's a light and a dark variant. If you play at night the later one might be easier on the eyes.

lexica_redesign_draft

What do you think? Somebody interested in implementing it?

Enable Proguard to reduce .apk size

As per a comment from the Play store, it does seem a little excessive that the original Lexic was < 300KiB and this is ~1.3MiB. We should enable Proguard and see how small the .apk becomes.

Settings change isn't handled properly.

Set the board size to 4x4, then start a new game. Go back to the settings, and change the board size to 6x6. Now resume the game. You'll still be playing the 4x4 board, but that's not necessarily a bug. When you finish the game, your high score gets saved to the 6x6 slot (the current setting), even though you just finished a 4x4 game (the previous setting). That's definitely a bug. I'm running version 0.11.4.

Translate app metadata for F-Droid + Google Play

This is a solved problem, and can be approached in several ways. One nice approach is that used by Transporter, where the translations are stored in strings.xml under google_play_short_description et al. These are then managed via Weblate, and pulled out into their relevant metadata fields when required (e.g. before release).

That script is licensed under GPLv3+ and so is compatible with Lexica.

Add Persian for dictionary

After speaking with one or two people, it seems that there is no reason this shoudln't work. GNU ASpell contains an fa dictionary in debian, and I can successfully use that to generate a word list. However for some reason the tools I created to generate random boards in Latin based languages is not working with this wordlist. I'll have to investigate further to figure out why this is the case.

Extra thrill: colorize letters towards the end of the game

It would be nice, if, a while into the game, the letters would get a slightly different color according to their relative importance (as the first letter of the left over words).

I'd propose an option to colorize the letters when only 1/e = 0.368 of the overall time is left.

Only one fraction to make things still comparable.
Rationale for that strange number: if 0.5 were chosen (another reasonable choice) then the quest falls into two equal parts and players might start to (relatively calmly) wait for the convenient help in the second phase (no extra thrill). With markedly less then 0.5 you still wait for the second phase but then as you know it's significantly shorter the thrill does not slacken (end sprint). 1/e is the natural choice below 0.5:)

No soft blend-in on purpose (would be distracting because colors instead of letters would get attention and would be display/environment dependent anyway).

Colorizing green would calm things down too much for my taste, red would be nice but pretty aggressive, grey is not overly inspiring:)

It might be tempting to have the fraction as a tunable but please don't offer it like this (fragments users community and moves attention to tuning the game).

Instead address the need with a button like "add 60s [to countdown]". Use 60 s not 1 min to avoid the vagueness of a minute:)

That button adds the extra emotional aspect of wanting to be helped/not wanting help/little cheating/no cheating to the game. Simultaneously it allows the user to have a valve for stress if he/she wishes to.

Sorry for using imperatives like "use" or "address" - they helped me to lay out the ideas.

Greetings,
Frieder

Lexic pops back up after exit

What steps will reproduce the problem?
1. Start Lexic, select play online, choose a board.
2. At waiting screen, hit back twice to exit.

What is the expected output? What do you see instead?
Expected: Lexic goes and stays away
Actual: Game board pops up out of nowhere possibly many minutes later,
presumably when someone else joins up for online play


What version of the product are you using? On what operating system?
0.8.0 on Android 1.5 (JF 1.51)


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 16 Jun 2009 at 9:40

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.