主题:求用QB做的贪吃蛇程序(详细过程)
我爱QB
[专家分:200] 发布于 2008-02-06 00:09:00
我找来找去就是没有用QB做的贪吃蛇程序,求求大家了![em1][em2][em6][em18][em10][em53][em21]
回复列表 (共23个回复)
11 楼
强强 [专家分:4740] 发布于 2008-02-08 10:39:00
不是在论坛里找,而是在存档旧帖里找,现在谁还写贪吃蛇了
12 楼
我爱QB [专家分:200] 发布于 2008-02-08 16:30:00
请问旧帖在哪?????????????
13 楼
人才锐锐 [专家分:260] 发布于 2008-02-09 14:04:00
是授人以鱼不如授人以渔。。。
14 楼
强强 [专家分:4740] 发布于 2008-02-09 20:44:00
你以为冷石不知道这句话吗?哈哈哈哈
15 楼
我是大喊三 [专家分:3010] 发布于 2008-02-11 21:49:00
好象我没怎么玩过贪吃蛇,于是找网上的一些玩了一下,对照这些实例程序,我想了一下,觉得要实现的话也并不太简单啊,呵呵。
16 楼
moz [专家分:37620] 发布于 2008-02-11 22:24:00
如果需要边框,先初始化边框,(随便用个什么图形圈一圈就是了,以后要美观的时候再改就是了)
再想想用什么来做蛇,(随便用个什么图形吧)
然后用什么来标记蛇,大多数人会用数组,如果是我会用字符串.
先想一想布局用什么来处理,
怎样检测下一个点是否合法,
是不是蛇身? - 落败结束
是不是墙壁? - 落败结束
是不是食物? - 如果有食物的话,怎样吃,吃完后是不是加长蛇头.
以上都不是: 把蛇尾清除,放到蛇头去.(怎样实现?)
是否有键缓冲: - 上下左右? - 用什么来标志方向? 修改方向.
暂停?结束?从头开始?
是否需要设置速度越来越快?
我倒是有兴趣做做,但又怕大家说我喂鱼.
17 楼
我是大喊三 [专家分:3010] 发布于 2008-02-11 22:59:00
做一个框架出来嘛,呵呵。
18 楼
强强 [专家分:4740] 发布于 2008-02-12 21:26:00
MOZ你不用做了,你做的一定相当出色,我们大家都知道了
19 楼
lyz_96 [专家分:140] 发布于 2008-03-27 20:42:00
准确的程序还是没有耶!
20 楼
wzc1996 [专家分:1680] 发布于 2008-03-28 14:41:00
CONST snakespeed = 150, maxlenth = 200
DECLARE SUB food ()
DECLARE SUB judge ()
DECLARE SUB changearry ()
DECLARE SUB movesnake (x$)
DECLARE SUB showsnake ()
DECLARE SUB initiate ()
SCREEN 12
TYPE snaketype
x AS INTEGER
y AS INTEGER
isbody AS INTEGER
END TYPE
DIM SHARED snake(maxlenth) AS snaketype, snakelenth, foodx, foody, havefood
LINE (0, 0)-(639, 460), 3, B
CALL initiate
DO
CALL showsnake
DO
LOCATE 1, 1
PRINT "."
xx$ = INKEY$
i = i + 1
LOOP UNTIL xx$ <> "" OR i > snakespeed
i = 0
IF xx$ <> "" THEN x$ = xx$
IF x$ = "t" THEN
END
END IF
CALL movesnake(x$)
CALL judge
CALL food
IF snakelenth = maxlenth THEN
CLS
LOCATE 10, 30
PRINT "GOOD JOB!"
LOCATE 12, 30
PRINT "CONGRATULATIONS!!!"
END
END IF
LOOP
SUB changearry
FOR i = maxlenth TO 2 STEP -1
snake(i).x = snake(i - 1).x
snake(i).y = snake(i - 1).y
NEXT i
END SUB
SUB food
RANDOMIZE TIMER
IF havefood = 0 THEN
foodx = INT(RND * 63) + 1: foody = INT(RND * 45) + 1
havefood = 1
END IF
IF snake(1).x = foodx AND snake(1).y = foody THEN
havefood = 0
snakelenth = snakelenth + 1
snake(snakelenth).isbody = 1
END IF
CIRCLE (foodx * 10, foody * 10), 4, 5
END SUB
SUB initiate
snakelenth = 3
snake(1).x = 10: snake(1).y = 10: snake(1).isbody = 1
snake(2).x = 9: snake(2).y = 10: snake(2).isbody = 1
snake(3).x = 8: snake(3).y = 10: snake(3).isbody = 1
END SUB
SUB judge
IF snake(1).x = 0 OR snake(1).y = 0 OR snake(1).x = 64 OR snake(1).y = 46 THEN
END
END IF
FOR i = 2 TO snakelenth
IF snake(1).x = snake(i).x AND snake(1).y = snake(i).y AND snake(i).isbody = 1 THEN
END
END IF
NEXT i
END SUB
SUB movesnake(x$)
IF x$ = "w" THEN
CALL changearry
snake(1).y = snake(1).y - 1
ELSEIF x$ = "s" THEN
CALL changearry
snake(1).y = snake(1).y + 1
ELSEIF x$ = "a" THEN
CALL changearry
snake(1).x = snake(1).x - 1
ELSEIF x$ = "d" THEN
CALL changearry
snake(1).x = snake(1).x + 1
END IF
END SUB
SUB showsnake
FOR i = 1 TO maxlenth
IF snake(i).isbody = 1 THEN
CIRCLE (snake(i).x * 10, snake(i).y * 10), 4, 3
END IF
NEXT i
CIRCLE (snake(snakelenth + 1).x * 10, snake(snakelenth + 1).y * 10), 4, 0
END SUB
强强编的
我来回复