回 帖 发 新 帖 刷新版面

主题:[讨论]游戏王国

谁有游戏都加分

回复列表 (共31个回复)

11 楼

SUB Set.Palete

    STATIC rgb() AS INTEGER
    STATIC Lc%
    IF Lc% = 0 THEN
            Lc% = 1
            REDIM rgb(16, 3) AS INTEGER
            OUT &H3C6, 255
            FOR i = 0 TO 15
                OUT &H3C7, i
                rgb(i, 0) = INP(&H3C9)
                rgb(i, 1) = INP(&H3C9)
                rgb(i, 2) = INP(&H3C9)
            NEXT
            Clr# = 63 / 13
            FOR i% = 1 TO 13
                OUT &H3C8, i%
                OUT &H3C9, i% * Clr#
                OUT &H3C9, i% * Clr#
                OUT &H3C9, i% * Clr#
            NEXT
   
                OUT &H3C8, 14
                OUT &H3C9, 63
                OUT &H3C9, 0
                OUT &H3C9, 0

12 楼


                OUT &H3C8, 15
                OUT &H3C9, 10
                OUT &H3C9, 10
                OUT &H3C9, 63
        
                EXIT SUB
    END IF
    OUT &H3C6, 255
    FOR i = 0 TO 15
        OUT &H3C8, i
        OUT &H3C9, rgb(i, 0)
        OUT &H3C9, rgb(i, 1)
        OUT &H3C9, rgb(i, 2)
    NEXT
END SUB

SUB SysInit

Set.Palete

LINE (0, 0)-(15, 15), 15, B
PAINT (1, 1), 9, 15
FOR i% = 1 TO 13 STEP 3
    Up.Pset i%, 1
    Up.Pset i%, 13
NEXT
FOR i% = 1 TO 13 STEP 3
    Up.Pset 1, i%
    Up.Pset 13, i%
NEXT
GET (0, 0)-(15, 15), BPic

Bl(0).Wid = 4: Bl(0).Hei = 1: Bl(0).Bit = "1111"
Bl(1).Wid = 3: Bl(1).Hei = 2: Bl(1).Bit = "001111"
Bl(2).Wid = 3: Bl(2).Hei = 2: Bl(2).Bit = "100111"
Bl(3).Wid = 1: Bl(3).Hei = 1: Bl(3).Bit = "1"
Bl(4).Wid = 3: Bl(4).Hei = 2: Bl(4).Bit = "010111"
Bl(5).Wid = 3: Bl(5).Hei = 2: Bl(5).Bit = "101111"
Bl(6).Wid = 2: Bl(6).Hei = 1: Bl(6).Bit = "11"
Bl(7).Wid = 2: Bl(7).Hei = 2: Bl(7).Bit = "1111"
Bl(8).Wid = 2: Bl(8).Hei = 2: Bl(8).Bit = "0110"
Bl(9).Wid = 3: Bl(9).Hei = 2: Bl(9).Bit = "011110"
Bl(10).Wid = 3: Bl(10).Hei = 2: Bl(10).Bit = "110011"

CLS
FOR i% = 2 TO 6
   LINE (50 - i%, 10 - i%)-(550  i%, 470  i%), 11 - i%, B
NEXT
PAINT (100, 100), BackClr%, 9
LINE (bordx% - 1, Bordy% - 1)-(bordx%  384, Bordy%  384), 0, BF
FOR i% = 2 TO 6
    LINE (bordx% - i%, Bordy% - 1)-(bordx% - i%, Bordy%  Hei% * Pexy%  i% - 1), i%  3
    LINE (bordx%  i%  Wid% * Pexx% - 1, Bordy% - 1)-(bordx%  i%  Wid% * Pexx% - 1, Bordy%  Hei% * Pexy%  i% - 1), i%  3
NEXT
FOR i% = 2 TO 6
    LINE (bordx% - i%  1, Bordy%  Hei% * Pexy%  i% - 1)-(bordx%  Wid% * Pexx%  i% - 1, Bordy%  Hei% * Pexy%  i% - 1), i%  3
NEXT

MyPrn 130, 20, "games V1.0 Stephen CopyRight(C) 2005.1", 13, 0, 0
MyPrn 129, 19, "games V1.0 Stephen CopyRight(C) 2005.1", 4, 0, 0
MyPrn 180, 445, "SPACE pause/start", 13, 0, 0
MyPrn 179, 444, "SPACE pause/start", 0, 0, 0

