回 帖 发 新 帖 刷新版面

主题:是高手的进!!!

怎么用上下左右键控制一个小人(就是ascii码(2))在二维数组中走!!急求啊!!!

回复列表 (共3个回复)

沙发


没人吗????
幽灵密码!!!!!

板凳

急到什么程度了?

书本上应该都有讲怎样捕捉按键的吧?

如果是在QB里写,一般捕捉方向键都会用inkey$()函数
再加一个循环,不断的去检测是否有按键点击,
如果没有按键,则继续空循环,
如果有按键,到底是哪个按键,然后该做什么事情?

说的在二维数组中移动,这听的不太明白,
应该是在屏幕中按座标移动吧?

一是要在新位置上显示目标,
二是要在旧位置消除原显示.

一般容错度较高的,都是先消除,再显示.
这样可以保证显示正常,
否则如果新旧位置重复的时候,消除动作会导致目标失踪.

以下是我模拟文本输入框做的一个函数,自己看看.
有不明白的可以问,
但,我不会帮你写.
因为我不是高手.


DEFINT A-Z
FUNCTION Inputs$ (Ou$, k$, x, y, l, pv, ft)
STATIC Ins, c$
DIM a AS STRING * 81
  a = Ou$
  IF pv < 1 THEN pv = 1
  IF pv > l THEN pv = l
   LOCATE x, y, 0
   PRINT LEFT$(a, l);
   GOSUB Inputs200

DO
 DO WHILE (k$ = "" AND ft < 1): k$ = INKEY$: LOOP
 SELECT CASE k$
  CASE "": EXIT DO
  CASE CHR$(13), CHR$(10), CHR$(13) + CHR$(10): EXIT DO            '回车
  CASE CHR$(0) + CHR$(71): pv = 1                                  'HOME
  CASE CHR$(0) + CHR$(75): pv = pv - 1                             '左
  CASE CHR$(0) + CHR$(77): pv = pv + 1                             '右
  CASE CHR$(0) + CHR$(79): pv = LEN(RTRIM$(a)) + 1                 'END
  CASE CHR$(0) + CHR$(82): Ins = NOT Ins                           'INSERT
  CASE CHR$(0) + CHR$(83): MID$(a, pv) = MID$(a, pv + 1)                                 'DEL
  CASE CHR$(25), CHR$(127): GOSUB Inputs300                        'Ctrl+Y
  CASE CHR$(27): IF LTRIM$(a) <> "" OR pv <> 1 THEN GOSUB Inputs300 ELSE EXIT DO
  CASE IS > CHR$(31): GOSUB input400
  CASE CHR$(20)                                                    'Ctrl+U
    c$ = RTRIM$(LTRIM$(MID$(a, pv)))
    MID$(a, pv) = SPACE$(l)
  CASE CHR$(8)                                                     'bs
    IF pv > 1 THEN
      MID$(a, pv - 1) = MID$(a, pv)
      pv = pv - 1
    END IF
  CASE CHR$(22)                                                    'Ctrl+V
    k$ = c$
    GOSUB input400
  CASE ELSE
    IF ft > 0 THEN EXIT DO
END SELECT
  IF pv < 1 THEN pv = 1
  IF pv > l THEN pv = l
  a = LEFT$(a, l)
  LOCATE x, y, 0: PRINT LEFT$(a, l);
  GOSUB Inputs200
  k$ = ""
LOOP UNTIL ft > 0
  Inputs$ = LEFT$(a, l)
  GOSUB Inputs200
  IF ft < 1 THEN LOCATE , , 0 ELSE LOCATE , , 1
  IF pv = l AND MID$(a, l, 1) <> " " THEN k$ = CHR$(0) + CHR$(77) ELSE k$ = ""
EXIT FUNCTION

3 楼

前两天不在
Moz说的专业

我来回复

您尚未登录,请登录后再回复。点此登录或注册