0

我正在编写一个应该在控制台中运行的 python 游戏。这是到目前为止的代码:

#!python

import getpass

a = ""
rv = ""
playerLoc = []
meU= 0
meD= 0
meL= 0
meR= 0

# rv is used as a spae taker. 
# The Me... variables are used to store the players location, MeU is up, meD is down, so     on so forth.

while a != "q":
    a = getpass.getpass("")
    if a=="w":
        meU = meU + 1
    elif a=="a":
        meL = meL + 1
    elif a=="d":
        meR = meR + 1
    elif a=="s":
        meD = meD + 1
    elif a=="q":
        rv = ""
    elif a=="":
        rv = ""
    elif a==" ":
        rv = ""
    else:
        print "%Not A Command%"
while a !="q":
    playerLoc.append(meU)
    playerLoc.append(meD)
    playerLoc.append(meL)
    playerLoc.append(meR)

我想知道如何在屏幕上的网格中显示玩家坐标。注意我没有使用 curses 或 PyGame。我研究了这个话题,找不到任何答案。请记住,这不是 GUI 游戏,而是在控制台中。我希望图形像蛇或入侵者或类似的东西。我希望这可以帮助其他有同样问题的人。我正在使用 getpass 模块进行不可见的 WASD 按下,尽管它们确实按下了 enter 键。我尝试使用星号“*”作为角色,但遇到了如何在屏幕上动态移动玩家的另一个问题。我研究了 2 周,但没有找到任何答案。

4

2 回答 2

2

注意我没有使用 curses 或 PyGame

你应该开始。curses正是您所需要的。除非您知道用户使用的是哪种终端,否则您无法在屏幕底部以外的任何地方可靠地打印文本。如果您确实知道用户拥有什么终端,则可以使用控制代码和转义序列,但使用curses仍然很有帮助,因为它为您提供了一种更好的使用方式。

于 2013-06-26T16:02:09.227 回答
0

我在制作刽子手游戏时做过类似的事情,对你来说唯一的区别是你需要在屏幕上的某个位置显示一个 X 字符。您可以使用 2D 数组来概述“屏幕”上的位置

首先,如果您在 Windows 上,您应该os.system('cls')在您应该连续调用的 draw() 方法的开头调用(在您的 while 循环中),然后您会将整个二维数组打印到屏幕上。

2,如果你做一个二维数组来表示你的地图,那么原点通常在左上角,这意味着你的位置都是正数,更高的 x 数字将在屏幕右侧,更高的 y 数字将在屏幕右侧屏幕底部。

3,当用户输入可能来自input()raw_input()取决于您的python版本的键时,您希望在二维数组中将他的位置向上左或向右移动

让我知道您需要什么帮助,我可以详细说明

于 2013-06-26T16:06:41.240 回答