MyPrn 460, 50, "Next", 13, 0, 0
MyPrn 459, 49, "Next", 3, 0, 0

MyPrn 461, 151, " A   left for", 13, 0, 0
MyPrn 460, 150, " A   left for", 4, 0, 0
MyPrn 461, 181, " S   right for", 13, 0, 0
MyPrn 460, 180, " S   right for", 4, 0, 0
MyPrn 461, 211, "←   LEFT", 13, 0, 0
MyPrn 460, 210, "←   LEFT", 4, 0, 0
MyPrn 461, 241, "→   PIGHT", 13, 0, 0
MyPrn 460, 240, "→   RIGHT", 4, 0, 0
MyPrn 461, 271, "↓   DOWN", 13, 0, 0
MyPrn 460, 270, "↓   DOWN", 4, 0, 0
MyPrn 461, 301, "PgUp FAST", 13, 0, 0
MyPrn 460, 300, "PgUp FAST", 4, 0, 0
MyPrn 461, 331, "PgDn SLOW", 13, 0, 0
MyPrn 460, 330, "PgDn SLOW", 4, 0, 0
MyPrn 461, 361, "S=0", 13, 0, 0
MyPrn 460, 360, "S=0", 4, 0, 0
M$ = LTRIM$(RTRIM$(STR$(10 - Fast%)))
MyPrn 461, 391, "HARD="  M$, 13, 0, 0
MyPrn 460, 390, "HARD="  M$, 4, 0, 0
END SUB

13 楼

SUB Turn.Left (e AS BlType)
'将方块向左旋转
DIM T AS STRING * 6
N% = 1
FOR i% = 1 TO e.Hei
    FOR J% = 1 TO e.Wid
        M% = (e.Wid - J%) * e.Hei  i%
        IF MID$(e.Bit, N%, 1) = "1" THEN
              MID$(T$, M%, 1) = "1"
           ELSE
              MID$(T$, M%, 1) = "0"
        END IF
        N% = N%  1
    NEXT
NEXT
SWAP e.Hei, e.Wid
e.Bit = T$
END SUB

SUB Turn.Right (e AS BlType)
'将方块向右旋转
DIM T AS STRING * 6
N% = 1
FOR i% = 1 TO e.Hei
    FOR J% = 1 TO e.Wid
        M% = J% * e.Hei - i%  1
        IF MID$(e.Bit, N%, 1) = "1" THEN
              MID$(T$, M%, 1) = "1"
           ELSE
              MID$(T$, M%, 1) = "0"
        END IF
        N% = N%  1
    NEXT
NEXT
SWAP e.Hei, e.Wid
e.Bit = T$
END SUB

SUB Up.Pset (X%, Y%)
    PSET (X%, Y%), 12
    PSET (X%, Y%  1), 6
    PSET (X%  1, Y%), 5
    PSET (X%  1, Y%  1), 0
END SUB

SUB XYClear
'判断当前方块填充后是否已满
    FOR Y% = Bly%  CurBl.Hei - 1 TO Bly% STEP -1  '只看当前方块高度
        N% = 0
        FOR X% = 0 TO Wid - 1
            IF Xy(X%, Y%) THEN N% = N%  1
        NEXT
        IF N% = Wid% THEN    '满了,清除并下移上面的方块           
            Works& = Works&  35
            M$ = LTRIM$(RTRIM$(STR$(Works&)))
            LINE (500, 360)-(550, 377), BackClr%, BF
            MyPrn 501, 361, M$, 13, BackClr%, 0
            MyPrn 500, 360, M$, 4, 0, 0
            IF Works& MOD 700 = 0 THEN
                 Fast% = Fast% - 1
                 M$ = LTRIM$(RTRIM$(STR$(10 - Fast%)))
                 LINE (500, 390)-(520, 407), BackClr%, BF
                 MyPrn 501, 391, M$, 13, BackClr%, 0
                 MyPrn 500, 390, M$, 4, 0, 0
            END IF
            IF Fast% = 0 THEN
            END IF
            FOR i% = Y% TO 1 STEP -1
                FOR J% = 0 TO Wid% - 1
                    Xy(J%, i%) = Xy(J%, i% - 1)
                    Rx% = J% * Pexx%  bordx%
                    Ry% = i% * Pexy%  Bordy%
                    IF Xy(J%, i%) THEN
                          PUT (Rx%, Ry%), BPic, PSET
                       ELSE
                          LINE (Rx%, Ry%)-(Rx%  15, Ry%  15), 0, BF
                    END IF
                NEXT
            NEXT
            Y% = Y%  1
        END IF
    NEXT
