回 帖 发 新 帖 刷新版面

主题:谁能发一个射击类的游戏给我?

谁能发一个射击类的游戏给我?

回复列表 (共4个回复)

沙发

我有一个
[url]http://www.programfan.com/club/showbbs.asp?id=61986[/url]
注 :二楼的程序

板凳

DECLARE SUB good (ok2%)
DECLARE SUB wu ()
DECLARE SUB dr ()
DECLARE SUB fd (ao%)
DECLARE SUB xm (ok2%)
DECLARE SUB ke (key$)
DECLARE SUB dr2 ()
SCREEN 12
PAINT (1, 1), 1
CIRCLE (80, 100), 45, 14
PAINT (55, 77), 14
FOR v = 1 TO 500
clr = INT(RND * 16)
x = INT(RND * 640)
y = INT(RND * 480)
PSET (x, y), clr: NEXT
CIRCLE (320, 420), 27, 4, , , 1 / 2
PAINT (320, 420), 4
CIRCLE (320, 415), 13, 9, , , 2 / 3
PAINT (320, 415), 9
CIRCLE (320, 415), 3, 5
PAINT (320, 415), 5
LOCATE 23, 27
PRINT "press any key to start"
DO: k$ = INKEY$: LOOP UNTIL k$ <> ""
CIRCLE (80, 100), 45, 1
PAINT (55, 77), 1
LINE (200, 300)-(500, 380), 1, BF
DIM SHARED ok%, dl%, p1%, p2%, jian%, top!
ok% = 320
DO
IF dl% <= 8 THEN dl% = dl% + 1:  ELSE dl% = dl% - 1
IF top! = 500 THEN
FOR v = 1 TO 500
clr = INT(RND * 16)
x = INT(RND * 640)
y = INT(RND * 480)
PSET (x, y), clr: NEXT
END IF
jian% = 0
CALL dr
LOOP

SUB dr
p1% = INT(RND * 561 + 40): p2% = 1
DO
CIRCLE (p1%, p2% + 9), 5, 0, , , 3 / 5
PAINT (p1%, p2% + 9), 0
ttt! = TIMER: DO: tt! = TIMER - ttt!: LOOP UNTIL tt! > .03
key$ = INKEY$: IF key$ <> "" THEN CALL ke(key$)
IF jian% = 1 THEN EXIT SUB
CIRCLE (p1%, p2% + 9), 5, 1, , , 3 / 5
PAINT (p1%, p2% + 9), 1
p2% = p2% + dl%
IF p2% > 380 THEN CALL wu: EXIT SUB
LOOP
END SUB

SUB dr2
CIRCLE (p1%, p2% + 9), 5, 1, , , 3 / 5
PAINT (p1%, p2% + 9), 1
p2% = p2% + dl%
IF p2% > 380 THEN CALL wu: EXIT SUB
CIRCLE (p1%, p2% + 9), 5, 0, , , 3 / 5
PAINT (p1%, p2% + 9), 0
END SUB

SUB fd (ao%)
IF ao% = -20 AND ok% <= 40 THEN EXIT SUB
IF ao% = 20 AND ok% >= 600 THEN EXIT SUB
CIRCLE (ok%, 420), 27, 1, , , 1 / 2
PAINT (ok%, 420), 1
ok3% = ok%
ok% = ok% + ao%
IF ao% < 0 THEN s% = -5 ELSE s% = 5
FOR i% = 1 TO 4
j% = s% + j%
CIRCLE (ok3% + j%, 420), 27, 4, , , 1 / 2
PAINT (ok3% + j%, 420), 4
CIRCLE (ok3% + j%, 415), 13, 9, , , 2 / 3
PAINT (ok3% + j%, 415), 9
CIRCLE (ok3% + j%, 415), 3, 5
PAINT (ok3% + j%, 415), 5
CIRCLE (ok3% + j%, 420), 27, 1, , , 1 / 2
PAINT (ok3% + j%, 420), 1
NEXT i%
CIRCLE (ok3% + j%, 420), 27, 4, , , 1 / 2
PAINT (ok3% + j%, 420), 4
CIRCLE (ok3% + j%, 415), 13, 9, , , 2 / 3
PAINT (ok3% + j%, 415), 9
CIRCLE (ok3% + j%, 415), 3, 5
PAINT (ok3% + j%, 415), 5
END SUB

SUB good (ok2%)
LINE (ok2% - 1, 400)-(ok2% + 1, 0), 1, BF
CIRCLE (p1% + 9, p2% + 9), 20, 4
PAINT (p1% + 9, p2% + 9), 4
tt! = TIMER: DO: ttt! = TIMER - tt!: LOOP UNTIL ttt! > .5
CIRCLE (p1% + 9, p2% + 9), 20, 1
PAINT (p1% + 9, p2% + 9), 1
top! = top! + 1
LOCATE 28, 1
PRINT top!
jian% = 1
END SUB

SUB ke (key$)
SELECT CASE key$
CASE CHR$(0) + CHR$(75)
ao% = -20: CALL fd(ao%)
CASE " "
ok0% = ok%: CALL xm(ok0%)
CASE CHR$(0) + CHR$(77)
ao% = 20: CALL fd(ao%)
CASE CHR$(27)
CALL wu
END SELECT
END SUB

