1
votes

Erreur du moteur Raycaster avec lecture et def fn

lorsque le programme s'exécute, il renvoie OUT OF DATA à read nw

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

et def fn n'est pas encore implémenté

 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

et intersect est appelé ici

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


0 commentaires

3 Réponses :


0
votes

Comment utiliser les fonctions READ / DATA dans QB64:

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


3 commentaires

Vous devez associer READ aux valeurs DATA correspondantes.


la vidéo que j'ai regardée (que je ne trouve pas) ne montre pas l'ensemble de données, mais après avoir fait quelques recherches, il avait un ensemble de données mais a oublié de le montrer dans la vidéo,


Vous devez déboguer certaines structures avant de poser des questions.



1
votes

De plus, selon votre question sur DEF FN dans QB, ce qui suit est valide:

Une fonction sur une seule ligne peut être déclarée dans QB11, QB45, BC7 et VBDOS:

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


4 commentaires

Si vous trouvez l'une de mes réponses utile, un vote positif serait apprécié pour me garder intéressé :)


J'ai essayé de changer ma def fn en fonction fn mais elle revient avec la compilation c ++ a échoué


Cela ne devrait pas arriver. La vérification de la syntaxe est-elle désactivée?


je ne sais pas comment donc je suppose que non



0
votes

Pour autant que je sache, pour obtenir l'erreur de compilation C ++, utilisez ceci dans un fichier batch:

@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


0 commentaires