END SUB

SUB XYSet
'方块最后停在这个位置,把数据写到数组
    N% = 1
    FOR Y% = 0 TO CurBl.Hei - 1
        FOR X% = 0 TO CurBl.Wid - 1
            IF MID$(CurBl.Bit, N%, 1) = "1" THEN
                Xy(X%  Blx%, Y%  Bly%) = 1
            END IF
            N% = N%  1
        NEXT
    NEXT
END SUB
向他致谢

14 楼

QB71 编写
http://bbs.pfan.cn/post-60829.html

15 楼

计算软件
DECLARE SUB xdj (fw1!, fw2!)
DECLARE SUB yxgz ()
DECLARE SUB yx ()
CLS
DIM SHARED a$(4), a(9), fw1, fw2
 a$(1) = "+"
 a$(2) = "-"
 a$(3) = "*"
 a$(4) = "/"
 FOR i = 1 TO 9
   a(i) = i
 NEXT
PRINT "ji suan bi sai xian zai kai shi!!!"
PRINT "qing xuan ze deng ji:"
CALL xdj(fw1, fw2)
a: PRINT "qing xuan ze:"
PRINT "1 you xi gui ze"
PRINT "2 kai shi you xi"
PRINT "3 chong xuan deng ji"
INPUT "please input 1 or 2 or 3", n

IF n = 2 THEN CLS : CALL yxgz: CLS : GOTO a
IF n = 1 THEN CLS : CALL yx
IF n = 3 THEN CLS : CALL xdj(fw1, fw2)
PRINT "1 ji xu"
PRINT "2 jie shu"
INPUT "please input 1 or 2 "; n
IF n = 1 THEN CLS : GOTO a
IF n = 2 THEN END

SUB xdj (fw1, fw2)
 PRINT "* fei chang jian dan"
 PRINT "** jian dan"
 PRINT "*** zhong deng"
 PRINT "**** nan"
 PRINT "***** tiao zhan ji xian"
 INPUT "please input * or ** or *** or **** or *****", a$
 IF a$ = "*" THEN fw1 = 1: fw2 = 10
 IF a$ = "**" THEN fw1 = 11: fw2 = 100
 IF a$ = "***" THEN fw1 = 101: fw2 = 500
 IF a$ = "****" THEN fw1 = 501: fw2 = 1000
 IF a$ = "*****" THEN fw1 = 1001: fw2 = 10000
END SUB

SUB yx
RANDOMIZE TIMER
s = 0
FOR i = 1 TO 10
 DO
  a = INT(RND * (fw2 - fw1 + 1) + fw1)
  s$ = a$(INT(RND * 4) + 1)
  b = INT(RND * (fw2 - fw1 + 1) + fw1)
 LOOP UNTIL a MOD b = 0 AND a > b
 PRINT a; s$; b; "=";
 INPUT da
 IF s$ = "+" THEN zd = a + b
 IF s$ = "-" THEN zd = a - b
 IF s$ = "*" THEN zd = a * b
 IF s$ = "/" THEN zd = a / b
 IF da = zd THEN
  PRINT "yong are very good! +10"
  s = s + 10
 ELSE
  PRINT "da cuo le,bie hui xin,ji xu!"
 END IF
NEXT
PRINT s
SELECT CASE s
CASE 0
 PRINT "you are very silly!!!"
CASE 10 TO 20
 PRINT "wo hen shi wang!"
CASE 30 TO 60
 PRINT "bu ji ge ye!"
CASE 70 TO 90
 PRINT "ji xu jia you!ni li cheng gong bu yuan le!"
CASE 100
 PRINT "oh!you are very good!!i love you!!"
END SELECT
END SUB

SUB yxgz
PRINT "zhe shi yi ge si ze yun suan ji suan ruan jian,ke xuan deng ji,mei yi guan"
PRINT "shi ti,mei ti 10 fen,zong fen 100 fen."
END SUB

16 楼

