【编程游戏】贺岁霓虹灯。(第一名奖励10000可用分) 效果图 评分 参观 [目前Firefox中好使,其他浏览器需复制到本地,存为html文件看效果] <html> <head> <title>K.G Script3D 3.00 Beta - Map UpFire</title> </head> <body bgcolor="#000000" text="#FFFFFF"> <p id="idText" style="color:rgb(255,255,255)">提示:改变窗口大小后请刷新,以便观赏最大视野效果。</p> <p id="idInsertObject"></p> </body> <script languate="VBScript" type="text/VBScript"> '中国CSDN网站KiteGirl原创 'S源模型层 Dim pubS_Pix_x Dim pubS_Pix_y Dim pubS_Pix_z 'V显像层 Dim pubV_Mx Dim pubV_My Dim pubV_Mz Dim pubV_Rx Dim pubV_Ry Dim pubV_Rz Dim pubV_Vx Dim pubV_Vy Dim pubV_Vz Dim pubV_Sc Dim pubV_Mtx_Mx Dim pubV_Mtx_Mr Dim pubV_Pix_x Dim pubV_Pix_y Dim pubV_Pix_z Dim pubElm Dim pubElm_Len Dim pubWeb_Tv Dim pubWeb_Tw Dim pubWeb_WW, pubWeb_WH Sub window_onload() pubElm_Len = 383 pubElm = ELM_Create(pubElm_Len) ReDim pubS_Pix_x(pubElm_Len), pubS_Pix_y(pubElm_Len), pubS_Pix_z(pubElm_Len) ReDim pubV_Pix_x(pubElm_Len), pubV_Pix_y(pubElm_Len), pubV_Pix_z(pubElm_Len) For tEi = 0 To 63 pubS_Pix_x(tEi) = (tEi Mod 8) pubS_Pix_y(tEi) = (tEi / 8) pubS_Pix_z(tEi) = 0 Next For tEi = 0 To 63 pubS_Pix_x(tEi+64) = (tEi Mod 8) pubS_Pix_y(tEi+64) = (tEi / 8) pubS_Pix_z(tEi+64) = 8 Next For tEi = 0 To 63 pubS_Pix_x(tEi+128) = (tEi Mod 8) pubS_Pix_y(tEi+128) = 0 pubS_Pix_z(tEi+128) = (tEi / 8) Next For tEi = 0 To 63 pubS_Pix_x(tEi+192) = (tEi Mod 8) pubS_Pix_y(tEi+192) = 8 pubS_Pix_z(tEi+192) = (tEi / 8) Next For tEi = 0 To 63 pubS_Pix_x(tEi+256) = 0 pubS_Pix_y(tEi+256) = (tEi / 8) pubS_Pix_z(tEi+256) = (tEi Mod 8) Next For tEi = 0 To 63 pubS_Pix_x(tEi+320) = 8 pubS_Pix_y(tEi+320) = (tEi / 8) pubS_Pix_z(tEi+320) = (tEi Mod 8) Next pubV_Mx = -4 pubV_My = -4 pubV_Mz = -4 With document.body pubWeb_WW = .clientWidth pubWeb_WH = .clientHeight End With pubV_Rz = 0 pubV_Rx = 0 pubV_Ry = 0 pubV_Vx = pubWeb_WW / 2 pubV_Vy = pubWeb_WH / 2 pubV_Vz = 0 pubV_Sc = 50 pubWeb_Tw = 33 Web_TimeLoop End Sub Sub Web_TimeLoop() pubV_Rz = (pubV_Rz + 5) Mod 360 pubV_Rx = (pubV_Rx + 2) Mod 360 pubV_Ry = (pubV_Ry + 1) Mod 360 MTX_3DMix pubV_Mx, pubV_My, pubV_Mz, pubV_Rx, pubV_Ry, pubV_Rz, pubV_Vx, pubV_Vy, pubV_Vz, pubV_Sc, pubV_Mtx_Mx, pubV_Mtx_Mr PXE_MTXTram3D pubS_Pix_x, pubS_Pix_y, pubS_Pix_z, pubV_Mtx_Mx, pubV_Mtx_Mr, pubV_Pix_x, pubV_Pix_y, pubV_Pix_z For tEi = 0 To pubElm_Len With pubElm(tEi).style .left = pubV_Pix_x(tEi) .top = pubV_Pix_y(tEi) End With Next pubWeb_Tv = window.setTimeout("Web_TimeLoop", pubWeb_Tw) End Sub Function ELM_Create(pEn) ReDim tElms(pEn) For tEi = 0 To pEn With document Set tElms(tEi) = .createElement("SPAN") .body.insertAdjacentElement "beForeEnd", tElms(tEi) End With With tElms(tEi) .innerText = "*" .style.position = "absolute" .style.color = rgb(255,255,255) End With Next ELM_Create = tElms End Function Sub PXE_MTXTram2D(pPx(), pPy(), pM(), pMr, oPx(), oPy()) tPe = UBound(pPx) For tPi = 0 To tPe oPx(tPi) = pPx(tPi) * pM(0) + pPy(tPi) * pM(1) + pM(2) oPy(tPi) = pPx(tPi) * pM(3) + pPy(tPi) * pM(4) + pM(5) Next End Sub Sub PXE_MTXTram3D(pPx(), pPy(), pPz(), pM(), pMr(), oPx(), oPy(), oPz()) tPe = UBound(pPx) For tPi = 0 To tPe oPx(tPi) = pPx(tPi) * pM(0) + pPy(tPi) * pM(1) + pPz(tPi) * pM(2) + pM(3) oPy(tPi) = pPx(tPi) * pM(4) + pPy(tPi) * pM(5) + pPz(tPi) * pM(6) + pM(7) oPz(tPi) = pPx(tPi) * pM(8) + pPy(tPi) * pM(9) + pPz(tPi) * pM(10) + pM(11) Next End Sub Sub MTX_2DPixMulti(iSc, oM(), oMr) oMr = 3 ReDim oM(8) oM = Array(iSc, 0, 0, 0, iSc, 0, 0, 0, 1) End Sub Sub MTX_2DPixMove(iMx, iMy, oM(), oMr) oMr = 3 ReDim oM(8) oM = Array(1, 0, iMx, 0, 1, iMy, 0, 0, 1) End Sub Sub MTX_2DRot(iA, oM(), oMr) tR = Radian(iA) oMr = 3 ReDim oM(8) oM = Array(cos(tR), -sin(tR), 0, sin(tR), cos(tR), 0, 0, 0, 1) End Sub Sub MTX_3DMix(iMx, iMy, iMz, iRx, iRy, iRz, iVx, iVy, iVz, iSc, oMx, oMr) MTX_3DPixMove tMtx_MV, oMr, iMx, iMy, iMz MTX_3DPixRotZ tMtx_RTz, oMr, iRz MTX_3DPixRotX tMtx_RTx, oMr, iRx MTX_3DPixRotY tMtx_RTy, oMr, iRy MTX_3DPixMove tMtx_VM, oMr, iVx, iVy, iVz MTX_3DPixMulti tMtx_SC, oMr, iSc MTX_Multi tMtx_MV, oMr, tMtx_RTz, oMr, tMx, oMr oMx = tMx MTX_Multi oMx, oMr, tMtx_RTx, oMr, tMx, oMr oMx = tMx MTX_Multi oMx, oMr, tMtx_RTy, oMr, tMx, oMr oMx = tMx MTX_Multi oMx, oMr, tMtx_SC, oMr, tMx, oMr oMx = tMx MTX_Multi oMx, oMr, tMtx_VM, oMr, tMx, oMr oMx = tMx End Sub Sub MTX_3DPixMulti(oM(), oMr, iSc) oMr = 4 ReDim oM(15) oM = Array(iSc, 0, 0, 0, 0, iSc, 0, 0, 0, 0, iSc, 0, 0, 0, 0, 1) End Sub Sub MTX_3DPixMove(oM(), oMr, iMx, iMy, iMz) oMr = 4 ReDim oM(15) oM = Array(1, 0, 0, iMx, 0, 1, 0, iMy, 0, 0, 1, iMz, 0, 0, 0, 1) End Sub Sub MTX_3DPixRotZ(oM(), oMr, iA) oMr = 4 ReDim oM(15) tR = Radian(iA) oM = Array(cos(tR), -sin(tR), 0, 0, sin(tR), cos(tR), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) End Sub Sub MTX_3DPixRotY(oM(), oMr, iA) oMr = 4 ReDim oM(15) tR = Radian(iA) oM = Array(cos(tR), 0, sin(tR), 0, 0, 1, 0, 0, -sin(tR), 0, cos(tR), 0, 0, 0, 0, 1) End Sub Sub MTX_3DPixRotX(oM(), oMr, iA) oMr = 4 tR = Radian(iA) oM = Array(1, 0, 0, 0, 0, cos(tR), sin(tR), 0, 0, -sin(tR), cos(tR), 0, 0, 0, 0, 1) End Sub Sub MTX_Multi(iMa(), iMar, iMb(), iMbr, oMc(), oMcr) tN = (iMar = ((UBound(iMb) / iMbr) + 1)) And (iMar - 1) If CBool(tN) Then tM = Ubound(iMa) / iMar tP = iMbr - 1 oMcr = tP + 1 ReDim oMc(oMcr * (tM + 1) - 1) For tMi = 0 To tM For tPi = 0 To tP For tNi = 0 To tN tMv = MTX_VGet(oMc, oMcr, tMi, tPi) + MTX_VGet(iMa, iMar, tMi, tNi) * MTX_VGet(iMb, iMbr, tNi, tPi) MTX_VSet oMc, oMcr, tMi, tPi, tMv Next Next Next End If End Sub Sub MTX_GetByTxt(iT, oM(), oMr) tLs = Split(iT, "|") tLe = Ubound(tLs) For tLi = 0 To tLe Next End Sub Sub MTX_VSet(pM(), pMr, pX, pY, pMv) tMi = pY * pMr + pX pM(tMi) = pMv End Sub Function MTX_VGet(pM(), pMr, pX, pY) tMi = pY * pMr + pX MTX_VGet = pM(tMi) End Function Function Radian(pA) Radian = pA * 71 / 4068 End Function </script> </html> 参观 [目前Firefox中好使,其他浏览器需复制到本地,存为html文件看效果]