show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
-
上次了解了 一个新的转义模式
- \33 逃逸控制字符 esc
-
esc 让输出
- 退出 标准输出流
- 进行 控制信息的设置
- 可以 清屏
- 也可以 设置光标输出的位置
-
根据这个能做个小游戏吗???🤔
import tty
import sys
import termios
def get_character():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setcbreak(sys.stdin.fileno())
character = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return character
print("请按下一个字符...")
character = get_character()
print("你按下了键盘上的字符", repr(character), "对应的ASCII码值为", ord(character))
- 这下子可以根据wasd控制位置了吗?
import os
import tty
import sys
import termios
def get_character():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setcbreak(sys.stdin.fileno())
character = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
print("你按下了键盘上的字符", repr(character), "对应的ASCII码值为", ord(character))
return character
p = (0,0)
def move():
global p
print("\33[" + str(p[0]) + ";" + str(p[1]) +"Ho")
anjian = get_character()
if anjian=='w' :
p = (p[0]-1,p[1])
elif anjian=='s':
p = (p[0]+1,p[1])
elif anjian=='a' :
p = (p[0],p[1]-1)
elif anjian=='d' :
p = (p[0],p[1]+1)
def clear_screen():
os.system('clear')
while True:
clear_screen()
move()
- 可以通过四个按键控制小o在屏幕移动了
import tty
import sys
import termios
def get_character():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setcbreak(sys.stdin.fileno())
character = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
print("你按下了键盘上的字符", repr(character), "对应的ASCII码值为", ord(character))
return character
youxiditu=[
'*************************',
'* * * * * * * *',
'* * * * ***** * * * * * *',
'* * * * * * * * *',
'* * * *** * ***** * *',
'* *** * * * *** *',
'* * * * *** *** * *',
'*** *** * * * * *** *',
'* * * * * * *** * * *',
'* * *** * * * * * ***',
'*** * * *** ***** *',
'* ****** ** * * * ***',
'* * * * ***** * * *',
'* ******* X* * * *** *',
'* * * * * ** * * *',
'*************************']
p = (2,1)
def printmap():
for line in youxiditu:
print(line)
def wanjiayidong():
global p
print("\33[30;40H",p)
print("\33[" + str(p[0]) + ";" + str(p[1]) +"Ho")
anjian = get_character()
if anjian=='w' and youxiditu[p[0]-1][p[1]]!='*':
p = (p[0]-1,p[1])
elif anjian=='s' and youxiditu[p[0]+1][p[1]]!='*':
p = (p[0]+1,p[1])
elif anjian=='a' and youxiditu[p[0]][p[1]-1]!='*':
p = (p[0],p[1]-1)
elif anjian=='d' and youxiditu[p[0]][p[1]+1]!='*':
p = (p[0],p[1]+1)
def clear_screen():
os.system('clear')
while True:
clear_screen()
printmap()
wanjiayidong()
- o可以移动
- 但是很怪
- 屏幕坐标从1,1开始
- 但是python列表从0开始
- 修改代码
import tty
import sys
import termios
def get_character():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setcbreak(sys.stdin.fileno())
character = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
print("你按下了键盘上的字符", repr(character), "对应的ASCII码值为", ord(character))
return character
youxiditu=[
' ***********************',
'* * * * * * * *',
'* * * * ***** * * * * * *',
'* * * * * * * * *',
'* * * *** * ***** * *',
'* *** * * * *** *',
'* * * * *** *** * *',
'*** *** * * * * *** *',
'* * * * * * *** * * *',
'* * *** * * * * * ***',
'*** * * *** ***** *',
'* ****** ** * * * ***',
'* * * * ***** * * *',
'* ******* X* * * *** *',
'* * * * * ** * * *',
'*************************']
p = (0,0)
def printmap():
for line in youxiditu:
print(line)
def wanjiayidong():
global p
print("\33[10;40H",p)
print("\33[" + str(p[0]+1) + ";" + str(p[1]+1) +"Ho")
anjian = get_character()
if anjian=='w' and youxiditu[p[0]-1][p[1]]!='*' and p[0]!=0:
p = (p[0]-1,p[1])
elif anjian=='s' and youxiditu[p[0]+1][p[1]]!='*':
p = (p[0]+1,p[1])
elif anjian=='a' and youxiditu[p[0]][p[1]-1]!='*' and p[1]!=0:
p = (p[0],p[1]-1)
elif anjian=='d' and youxiditu[p[0]][p[1]+1]!='*':
p = (p[0],p[1]+1)
def clear_screen():
os.system('clear')
while True:
clear_screen()
printmap()
wanjiayidong()
- 游戏效果
- 角色被*代表的墙所阻断
- 最终需要移动到X的位置
- 移动过去后有什么奖励吗?
- 可以做一些更有意义的地图吗?
- 中传地图
- 戏影
- 信通
- 电视
- 新闻
- 移动 过程中
- 寻找碎片
- 进行交易
- 进行战斗
- 还能做点什么好玩的吗?
- 这次学习了单个字符的录入方法
- 并制作的一个小游戏
- 可以让这个游戏出现更多的颜色吗?
- 我们下次再说!👋