迷宫:
CLS
SCREEN 1
DATA 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1
DATA 1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1
DATA 1,1,0,1,0,0,1,0,1,1,0,0,0,1,0,1,0,1
DATA 1,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1
DATA 1,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
x = 10
y = 9
CLS
a$ = STRING$(3, 219)
b$ = STRING$(3, 5)

DIM s(100), x(100), y(100), a(x, y), v(4, 2)
xe = 9
ye = 9
FOR i = 1 TO x
 FOR j = 1 TO y
  READ a(i, j)
  IF a(i, j) = 1 THEN LOCATE i, j * 3: PRINT a$
 NEXT
NEXT
FOR i = 1 TO 4
 FOR j = 1 TO 2
  READ v(i, j)
 NEXT
NEXT
DATA 0,1,1,0,0,-1,-1,0
LOCATE 12
PRINT "press any key to run"
d$ = INPUT$(1)
x = 2
y = 0
p = 0
x(p) = x
y(p) = y
i = 0
DO
 i = i + 1
 IF i <= 4 THEN
  x = x(p) + v(i, 1)
  y = y(p) + v(i, 2)
  IF a(x, y) = 0 THEN
   p = p + 1
   s(p) = i
   x(p) = x
   y(p) = y
   a(x, y) = 2
   i = 0
   GOSUB 10
  END IF
 ELSE
  GOSUB 10
  i = s(p)
  p = p - 1
 END IF
LOOP UNTIL p = 0 OR x = xe AND y = ye
IF p = 0 THEN
  PRINT "wu fa tong guo"
ELSE
LOCATE 14
PRINT "yun xing lu xian:"
PRINT "ru kou:---->"
PRINT 2; ","; 0; "---->";
FOR i = 1 TO p
 PRINT x(i); ","; "---->";
NEXT
PRINT
PRINT "---->chu kou"
END IF
END
10
LOCATE x(p), y(p) * 3
FOR k = 1 TO 30000
NEXT
IF i <= 4 THEN PRINT USING "##"; p ELSE PRINT b$
RETURN




17 楼

'***************************************************************************'
'**                                                                       **'
'**                     五    子    棋    游    戏                        **'
'**                                                                       **'
'***************************************************************************'

' 过程声明
DECLARE SUB Readme ()
DECLARE SUB Pause (P$)
DECLARE SUB OutInfo ()
DECLARE SUB GameOver ()
DECLARE SUB Initialize ()
DECLARE SUB MoveHand (F%)
DECLARE SUB DispWing (W%)
DECLARE SUB PlayTimes (T%)
DECLARE SUB CPTMoveHand ()
DECLARE SUB HelpForPlay ()
DECLARE SUB GetStepSize (X%)
DECLARE SUB DrawTable (Move%)
DECLARE SUB MidSet (T$, L%, C%)
DECLARE SUB PutBody (X%, Y%, B%)
DECLARE SUB DrawHand (X%, Y%, C%)
DECLARE SUB DrawComputer (X%, Y%, B%)
DECLARE SUB PutFullCircle (X%, Y%, R%, B%)
' 函数声明
DECLARE FUNCTION Wing% ()
DECLARE FUNCTION Welcome% ()
DECLARE FUNCTION PlayerGo% ()
DECLARE FUNCTION IntRand% (X%)
DECLARE FUNCTION GetSomeVar$ ()
DECLARE FUNCTION ScanTable% (BW%)
DECLARE FUNCTION BinToDec% (D$, X%)
DECLARE FUNCTION ComputerGo% (Boys%)
DECLARE FUNCTION ReadStr$ (X%, Y%, Lng%)
DECLARE FUNCTION GetFont$ (StX%, StY%, InX%, InY%)
DECLARE FUNCTION ScanLine% (S%(), SX%, SY%, IX%, IY%)

' 类型说明

DEFINT A-Z

TYPE MAP
    X AS INTEGER
    Y AS INTEGER
END TYPE

TYPE POWERTYPE
   Power    AS INTEGER
   Location AS STRING * 4
END TYPE

TYPE FONTTYPE
   Font AS STRING * 6
END TYPE

