2016-08-13 2 views
0

The image shows the output. You can clearly see how the letters are not perfectly aligned. Мы пытаемся создать игру для школьного проекта и выбрали Word Search. Мы исследовали и нашли фрагмент кода, который помогает нам создавать сетку, а также помещать наше слово в сетку. Но проблема, с которой мы сталкиваемся сейчас, заключается в том, что сетка неправильно выровнена. (т. е. третья буква из первой строки не находится точно над третьей буквой во второй строке.). Это затрудняет поиск слова. Но, к сожалению, мы не изучили, как использовать random.choice и не можем понять, как правильно выровнять буквы. Все мысли и мнения приветствуются.Поиск слов на Python 2.7.4

import string 
import random 
print '''Welcome to WORD SEARCH. This game has five stages. You will have a crossword in each stage with one element hidden in each puzzle. 
However, do remember that the game is over once you make a mistake. So, think carefully and play. 
Good luck!!!!''' 

width = 12 
height = 12 

def put_word(word,grid): 
    word = random.choice([word,word[::-1]]) 
    d = random.choice([[1,0],[0,1],[1,1]]) 

    xsize = width if d[0] == 0 else width - len(word) 
    ysize = height if d[1] == 0 else height - len(word) 

    x = random.randrange(0,xsize) 
    y = random.randrange(0,ysize) 
    for i in range(0,len(word)): 
     grid[y + d[1]*i][x + d[0]*i] = word[i] 
    return grid 

Спасибо

+0

Пожалуйста, ваш код в правильный [mcve], установив некоторый образец ввода для вашей функции, чтобы мы могли воспроизвести ваш вопрос без дополнительной работы. Я не могу сказать, связана ли ваша проблема с кодом, который вы указали, или отсутствующей печатью, которую вы выполняете, используя выходную сетку. Кроме того, в следующий раз, пожалуйста, также пометьте свой вопрос общим тэгом [python], а также версией. –

+0

@AndrasDeak Здесь я установил ссылку на изображение. Извините за неудобства – Ruby

+0

Это нормально, но вы полностью упустили мою точку зрения из моего предыдущего комментария. –

ответ

2

Кажется, печать хорошо для меня ... Может быть, вы должны использовать моноширинный шрифт в терминале/везде, где вы печатаете из сетки.

grid = [['_' for _ in range(width)] for _ in range(height)] 

def print_grid(): 
    global grid 
    for row in grid: 
     print " ".join(row) 

put_word("hello", grid) 
put_word("world", grid) 

print_grid() 

Вы можете исправить алгоритм, хотя, потому что слова накладываются друг на друга, и вы видите, я добавил "hello", но "herlo" есть вместо того, чтобы ...

Пример вывода

_ _ _ h _ _ _ _ _ _ _ _ 
_ _ _ _ e _ _ _ _ _ _ _ 
_ _ _ d l r o w _ _ _ _ 
_ _ _ _ _ _ l _ _ _ _ _ 
_ _ _ _ _ _ _ o _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ 
+3

О, спасибо вам большое. Я не знал о шрифтах с разнесенным шрифтом. – Ruby

Смежные вопросы