Hi Martin, If I understand correctly, you want the game to muddle up the words for the player. The higher the player's lang skill the less muddled up it will be.
I think this is a cool idea, the only other place I have seen something like this is the Al Bhed language in Final Fantasy X, which was much simpler. It simply substituted letters, like A=E, B=F or something, then you would find objects that translate a letter. Your idea is much more intriguing. As for the code, I can make it a little more elegant by replacing the block of "if lang_level == x" with: if len(word) < lang_level*2: new_words.append(word) else: start = word[0] if lang_level > 1: end = word[-1] middle = list(word[1:-1]) else: end = "" middle = list(word[1:]) random.shuffle(middle) middle = "".join(middle) new_words.append(start + middle + end) That does the same thing dynamically based on level. As for making it more sophisticated, you could consider messing with the order of the words in a sentence or something. Maybe at level 4 you can understand all the words but they are in a random order requiring you to reread the sentence to make sense of it, and levels above 4 will sort out the order of the words so it takes less mental effort to work out what people are saying. On Mon, 08 Aug 2011 11:43 +0200, "Martin B." <spooky...@tbs-software.com> wrote: > hi all, > at first sorry for my english. > In my free time i coding some small adventure game in pygame. > Now i write some 'strange' stuff for it. Coz i dont registered in > another mailinglist for gamedev i write my question here. > > My hero has a 'language' option. When he arrive into unknown island > his lang is on level0. this level is increased after time. now i write > some lang stuff for it but how to write [ehm] "more sophisticated" ? > is this right word for it ? > > heres the ugly code for it. > I know it need more work but this is my first idea how to do it. > Im testing in shell for now. > developing in Py2.7 on Arch. > every comment is welcome. thanks > > #encoding: utf-8 > import random > > def MultiInput(): > ''' Pseudo multiline zadavani ''' > > text = '' > while True: > line = raw_input('? ') > if line == 'konec': > break > text = text + line + '\n' > return text > > def Alcoholer(text, lang_level=0): > new_lines = [] > for line in text: > new_words = [] > words = line.split() > for word in words: > if lang_level == 0: > txt = list(word) > random.shuffle(txt, random.random) > x = ''.join(txt) > new_words.append(x) > elif lang_level == 1: > if len(word) > 1: > start = word[0] > rest = list(word[1:]) > random.shuffle(rest, random.random) > x = ''.join(rest) > new_words.append(start + x) > else: > new_words.append(word) > > elif lang_level == 2: > if len(word) > 3: > start, end = word[0], word[-1] > middle = list(word[1:-1]) > random.shuffle(middle, random.random) > x = ''.join(middle) > new_words.append(start+x+end) > else: > new_words.append(word) > > elif lang_level == 3: > if len(word) > 5: > start, end = word[0], word[-1] > middle = list(word[1:-1]) > random.shuffle(middle, random.random) > x = ''.join(middle) > new_words.append(start+x+end) > else: > new_words.append(word) > > elif lang_level == 4: > if len(word) > 7: > start, end = word[0], word[-1] > middle = list(word[1:-1]) > random.shuffle(middle, random.random) > x = ''.join(middle) > new_words.append(start+x+end) > else: > new_words.append(word) > > new_line = ' '.join(new_words) > new_lines.append(new_line) > return '\n'.join(new_lines) > > if __name__ == '__main__': > #print("""Pro skončení zadávání textu napiš slovo 'konec'.""") > #text = MultiInput().split('\n') > #print text > > text = ["Pokus o napsani neceho uplne blbyho co vypada jako", > "rec totalne ozralych pobudu ale je to ve skutecnosti", > "jazyk davno zapomenute vysoce rozvinute spolecnosti", > "ktera kdysi zila pod upatim hor Ankhmorporku"] > > print('Original') > print '\n'.join(text), '\n' > > print('level 0') > print Alcoholer(text), '\n' > > print('level 1') > print Alcoholer(text, lang_level=1), '\n' > > print('level 2') > print Alcoholer(text, lang_level=2), '\n' > > print('level 3') > print Alcoholer(text, lang_level=3), '\n' > > print('level 4') > print Alcoholer(text, lang_level=4), '\n' > s = raw_input() >