' 常量定义
CONST Null = 0                         '空值
CONST True = -1                        '逻辑真
CONST False = NOT True                 '逻辑假
CONST Black = -1                       '黑色
CONST White = 1                        '白色
CONST TableWidth = 420                 '棋盘宽度
CONST TableHeight = 310                '棋盘高度
CONST MAXX = 342                       '手光标最大移动宽度
CONST MAXY = 250                       '手光标最大移动高度
CONST Debug.X = 45                     '棋盘位置微调
CONST Debug.Y = 44                     '棋盘位置微调
CONST TzHand.X = 45                    '手光标位置微调
CONST TzHand.Y = 44                    '手光标位置微调
CONST TableColor = 3                   '棋盘颜色
CONST Forget = 20                      '悔棋次数
CONST Win$ = "c12nd10f6l5u4f3l2u1"     '小红旗

' 全局变量定义
DIM SHARED GroupPtr
DIM SHARED Before
DIM SHARED PlayName$(1)
DIM SHARED HandFont&(125)
DIM SHARED Grop(Forget * 2) AS MAP
DIM SHARED FootStep         AS MAP
DIM SHARED DirForm(7)       AS MAP
DIM SHARED HandLocation(1)  AS MAP
DIM SHARED Round            AS INTEGER
DIM SHARED Times            AS INTEGER
DIM SHARED Level(1)         AS INTEGER
DIM SHARED TableSize        AS INTEGER
DIM SHARED ErrorCode        AS INTEGER
DIM SHARED Table(X, X)      AS INTEGER
DIM SHARED PowerTab(31)     AS POWERTYPE

' 陷井设置
ON ERROR GOTO ErrorAddr             '错误处理陷井
ON TIMER(1) GOSUB DoClock           '时间处理陷井

Initialize

IF Welcome THEN PlayTimes Times

GameOver

SYSTEM

18 楼

接上
' 时间陷井
DoClock:
   D$ = " 日期:" + DATE$ + " 时间:" + TIME$
   L = LEN(D$): FOR I = 0 TO 80 \ L: D$ = D$ + D$: NEXT
   M = CSRLIN: N = POS(0): Message = Message MOD L + 2
   COLOR 2: LOCATE 24, 1
   PRINT MID$(D$, Message, 80);
   LOCATE M, N
RETURN

' 错误陷井
ErrorAddr:

   SELECT CASE ERR
   CASE 53
       VIEW PRINT 15 TO 25
       MidSet "┏━━━━━━━━━━━━━┓", 17, 15
       MidSet "┃说明文件 (README) 没有找到┃", 18, 15
       MidSet "┣━━━━━━━━━━━━━┫", 19, 15
       MidSet "┃    按 任 意 键 返 回     ┃", 20, 15
       MidSet "┗━━━━━━━━━━━━━┛", 21, 15
       BEEP: A$ = INPUT$(1): CLS 2
       ErrorCode = ERR: VIEW PRINT
       RESUME NEXT
   CASE 5, 6: RESUME NEXT
   END SELECT

   SCREEN 0, 0, 0, 0: LOCATE 1, 1
   PRINT "游戏发生了错误,错误号:"; STR$(ERR)
   PRINT "游戏异常结束。"
SYSTEM



19 楼

' 扫描方向数据
DirData:
'   ┌───┬───┬───┬───┬───┬───┬───┬───┐
'   │  上  │ 右上 │  右  │ 右下 │  下  │ 左下 │  左  │ 左上 │
'   ├─┬─┼─┬─┼─┬─┼─┬─┼─┬─┼─┬─┼─┬─┼─┬─┤
'   │X│Y│X│Y│X│Y│X│Y│X│Y│X│Y│X│Y│X│Y│
DATA   0, -1,  1, -1,  1,  0,  1,  1,  0,  1, -1,  1, -1,  0, -1, -1

