From f3fa5161ca903f5aecac862ee8d505b81ab7f0ec Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Tue, 10 Sep 2024 00:39:38 +0300 Subject: [PATCH] Using AI to improve code readability --- .../KHK Intellektika 2004 demo/khkdemo5.BAS | 220 +++++------ Math/3D graph/3dgraph.bas | 366 +++++++++--------- 2 files changed, 280 insertions(+), 306 deletions(-) diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS index 8f8b250..f9aba8f 100755 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS +++ b/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS @@ -1,15 +1,19 @@ -' 3D Maze explorer -' made by Svjatoslav Agejenko -' in 2003.12 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslav@svjatoslav.eu - -DECLARE SUB startext () +' Render animated 3D maze. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2002, Initial version +' 2024.09, Improved program readability using AI + + +DECLARE SUB startText () DECLARE SUB control () -DECLARE SUB putbyte (addr!, dat!) -DECLARE SUB putword (addr!, dat!) -DECLARE FUNCTION getword! (addr!) -DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB putByte (addr!, dat!) +DECLARE SUB putWord (addr!, dat!) +DECLARE FUNCTION getWord& (addr!) +DECLARE FUNCTION getByte& (addr!) DECLARE SUB start () DECLARE SUB animate () @@ -42,7 +46,6 @@ np = 0 start - cx = 0 cy = 0 cz = 0 @@ -52,6 +55,7 @@ px(1) = 0 py(1) = 0 pz(1) = 0 +' Main loop 1 frm = frm + 1 myx = SIN(frm / 30) * 100 @@ -60,35 +64,29 @@ myy = SIN(frm / 300) an1 = SIN(frm / 60) an2 = SIN(frm / 36) / 3 - np = np + 1 px(np) = cx py(np) = cy pz(np) = cz - - nl = nl + 1 l1(nl) = np l2(nl) = np - 1 lc(nl) = INT(RND * 15) + 1 -'lc(nl) = ABS(cx / 20) - - +' lc(nl) = ABS(cx / 20) va = INT(RND * 3) SELECT CASE va CASE 0 - cx = RND * 500 - 250 + cx = RND * 500 - 250 CASE 1 - cy = RND * 100 - 50 + cy = RND * 100 - 50 CASE 2 - cz = RND * 500 - 250 + cz = RND * 500 - 250 END SELECT - -'control +' control animate PCOPY 0, 1 @@ -96,13 +94,13 @@ CLS IF frm > 1200 THEN GOTO 200 GOTO 1 + 200 CHAIN "khkdemo6.bas" SUB animate - s1 = SIN(an1) s2 = SIN(an2) s3 = SIN(an3) @@ -111,79 +109,72 @@ c1 = COS(an1) c2 = COS(an2) c3 = COS(an3) - - +' Rotate and project points FOR a = 1 TO np - x = px(a) - myx - y = py(a) - myy - z = pz(a) - myz - - - x1 = x * c1 + z * s1 - z1 = z * c1 - x * s1 - - y1 = y * c2 + z1 * s2 - z2 = z1 * c2 - y * s2 - - -' z2 = z2 + 10 - - IF z2 > 3 THEN - rpe(a) = 1 - rpx(a) = x1 / z2 * 130 + 160 - rpy(a) = y1 / z2 * 130 + 100 - ELSE - rpe(a) = 0 - END IF - + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + ' First rotation around Y axis + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + ' Second rotation around X axis + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + ' Check if point is behind the viewer + IF z2 > 3 THEN + rpe(a) = 1 + rpx(a) = x1 / z2 * 130 + 160 + rpy(a) = y1 / z2 * 130 + 100 + ELSE + rpe(a) = 0 + END IF NEXT a - +' Draw lines between visible points FOR a = 1 TO nl - p1 = l1(a) - p2 = l2(a) - IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) + p1 = l1(a) + p2 = l2(a) + IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) NEXT a - END SUB SUB control - -IF getbyte(8) <> 0 THEN - putbyte 8, 0 - xp = getword(2) - putword 2, 0 - yp = getword(4) - putword 4, 0 - butt = getword(6) - putword 6, 0 - buttL = 0 - buttR = 0 - IF butt = 1 THEN buttL = 1 - IF butt = 2 THEN buttR = 1 - IF butt = 3 THEN buttL = 1: buttR = 1 - - - IF buttR = 1 THEN - IF buttL = 1 THEN - myxs = myxs + SIN(an1) * yp / 4 - myzs = myzs - COS(an1) * yp / 4 - GOTO 3 +IF getByte(8) <> 0 THEN + putByte 8, 0 + xp = getWord(2) + putWord 2, 0 + yp = getWord(4) + putWord 4, 0 + butt = getWord(6) + putWord 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + ' Handle mouse movement + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 + 3 + yp = 0 END IF - myys = myys + yp / 4 -3 - yp = 0 - END IF END IF - - - +' Limit movement to maxmove IF xp < -maxmove THEN xp = -maxmove IF xp > maxmove THEN xp = maxmove an1 = an1 - xp / 150 @@ -192,10 +183,9 @@ IF yp < -maxmove THEN yp = -maxmove IF yp > maxmove THEN yp = maxmove an2 = an2 - yp / 150 - - a$ = INKEY$ +' Handle keyboard input IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) @@ -212,46 +202,42 @@ myy = myy + myys END SUB -FUNCTION getbyte (addr) -getbyte = PEEK(extADDR + addr) +FUNCTION getByte (addr) + getByte = PEEK(extADDR + addr) END FUNCTION -FUNCTION getword (addr) -a = PEEK(extADDR + addr) -b = PEEK(extADDR + addr + 1) - +FUNCTION getWord& (addr) + a = PEEK(extADDR + addr) + b = PEEK(extADDR + addr + 1) -c$ = HEX$(a) -IF LEN(c$) = 1 THEN c$ = "0" + c$ -IF LEN(c$) = 0 THEN c$ = "00" + c$ = HEX$(a) + IF LEN(c$) = 1 THEN c$ = "0" + c$ + IF LEN(c$) = 0 THEN c$ = "00" + c = VAL("&H" + HEX$(b) + c$) -c = VAL("&H" + HEX$(b) + c$) - -getword = c + getWord = c END FUNCTION -SUB mousedemo - - +SUB mouseDemo cx = 150 cy = 100 maxmove = 50 + +' Main loop 100 frm = frm + 1 - LOCATE 1, 1 PRINT cx, cy PRINT frm CIRCLE (cx, cy), 10, 0 -xp = getword(2) -putword 2, 0 -yp = getword(4) -putword 4, 0 - +xp = getWord(2) +putWord 2, 0 +yp = getWord(4) +putWord 4, 0 IF xp < -maxmove THEN xp = -maxmove IF xp > maxmove THEN xp = maxmove @@ -261,23 +247,18 @@ IF yp < -maxmove THEN yp = -maxmove IF yp > maxmove THEN yp = maxmove cy = cy + yp - CIRCLE (cx, cy), 10, 10 - - SOUND 0, .05 GOTO 100 - END SUB -SUB putbyte (addr, dat) - -POKE (extADDR + addr), dat +SUB putByte (addr, dat) + POKE (extADDR + addr), dat END SUB -SUB putword (addr, dat) +SUB putWord (addr, dat) b$ = HEX$(dat) @@ -287,15 +268,13 @@ IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 n1 = VAL("&H" + LEFT$(b$, 2)) n2 = VAL("&H" + RIGHT$(b$, 2)) - POKE (extADDR + addr), n2 POKE (extADDR + addr + 1), n1 END SUB SUB start -' startext - + ' startext SCREEN 7, , , 1 @@ -303,7 +282,7 @@ maxmove = 50 END SUB -SUB startext +SUB startText DEF SEG = 0 ' read first from interrupt table @@ -319,11 +298,10 @@ PRINT "relative address is:"; extADDR DEF SEG = extSEG -IF getword(0) <> 1983 THEN - PRINT "FATAL ERROR: you must load" - PRINT "QBasic extension TSR first!" - SYSTEM +IF getWord(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM END IF END SUB - diff --git a/Math/3D graph/3dgraph.bas b/Math/3D graph/3dgraph.bas index bfb4074..a1645a6 100644 --- a/Math/3D graph/3dgraph.bas +++ b/Math/3D graph/3dgraph.bas @@ -1,12 +1,12 @@ -CHDIR ".\qbasicapps\math\3D graph\" +' 3D heightmap explorer. Allows to visualize heightmap for arbitrary formula. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2002, Initial version +' 2024.09, Improved program readability using AI - -' 3D formula explorer -' made by Svjatoslav Agejenko -' in 2002 -' homepage: svjatoslav.eu -' email: svjatoslav@svjatoslav.eu - ' use: ' cursor keys - move around ' - - fly up @@ -18,7 +18,6 @@ CHDIR ".\qbasicapps\math\3D graph\" ' result, indicating height. "tm" variable counts ' frames. Use it in your formula to make graph moving in time. - DECLARE SUB valem (x!, y!, z!) DECLARE SUB graaf () DECLARE SUB mkgr3 (x1!, y1!, z1!) @@ -60,191 +59,189 @@ PRINT "Kuskil programmis l�ks mingi arv �le lubatud piiride!!!" RESUME SUB getcor -c = 12 + c = 12 -mkgr -500, 0, 0 -mkgr2 0, 0, 500 -mkgr3 0, -500, 0 + mkgr -500, 0, 0 + mkgr2 0, 0, 500 + mkgr3 0, -500, 0 -xn(nump + 1) = 0 -yn(nump + 1) = -500 -zn(nump + 1) = 0 + xn(nump + 1) = 0 + yn(nump + 1) = -500 + zn(nump + 1) = 0 -xn(nump + 2) = 0 -yn(nump + 2) = 500 -zn(nump + 2) = 0 + xn(nump + 2) = 0 + yn(nump + 2) = 500 + zn(nump + 2) = 0 -xn(nump + 3) = -500 -yn(nump + 3) = 0 -zn(nump + 3) = 0 + xn(nump + 3) = -500 + yn(nump + 3) = 0 + zn(nump + 3) = 0 -xn(nump + 4) = 500 -yn(nump + 4) = 0 -zn(nump + 4) = 0 + xn(nump + 4) = 500 + yn(nump + 4) = 0 + zn(nump + 4) = 0 -xn(nump + 5) = 0 -yn(nump + 5) = 0 -zn(nump + 5) = -500 + xn(nump + 5) = 0 + yn(nump + 5) = 0 + zn(nump + 5) = -500 -xn(nump + 6) = 0 -yn(nump + 6) = 0 -zn(nump + 6) = 500 + xn(nump + 6) = 0 + yn(nump + 6) = 0 + zn(nump + 6) = 500 -point1(numl + 1) = nump + 1 -point2(numl + 1) = nump + 2 -col(numl + 1) = c + point1(numl + 1) = nump + 1 + point2(numl + 1) = nump + 2 + col(numl + 1) = c -point1(numl + 2) = nump + 3 -point2(numl + 2) = nump + 4 -col(numl + 2) = c + point1(numl + 2) = nump + 3 + point2(numl + 2) = nump + 4 + col(numl + 2) = c -point1(numl + 3) = nump + 5 -point2(numl + 3) = nump + 6 -col(numl + 3) = c + point1(numl + 3) = nump + 5 + point2(numl + 3) = nump + 6 + col(numl + 3) = c -nump = nump + 6 -numl = numl + 3 -tmnump = nump -tmnuml = numl + nump = nump + 6 + numl = numl + 3 + tmnump = nump + tmnuml = numl END SUB SUB graaf - -c = 14 - -d = 0 -e = 0 -FOR x = -500 TO 500 STEP 50 - FOR z = -500 TO 500 STEP 50 - - d = d + 1 - xn(nump + d) = x - valem x / 50, z / 50, y - yn(nump + d) = y * 50 - zn(nump + d) = z - IF z > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 1 - col(numl + e) = c - END IF - - IF x > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 21 - col(numl + e) = c - END IF - - NEXT z -NEXT x -nump = nump + d -numl = numl + e - + c = 14 + + d = 0 + e = 0 + FOR x = -500 TO 500 STEP 50 + FOR z = -500 TO 500 STEP 50 + + d = d + 1 + xn(nump + d) = x + valem x / 50, z / 50, y + yn(nump + d) = y * 50 + zn(nump + d) = z + + IF z > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF x > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 21 + col(numl + e) = c + END IF + + NEXT z + NEXT x + + nump = nump + d + numl = numl + e END SUB SUB mkgr (x1, y1, z1) -c = 3 - -d = 0 -e = 0 -FOR z = -500 TO 500 STEP 100 - FOR y = -500 TO 500 STEP 100 - - d = d + 1 - xn(nump + d) = x1 - yn(nump + d) = y1 + y - zn(nump + d) = z1 + z - IF y > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 1 - col(numl + e) = c - END IF - - IF z > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 11 - col(numl + e) = c - END IF - - NEXT y -NEXT z -nump = nump + d -numl = numl + e + c = 3 + + d = 0 + e = 0 + FOR z = -500 TO 500 STEP 100 + FOR y = -500 TO 500 STEP 100 + + d = d + 1 + xn(nump + d) = x1 + yn(nump + d) = y1 + y + zn(nump + d) = z1 + z + + IF y > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF z > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 11 + col(numl + e) = c + END IF + + NEXT y + NEXT z + nump = nump + d + numl = numl + e END SUB SUB mkgr2 (x1, y1, z1) - -c = 3 - -d = 0 -e = 0 -FOR x = -500 TO 500 STEP 100 - FOR y = -500 TO 500 STEP 100 - - d = d + 1 - xn(nump + d) = x1 + x - yn(nump + d) = y1 + y - zn(nump + d) = z1 - IF y > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 1 - col(numl + e) = c - END IF - - IF x > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 11 - col(numl + e) = c - END IF - - NEXT y -NEXT x -nump = nump + d -numl = numl + e - - + c = 3 + + d = 0 + e = 0 + FOR x = -500 TO 500 STEP 100 + FOR y = -500 TO 500 STEP 100 + + d = d + 1 + xn(nump + d) = x1 + x + yn(nump + d) = y1 + y + zn(nump + d) = z1 + + IF y > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF x > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 11 + col(numl + e) = c + END IF + + NEXT y + NEXT x + + nump = nump + d + numl = numl + e END SUB SUB mkgr3 (x1, y1, z1) - -c = 3 - -d = 0 -e = 0 -FOR x = -500 TO 500 STEP 100 - FOR z = -500 TO 500 STEP 100 - - d = d + 1 - xn(nump + d) = x1 + x - yn(nump + d) = y1 + y - zn(nump + d) = z - IF z > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 1 - col(numl + e) = c - END IF - - IF x > -500 THEN - e = e + 1 - point1(numl + e) = nump + d - point2(numl + e) = nump + d - 11 - col(numl + e) = c - END IF - - NEXT z -NEXT x -nump = nump + d -numl = numl + e - - - + c = 3 + + d = 0 + e = 0 + FOR x = -500 TO 500 STEP 100 + FOR z = -500 TO 500 STEP 100 + + d = d + 1 + xn(nump + d) = x1 + x + yn(nump + d) = y1 + zn(nump + d) = z + + IF z > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF x > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 11 + col(numl + e) = c + END IF + + NEXT z + NEXT x + + nump = nump + d + numl = numl + e END SUB SUB nait3d @@ -255,10 +252,9 @@ numl = tmnuml tm = tm + 1 graaf - myx = myx + SIN(deg1) * mye myz = myz + COS(deg1) * mye - + myx = myx + COS(deg1) * myk myz = myz - SIN(deg1) * myk @@ -266,25 +262,25 @@ myy = myy + myyp deg1 = deg1 + d1 Deg2 = Deg2 + d2 - + C1 = COS(deg1): S1 = SIN(deg1) C2 = COS(Deg2): S2 = SIN(Deg2) - + FOR a = 1 TO nump xo = xn(a) - myx yo = -yn(a) - myy zo = zn(a) - myz - + x1 = (xo * C1 - zo * S1) z1 = (xo * S1 + zo * C1) - + y1 = (yo * C2 - z1 * S2) z2 = (yo * S2 + z1 * C2) - xo(a) = x(a) yo(a) = y(a) + IF z2 < 20 THEN x(a) = -1 ELSE @@ -292,16 +288,19 @@ FOR a = 1 TO nump y(a) = 240 + (y1 / z2 * 500) END IF NEXT - FOR a = 1 TO numl p1 = point1(a) p2 = point2(a) - IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 - IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) + IF xo(p1) = -1 OR xo(p2) = -1 THEN + ' Do nothing + ELSE + LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 + LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) + END IF + NEXT - K$ = INKEY$ IF K$ <> "" THEN @@ -338,7 +337,6 @@ IF K$ <> "" THEN CASE "2" d2 = d2 + .01 - CASE " " d1 = d1 / 2 d2 = d2 / 2 @@ -346,6 +344,7 @@ IF K$ <> "" THEN mye = mye / 2 myk = myk / 2 myyp = myyp / 2 + CASE "q" SYSTEM @@ -371,7 +370,6 @@ NEXT a nump = 0 numl = 0 - getcor END SUB @@ -395,6 +393,4 @@ z = z + (SQR((15 + v) * (15 - v)) - 10) ' top of the ball 'z = z - INT(v / 5) * 3 + 3 ' custom 4 'z = z + 3 * ((-INT((x - .3) / 20) * INT((23 + x - ABS(y * 1.2)) / 15)) + -INT(-y / 20) * -INT(-x / 20) * INT(-((x - 2) * (x - 2) + (y * 1.2 - 4) * (y * 1.2 - 4)) / 2000 + 1.01) + -INT(y / 20) * -INT(-x / 20) * INT(-((x - 2) * (x - 2) + (y * 1.2 + 4) * (y * 1.2 + 4)) / 2000 + 1.01)) ' heart - END SUB - -- 2.20.1