【问题标题】:Raycaster engine error w/ read and def fn带有读取和定义 fn 的 Raycaster 引擎错误
【发布时间】:2019-03-01 05:34:06
【问题描述】:

程序运行时返回OUT OF DATA 到read nw

DIM vx1(15), vx2(20), vy1(20), vy2(20)
    DIM tx1(20), tz1(20), tx2(20), tz2(20), wc(20) AS INTEGER
    DIM w AS INTEGER
    DIM nw AS INTEGER
    READ nw
    FOR w = 1 TO nw: READ vx1(w), vy1(w), vx2(w), vy2(w), wc(w): NEXT

    vx1 = 70: vy1 = 20
    vx2 = 70: vy2 = 70

    px = 50
    py = 50
    angle = 0

而def fn 尚未实现

 SCREEN 0, 1, 0, 0: WIDTH 80, 25
    def fncross (x1, y1, x2, y2) = x1 * y2 - y1 * x2
    SUB intersect (x1, y1, x2, y2, x3, y3, x4, y4, x, y)
        x = fncross(x1, y1, x2, y2)
        y = fncross(x3, y3, x4, y4)
        det = fncross(x1 - x2, y1 - y2, x3 - x4, y3 - y4)
        x = fncross(x, x1 - x2, y, x3 - x4) / det
        y = fncross(x, y1 - y2, y, y3 - y4) / det
    END SUB

在这里调用相交

IF tz1 > 0 OR tz2 > 0 THEN

    CALL intersect(tx1, tx1, tx2, tz2, -0.0001, 0.0001, -20, 5, ix1, iz1)
    CALL intersect(tx1, tz1, tx2, tz2, 0.0001, 0.0001, 20, 5, ix2, iz2)
    IF tz1 <= 0 THEN IF iz1 > 0 THEN tx1 = ix1: tz1 = iz1 ELSE tx1 = tx2: tz1 = iz2
    IF tz2 <= 0 THEN IF iz1 > 0 THEN tx2 = ix1: tz2 = iz1 ELSE tx2 = ix2: tz2 = iz2

END IF

【问题讨论】:

    标签: qb64


    【解决方案1】:

    另外,根据你在QB中关于DEF FN的问题,以下是有效的:

    可以在 QB11、QB45、BC7 和 VBDOS 中声明单行函数:

    DEF FNcross (x1, y1, x2, y2) = x1 * y2 - y1 * x2
    PRINT FNcross(10, 20, 30, 40)
    

    但是,由于QB64不支持单线FN,请改用多线功能:

    PRINT FNcross(10, 20, 30, 40)
    FUNCTION FNcross (x1, y1, x2, y2)
        FNcross = x1 * y2 - y1 * x2
    END FUNCTION
    

    【讨论】:

    • 如果您发现我的任何答案有用,我们将不胜感激,让我保持兴趣:)
    • ive 试图将我的 def fn 更改为 funtion fn 但它返回 c++ 编译失败
    • 这不应该发生。您是否关闭了语法检查?
    • 我不知道怎么回事,所以我猜不是
    【解决方案2】:

    如何在 QB64 中使用 READ/DATA 函数:

    DIM nw AS INTEGER
    READ nw
    FOR w = 1 TO nw: READ vx1(w), vy1(w), vx2(w), vy2(w), wc(w): NEXT
    DATA 2
    DATA 1,2,3,4,5
    DATA 6,7,8,9,10
    

    【讨论】:

    • 您必须将 READ 与匹配的 DATA 值配对。
    • 我观看的视频(我找不到)没有显示数据集,但在我做了一些研究后,他确实有一个数据集但忘记在视频中显示,
    • 你应该在提问之前调试某些结构。
    【解决方案3】:

    据我所知,要获得实际的 C++ 编译错误,请在批处理文件中使用:

    @echo off 
    ECHO. 
    ECHO Diagnosing Latest Compilation Error 
    ECHO. 
    ECHO Please wait...     
    ECHO. cd .\internal\c
    .\bin\g -w -Wall -I.\i -I..\..\ -L.\l qbx.cpp libqbx.o -mwindows   .\i686-w64-mingw32\lib\libimm32.a -lwinspool -lmingw32 -ln -lmix -limg -lttf -lmn   -lSDL -s -o ..\..\ >..\..\0utput64.txt 2>&1 
    cd ..\.. 
    ECHO. 
    ECHO 0utput64.txt created! 
    ECHO. PAUSE
    

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2018-02-17
      • 2014-01-03
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多