主题:[讨论]游戏王国
三国风云
[专家分:140] 发布于 2009-06-29 14:07:00
谁有游戏都加分
回复列表 (共31个回复)
11 楼
1054122 [专家分:750] 发布于 2009-07-10 16:18:00
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 楼
1054122 [专家分:750] 发布于 2009-07-10 16:19:00
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 楼
1054122 [专家分:750] 发布于 2009-07-10 16:19:00
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 楼
1054122 [专家分:750] 发布于 2009-07-10 16:20:00
QB71 编写
http://bbs.pfan.cn/post-60829.html
15 楼
我爱qbasic [专家分:160] 发布于 2009-07-13 18:58:00
计算软件
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 楼
我爱qbasic [专家分:160] 发布于 2009-07-13 19:00:00
迷宫:
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 楼
我爱qbasic [专家分:160] 发布于 2009-07-13 19:02:00
'***************************************************************************'
'** **'
'** 五 子 棋 游 戏 **'
'** **'
'***************************************************************************'
' 过程声明
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 楼
我爱qbasic [专家分:160] 发布于 2009-07-13 19:02:00
接上
' 时间陷井
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 楼
我爱qbasic [专家分:160] 发布于 2009-07-13 19:03:00
' 扫描方向数据
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 楼
我爱qbasic [专家分:160] 发布于 2009-07-13 19:05:00
接上
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 为假, 则直接画棋盘
'
'
我来回复