SUB wu
LINE (1, 395)-(639, 450), 4, BF
DO: LOOP UNTIL INKEY$ <> ""
SCREEN 13
DO
LOCATE 10, 10
IF i% = 15 THEN i% = i% - 14 ELSE i% = i% + 1
COLOR i%
PRINT "Your score is"; top!
PRINT TAB(2); "Thanks to my teacher Zhou Qing!"
PRINT TAB(10); "IGDX V1.0"
PRINT TAB(10); "Wang Long"
PRINT TAB(10); "2005-4-7"
tt! = TIMER: DO: ttt% = TIMER - tt!: LOOP UNTIL ttt% > .8
CLS
IF INKEY$ <> "" THEN END
LOOP
END SUB

SUB xm (ok2%)
d% = 5: p% = 0
DO
LINE (ok2% - 1, 400)-(ok2% + 1, 400 - d%), 14, BF
IF (400 - d% - p2% + 9 <= 5) AND (p1% - ok2% >= -15 AND p1% - ok2% <= 15) THEN
CALL good(ok2%): EXIT SUB
END IF
p% = p% + 1
d% = d% + 5
IF p% MOD 30 = 0 THEN CALL dr2
LOOP UNTIL d% >= 401
LINE (ok2% - 1, 400)-(ok2% + 1, 0), 1, BF
END SUB

3 楼

谢谢!

4 楼

我也淘到一题:
DECLARE SUB zidan ()
DECLARE SUB mubiao ()
DECLARE SUB lose ()
DECLARE SUB win ()
DIM SHARED room(0 TO 24, 0 TO 15) AS INTEGER
DIM SHARED state(127) AS INTEGER
DIM SHARED score AS INTEGER, x0 AS INTEGER

gun = 7: x0 = 20
RANDOMIZE TIMER
VIEW PRINT 1 TO 25: CLS    '初始化边界
LOCATE 1, x0 + 1: PRINT CHR$(201); STRING$(30, 205); CHR$(187)
FOR i = 2 TO 24
  LOCATE i, x0 + 1: PRINT CHR$(186); SPC(30); CHR$(186)
NEXT i
DEF SEG = &HB800
POKE 24 * 160 + 2 * x0, 200
FOR j = 2 TO 60 STEP 2
  POKE 24 * 160 + 2 * x0 + j, 205
NEXT j
POKE 24 * 160 + 2 * x0 + 62, 188

COLOR 9
LOCATE 24, x0 + 2 * gun: PRINT "[]"

DO
   CALL mubiao           '目标下移
   FOR j = 1 TO 15
     IF room(0, j) = 24 THEN
       CALL lose
     END IF
   NEXT j
   mubiaotime = TIMER + 1.5
   DO
     zidantime = TIMER + .01
     DO
       keyin = INP(&H60)
       IF keyin < 128 THEN
         state(keyin) = 1
       ELSE
         state(keyin - 128) = 0
       END IF
     LOOP UNTIL TIMER > zidantime OR INKEY$ <> ""

     COLOR 9
     IF state(75) THEN  '按键 左
       LOCATE 24, x0 + 2 * gun: PRINT "  "
       gun = gun - 1: IF gun = 0 THEN gun = 1
       LOCATE 24, x0 + 2 * gun: PRINT "[]"
     END IF
     IF state(77) THEN  '按键 右
       LOCATE 24, x0 + 2 * gun: PRINT "  "
       gun = gun + 1: IF gun = 16 THEN gun = 15
       LOCATE 24, x0 + 2 * gun: PRINT "[]"
     END IF
     IF state(57) THEN  '按键 空格
       room(24, 0) = gun
     END IF
     IF state(28) THEN  '按键 回车
       DO WHILE INKEY$ = ""
       LOOP
     END IF
     IF state(1) THEN   '按键 ESC
       COLOR 7
       END
     END IF
     CALL zidan
  LOOP UNTIL TIMER > mubiaotime
LOOP

SUB lose
  LOCATE 23, 1: PRINT "Lose"
  END
END SUB

SUB mubiao
COLOR 10
FOR j = 1 TO 15     '产生目标
   room(1, j) = 1: room(0, j) = room(0, j) + 1
NEXT j
FOR k = 1 TO 5
   r = INT(RND * 15 + 1)
   room(1, r) = 0
NEXT k

FOR i = 23 TO 2 STEP -1  '下移目标
   FOR j = 1 TO 15
     room(i, j) = room(i - 1, j)
     IF room(i, j) = 1 THEN cc$ = "[]" ELSE cc$ = "  "
     LOCATE i, x0 + 2 * j: PRINT cc$
   NEXT j
NEXT i
END SUB

SUB win
  LOCATE 23, 1: PRINT "Win"
  END
END SUB

SUB zidan
COLOR 12
FOR i = 2 TO 23
   IF room(i, 0) THEN   '清除显示的子弹 (预备上移)
      LOCATE i, x0 + 2 * room(i, 0): PRINT "  "
   END IF
   room(i, 0) = room(i + 1, 0)
NEXT i

FOR i = 2 TO 23
   IF room(i, 0) THEN   '显示子弹 (已上移)
     IF room(i, room(i, 0)) = 0 THEN
       LOCATE i, x0 + 2 * room(i, 0): PRINT "[]"
     ELSE
       LOCATE i, x0 + 2 * room(i, 0): PRINT "  "
       room(i, room(i, 0)) = 0
       room(i, 0) = 0
       score = score + 1  '击中目标分数增一
       LOCATE 1, x0 + 2 * 5: PRINT "SCORE:"; score
       IF score = 200 THEN win
     END IF
   END IF
NEXT i

room(24, 0) = 0
END SUB

我来回复

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