adventure-game #3
|
@ -1,21 +1,35 @@
|
||||||
import npyscreen
|
# std imports
|
||||||
|
from math import floor
|
||||||
|
|
||||||
# This application class serves as a wrapper for the initialization of curses
|
# local
|
||||||
# and also manages the actual forms of the application
|
from blessed import Terminal
|
||||||
|
|
||||||
class MyTestApp(npyscreen.NPSAppManaged):
|
|
||||||
def onStart(self):
|
|
||||||
self.registerForm("MAIN", MainForm())
|
|
||||||
|
|
||||||
# This form class defines the display that will be presented to the user.
|
def roundxy(x, y):
|
||||||
|
return int(floor(x)), int(floor(y))
|
||||||
|
|
||||||
class MainForm(npyscreen.Form):
|
|
||||||
def create(self):
|
|
||||||
self.add(npyscreen.TitleText, name = "Text:", value= "Hellow World!" )
|
|
||||||
|
|
||||||
def afterEditing(self):
|
term = Terminal()
|
||||||
self.parentApp.setNextForm(None)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
x, y, xs, ys = 2, 2, 0.4, 0.3
|
||||||
TA = MyTestApp()
|
with term.cbreak(), term.hidden_cursor():
|
||||||
TA.run()
|
# clear the screen
|
||||||
|
print(term.home + term.black_on_olivedrab4 + term.clear)
|
||||||
|
|
||||||
|
# loop every 20ms
|
||||||
|
while term.inkey(timeout=0.02) != 'q':
|
||||||
|
# erase,
|
||||||
|
txt_erase = term.move_xy(*roundxy(x, y)) + ' '
|
||||||
|
|
||||||
|
# bounce,
|
||||||
|
if x >= (term.width - 1) or x <= 0:
|
||||||
|
xs *= -1
|
||||||
|
if y >= term.height or y <= 0:
|
||||||
|
ys *= -1
|
||||||
|
|
||||||
|
# move,
|
||||||
|
x, y = x + xs, y + ys
|
||||||
|
|
||||||
|
# draw !
|
||||||
|
txt_ball = term.move_xy(*roundxy(x, y)) + '█'
|
||||||
|
print(txt_erase + txt_ball, end='', flush=True)
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
import curses
|
|
||||||
|
|
||||||
# The `screen` is a window that acts as the master window
|
|
||||||
# that takes up the whole screen. Other windows created
|
|
||||||
# later will get painted on to the `screen` window.
|
|
||||||
screen = curses.initscr()
|
|
||||||
|
|
||||||
# lines, columns, start line, start column
|
|
||||||
my_window = curses.newwin(15, 20, 0, 0)
|
|
||||||
|
|
||||||
# Long strings will wrap to the next line automatically
|
|
||||||
# to stay within the window
|
|
||||||
my_window.addstr(4, 4, "Hello from 4,4")
|
|
||||||
my_window.addstr(5, 15, "Hello from 5,15 with a long string")
|
|
||||||
|
|
||||||
# Print the window to the screen
|
|
||||||
my_window.refresh()
|
|
||||||
curses.napms(2000)
|
|
||||||
|
|
||||||
# Clear the screen, clearing my_window contents that were printed to screen
|
|
||||||
# my_window will retain its contents until my_window.clear() is called.
|
|
||||||
screen.clear()
|
|
||||||
screen.refresh()
|
|
||||||
|
|
||||||
# Move the window and put it back on screen
|
|
||||||
# If we didn't clear the screen before doing this,
|
|
||||||
# the original window contents would remain on the screen
|
|
||||||
# and we would see the window text twice.
|
|
||||||
my_window.mvwin(10, 10)
|
|
||||||
my_window.refresh()
|
|
||||||
curses.napms(1000)
|
|
||||||
|
|
||||||
# Clear the window and redraw over the current window space
|
|
||||||
# This does not require clearing the whole screen, because the window
|
|
||||||
# has not moved position.
|
|
||||||
my_window.clear()
|
|
||||||
my_window.refresh()
|
|
||||||
curses.napms(1000)
|
|
||||||
|
|
||||||
curses.endwin()
|
|
Loading…
Reference in New Issue