回 帖 发 新 帖 刷新版面

主题:那为大哥会做炮弹问题 啊回的话就请给我个真确的答案再次谢谢了!

[em2]
我听老师说了炮弹问题比较难
我自己看了一下
的确如此
不会做
请那位大哥指教指教

回复列表 (共1个回复)

沙发

程序只是一个初步的方案,没有做太多的修饰。
若你有时间 也可以润色一下

CONST LEFT = -10, RIGHT = 10, TOP = 10, BUTTOM = -10
CONST PI = 3.14159, TODEG = 180 / PI

REM 画出背景坐标
SCREEN 12
VIEW (50, 50)-(450, 450), , 12
WINDOW (LEFT, BUTTOM)-(RIGHT, TOP)
COLOR 8
LINE (LEFT, 0)-(RIGHT, 0)
LINE (0, TOP)-(0, BUTTOM)
FOR i = LEFT TO RIGHT
  PSET (i, 0): DRAW "u5"
NEXT i
FOR i = BUTTOM TO TOP
  PSET (0, i): DRAW "r5"
NEXT i

REM 游戏开始
COLOR 12
LOCATE 2, 20: PRINT "Press any key to START!"
DO
  key$ = INKEY$
LOOP UNTIL key$ <> ""
LOCATE 2, 20: PRINT "Make fan of youself ^o^"
tim = TIMER + 1
WHILE TIMER < tim: WEND

REM 动画效果
FOR x = LEFT TO RIGHT STEP .1
  y = -x ^ 2 + 7      '运动轨迹方程
  IF BUTTOM < y AND y < TOP THEN
    jiao = INT(ATN(-2 * x) * TODEG) MOD 360

    PSET (x, y), 10    '画炮弹
    DRAW "ta" + STR$(jiao) + "c7nl10r10nh3g3ta0"
   
    tim = TIMER + .05  '延时
    WHILE TIMER < tim
      key$ = INKEY$
      IF key$ <> "" THEN EXIT FOR
    WEND

    PSET (x, y), 10    '擦炮弹
    DRAW "ta" + STR$(jiao) + "c0nl10r10nh3g3ta0"
  END IF
NEXT x
END

程序说明
y = f(x)      '运动轨迹方程
jiao = INT(ATN(f'(x)) * TODEG) MOD 360
f'(x)为f(x)的导函数

比如 f(x) = 5 * sin(x) , f'(x) = 5 * cos(x)
又比如 f(x) = 5 * cos(x) , f'(x) = -5 * sin(x)
替换到程序中就可以看到效果了

我来回复

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