' 棋谱数据
LeanData:
'   ┌─────┬─────┬─────┬─────┬─────┬─────┐
'   │○○○○○│○○○○●│○○○●○│○○○●●│○○●○○│○○●○●│
'   ├──┬──┼──┬──┼──┬──┼──┬──┼──┬──┼──┬──┤
'   │优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│
DATA     0, ""  ,    1, 0123,    1, 0124,    8,  012,    1, 0134,    8,  013
'   ┌─────┬─────┬─────┬─────┬─────┬─────┐
'   │○○●●○│○○●●●│○●○○○│○●○○●│○●○●○│○●○●●│
'   ├──┬──┼──┬──┼──┬──┼──┬──┼──┬──┼──┬──┤
'   │优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│
DATA     8,  014,   24,   01,    1, 0234,    8,  023,    8,  024,   24,   02
'   ┌─────┬─────┬─────┬─────┬─────┬─────┐
'   │○●●○○│○●●○●│○●●●○│○●●●●│●○○○○│●○○○●│
'   ├──┬──┼──┬──┼──┬──┼──┬──┼──┬──┼──┬──┤
'   │优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│
DATA     8,  034,   24,   03,   45,   04,  999,    0,    1, 1234,    9,  123
'   ┌─────┬─────┬─────┬─────┬─────┬─────┐
'   │●○○●○│●○○●●│●○●○○│●○●○●│●○●●○│●○●●●│
'   ├──┬──┼──┬──┼──┬──┼──┬──┼──┬──┼──┬──┤
'   │优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│
DATA     8,  124,   30,   12,    8,  134,   30,   13,   25,   14,  999,    1
'   ┌─────┬─────┬─────┬─────┬─────┬─────┐
'   │●●○○○│●●○○●│●●○●○│●●○●●│●●●○○│●●●○●│
'   ├──┬──┼──┬──┼──┬──┼──┬──┼──┬──┼──┬──┤
'   │优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│优先│位置│
DATA     8,  234,   30,   23,   25,   24,  999,    2,   24,   34,  999,    3
'   ┌─────┬─────┐
'   │●●●●○│●●●●●│
'   ├──┬──┼──┬──┤
'   │优先│位置│优先│位置│
DATA   999,    4,    0,   ""

SYSTEM

'
' 字符串转换为十进制整数
'
' D$: 字符串
' X:  转换方式
'     X = NULL 将字符串作为二进制数转换
'     X = 1 将字符串直接转换
'
FUNCTION BinToDec (D$, X)
   Ask = Null
   Length = LEN(D$) - 2
   SELECT CASE X
   CASE Null
       FOR I = 1 TO Length
          Ask = Ask + VAL(MID$(D$, I, 1)) * 2 ^ (Length - I)
       NEXT I
       BinToDec = Ask
   CASE 1: BinToDec = VAL(RIGHT$(D$, 2))
   END SELECT
END FUNCTION

'
' 电脑走棋
' 若有棋可走, 返回 True, 否则返回 False
'
FUNCTION ComputerGo (Boys)
   IF ScanTable(Boys) OR HandLocation(1).X = 0 OR HandLocation(1).Y = 0 THEN
      ComputerGo = False
   ELSE
      ComputerGo = True
   END IF
END FUNCTION

'
' 电脑移动手光标
'
SUB CPTMoveHand
    nx = SGN(HandLocation(1).X - HandLocation(0).X)
    ny = SGN(HandLocation(1).Y - HandLocation(0).Y)
    SX = TzHand.X + (HandLocation(0).X - 1) * FootStep.X
    SY = TzHand.Y + (HandLocation(0).Y - 1) * FootStep.Y
    TX = TzHand.X + (HandLocation(1).X - 1) * FootStep.X
    TY = TzHand.Y + (HandLocation(1).Y - 1) * FootStep.Y
    DO
      ox = SX: oy = SY
      IF SX <> TX THEN SX = SX + nx
      IF SY <> TY THEN SY = SY + ny
      PUT (ox, oy), HandFont&, XOR
      PUT (SX, SY), HandFont&, XOR
    LOOP UNTIL SX = TX AND SY = TY
    HandLocation(0).X = HandLocation(1).X
    HandLocation(0).Y = HandLocation(1).Y
END SUB

'
' 给获胜一方加一面小红旗
'
SUB DispWing (W)
   IX = 0: IY = 0
   X = 600: Y = 155
   FOR j = 565 TO X
      LINE (j - 1, Y)-STEP(8, 10), 1, BF
      PSET (j, Y), 12: DRAW Win$
      SOUND 150, .1
   NEXT
   IF W = Black THEN
      ex = 460 + ((Level(0) - 1) \ 5) * 10
      ey = 62 + ((Level(0) - 1) MOD 5) * 16
      IF ex < X THEN
         IX = -1
      ELSEIF ex > X THEN
         IX = 1
      END IF
      IY = -1
   ELSE
      ex = 460 + ((Level(1) - 1) \ 5) * 10
      ey = 186 + (4 - (Level(1) - 1) MOD 5) * 16
      IF ex < X THEN
         IX = -1
      ELSEIF ex > X THEN
         IX = 1
      END IF
      IY = 1
   END IF
   WHILE IX > 0 AND X <> ex
      LINE (X, Y)-STEP(9, 10), 1, BF
      X = X + IX
      PSET (X, Y), 12: DRAW Win$
      SOUND 150, .1
   WEND

