hjklyubnで移動するだけのコード

windowsはサポート外

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function

import curses.wrapper

class Player():
     def __init__(self, y, x):
          self.y = y
          self.x = x


def mainloop(stdscr):
     screen = stdscr.subwin(23,79,0,0)
     u = Player(y=13, x=40)

     while(1):
          # @を描画
          screen.addstr(u.y, u.x, '@')
          screen.move(u.y, u.x)
          screen.refresh()

          ch = chr(screen.getch())
          
          # qを押すと終了
          if ch=='q': break

          if ch in 'hjklyubn':
               screen.addstr(u.y, u.x, ' ')

               if ch in ('h', 'y', 'b'): u.x -= 1
               if ch in ('l', 'u', 'n'): u.x += 1
               if ch in ('y', 'k', 'u'): u.y -= 1
               if ch in ('b', 'j', 'n'): u.y += 1


if  __name__== '__main__' :
     try :
          curses.wrapper(mainloop)
     except Exception as e:
          import sys
          print(type(e), e, file=sys.stderr)