Python и curses отображает странно - PullRequest
0 голосов
/ 02 марта 2012

Я сделал игру в палач на Python и тупо не сохранял, как раньше, я пытался использовать проклятия.: |Теперь тело мужчины отображается в разных местах.Голова и руки находятся перед шестом, который удерживает верх, а тело и ноги находятся там, где они должны быть.Вот мой кодЭто, наверное, самый уродливый код, который я написал на Python ...

import random
import re
import curses

myscreen = curses.initscr()
myscreen.clear()
myscreen.border(0)
myscreen.refresh()

f = open("/usr/share/dict/words", "r")
c = f.read().split('\n')
d = {1:'o', 2:'\\o/', 3:'\n      |     \\o/\n      |      |', 4:'\n      |      \\o/\n      |      |\n      |     / \\'}
w = random.choice(c).lower()
i = 1
j = 6
n = []
t = []
b = ""
l=4
h=2

myscreen.addstr(2,6, "--------")
myscreen.addstr(3,6, "|")
myscreen.addstr(3,13, "|"+b)
for item in range(j+1):
  myscreen.addstr(l, 2, "    |\n")
  l=l+1

myscreen.addstr(9,2,"__________\n")

for char in w:
  n.append('_')

for item in n:
  myscreen.addstr(10, h, item,)
  h=h+2

myscreen.addstr(11, 2, '\n')
myscreen.refresh()

while n != w:
  if not re.findall('_', ''.join(n)):
    myscreen.clear()
    myscreen.addstr(1,1, "You win!!\n\n")
    myscreen.refresh()
    break
  myscreen.addstr(12,2,"Guess: ")
  g = myscreen.getstr(12,9,1)
  if 1:
    if g in ''.join(t):
      print "You already guessed that."
      continue
    if g in w:
     k = [match.start() for match in re.finditer(re.escape(g), w)]
     for item in k:
       n[item]=g
     t.append(g)
    else:
      if i!=5:
        b = d[i]
        i=i+1
        j=j-1
        t.append(g)
      else:
        myscreen.clear()
        myscreen.addstr(1, 1, "You lose!")
        myscreen.addstr(2, 1, "The word was %s.\n\n" % w)
        myscreen.refresh()
        break
    myscreen.clear()
    myscreen.addstr(2,6, "--------")
    myscreen.addstr(3,6, "|")
    myscreen.addstr(3,13, "|\n"+b)
    l=4
    for item in range(j):
      myscreen.addstr(l, 6, "|\n")
      l=l+1

    myscreen.addstr(9,2,"__________\n")
    l=2
    for item in t:
      myscreen.addstr(10, l, item)
      l=l+2
    l=2
    for item in n:
      myscreen.addstr(11, l, item)
      l=l+2
    myscreen.refresh()
  else:
    myscreen.addstr(12, 2, "Please enter a letter.")
    myscreen.refresh()

Что с ним не так?

1 Ответ

0 голосов
/ 09 марта 2012

D'Oh!Я делал цикл for после того, как поместил полюс, который уже держит его там, поэтому он «переписал» предыдущий.

...