20 楼

接上
   WHILE Y <> ey
      LINE (X, Y)-STEP(9, 10), 1, BF
      Y = Y + IY
      PSET (X, Y), 12: DRAW Win$
      SOUND 380 - Y, .1
   WEND
   WHILE X <> ex
      LINE (X, Y)-STEP(9, 10), 1, BF
      X = X + IX
      PSET (X, Y), 12: DRAW Win$
      SOUND 380 - Y, .1
   WEND
   IF PlayName$(SGN(W + 1)) = "" THEN A$ = INPUT$(1)
END SUB

'
' 画电脑
' X, Y: 位置
' B: 表情
'
SUB DrawComputer (X, Y, B)
LINE (X, Y)-STEP(35, 23), 7, BF
LINE (X + 5, Y + 4)-STEP(25, 15), 8, BF
LINE (X, Y)-STEP(35, 23), 15, B
DRAW "c15e4u15nh4d3c7br1r3d5g3u8"
PAINT (X + 37, Y + 15), 15: PAINT (X + 41, Y + 10), 7
LINE (X + 13, Y + 24)-STEP(14, 2), 0, BF
LINE (X - 7, Y + 27)-STEP(52, 6), 11, BF
DRAW "u9c11u6l6bl37bg3g5"
nx = X + 11: ny = Y + 10
SELECT CASE B
       CASE 1 '高兴的
           CIRCLE (nx, ny), 3, 15, 0, 3.14, .5
           CIRCLE (nx + 12, ny), 3, 15, 0, 3.14, .5
           CIRCLE (nx + 6, ny + 4), 4, 15, 3.14, 6.28, .4
       CASE 2 '哭泣的
           PSET (nx, ny), 15: DRAW "nm+2,-1m-2,+1"
           PSET (nx + 12, ny), 15: DRAW "nm-2,-1m+2,+1"
           CIRCLE (nx + 6, ny + 7), 4, 15, 0, 3.14, .4
       CASE 3 '生气的
           PSET (nx, ny), 15: DRAW "nm+2,+1m-2,-1"
           PSET (nx + 12, ny), 15: DRAW "nm-2,+1m+2,-1"
           CIRCLE (nx + 6, ny + 6), 4, 15, 0, 3.14, .4
       CASE 4 '惊讶的
           CIRCLE (nx, ny - 1), 3, 15
           CIRCLE (nx + 12, ny - 1), 3, 15
           CIRCLE (nx + 6, ny + 4), 3, 15, , , 1
       CASE 5 '闭左眼
           CIRCLE (nx, ny), 3, 15
           PSET (nx + 12, ny), 15: DRAW "r2l5"
           CIRCLE (nx + 6, ny + 5), 4, 15, 3.14, 6.28, .4
       CASE 6 '闭右眼
           PSET (nx, ny), 15: DRAW "r2l5"
           CIRCLE (nx + 12, ny), 3, 15
           CIRCLE (nx + 6, ny + 5), 4, 15, 3.14, 6.28, .4
       CASE 7 '闭双眼
           PSET (nx, ny), 15: DRAW "r2l5"
           PSET (nx + 12, ny), 15: DRAW "r2l5"
           PSET (nx + 6, ny + 6), 15: DRAW "r2l5"
END SELECT
END SUB

'
' 画手光标
'
SUB DrawHand (X, Y, C)
   LINE (X, Y)-STEP(35, 24), 0, BF
   PSET (X, Y + 1), C
   DRAW "e1r2f9h2u3r3f4h2u3r3f4h2u2r3f7d3f4m-11,+6h3l8h6u3e1nf1h7u1"
   GET (X, Y)-STEP(35, 24), HandFont&
   PAINT (X + 1, Y + 2), C
   PUT (X, Y), HandFont&, XOR
   GET (X, Y)-STEP(35, 24), HandFont&
END SUB

'
' 画棋盘
' Move: 如果 Move 为假, 则直接画棋盘
'
'

我来回复

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