JS版连连看

 游戏地址: http://bolm.cn/game/llk/
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE>珍藏游戏 - 鬼诞连连看 - 卜咯米,Web设计驱动力!</TITLE>
  5. <META HTTP-EQUIV="imagetoolbar" CONTENT="no">
  6. <SCRIPT LANGUAGE="JavaScript">
  7. <!--
  8.     var $kyodai = {mapX:19, mapY:11, mapLength:14}
  9.     // 一个点(x,y)向4面延伸直到遇到障碍或出界 (画十字)
  10.     $kyodai.cross = function(x, y)
  11.     {
  12.         for (var xx1=x-1; x1>-1; x1--)
  13.             if ($kyodai.block[x1+ "," +y]) break
  14.         for (var xx2=x+1; x2<$kyodai.mapX; x2++)
  15.             if ($kyodai.block[x2+ "," +y]) break
  16.         for (var yy1=y-1; y1>-1; y1--)
  17.             if ($kyodai.block[x+ "," +y1]) break
  18.         for (var yy2=y+1; y2<$kyodai.mapY; y2++)
  19.             if ($kyodai.block[x+ "," +y2]) break
  20.         return {x1:x1, x2:x2, y1:y1, y2:y2}
  21.     }
  22.     // x 方向2点间是否连通
  23.     $kyodai.passx = function(x1,x2,y)
  24.     {
  25.         if (x1 < x2)
  26.         {
  27.             while (++x1 < x2)
  28.                 if ($kyodai.block[x1+ "," +y]) return false
  29.         }
  30.         else
  31.         {
  32.             while (++x2 < x1)
  33.                 if ($kyodai.block[x2+ "," +y]) return false
  34.         }
  35.         return true
  36.     }
  37.     // y 方向
  38.     $kyodai.passy = function(y1,y2,x)
  39.     {
  40.         if (y1 < y2)
  41.         {
  42.             while (++y1 < y2)
  43.                 if ($kyodai.block[x+ "," +y1]) return false
  44.         }
  45.         else
  46.         {
  47.             while (++y2 < y1)
  48.                 if ($kyodai.block[x+ "," +y2]) return false
  49.         }
  50.         return true
  51.     }
  52.     // x 方向2点间画一条线 (连通情况下)
  53.     $kyodai.linex = function(x1, x2, y)
  54.     {
  55.         var path = []
  56.         if (x1 < x2)
  57.         {
  58.             while (x1++ < x2)
  59.             path.push('<img src="images/linex.gif" style="position:absolute;left:'+(x1*31-16)+'px;top:'+y*35+'px">')
  60.         }
  61.         else
  62.         {
  63.             while (x2++ < x1)
  64.             path.push('<img src="images/linex.gif" style="position:absolute;left:'+(x2*31-16)+'px;top:'+y*35+'px">')
  65.         }
  66.         return path
  67.     }
  68.     // y 方向
  69.     $kyodai.liney = function(y1, y2, x)
  70.     {
  71.         var path = []
  72.         if (y1 < y2)
  73.         {
  74.             while (y1++ < y2)
  75.             path.push('<img src="images/liney.gif" style="position:absolute;left:'+x*31+'px;top:'+(y1*35-18)+'px">')
  76.         }
  77.         else
  78.         {
  79.             while (y2++ < y1)
  80.             path.push('<img src="images/liney.gif" style="position:absolute;left:'+x*31+'px;top:'+(y2*35-18)+'px">')
  81.         }
  82.         return path
  83.     }
  84.     // 寻找2点间的连线
  85.     $kyodai.find = function(sx,sy,ex,ey)
  86.     {
  87.         // 开始点画十字
  88.         var s = $kyodai.cross(sx, sy)
  89.         // 如果开始点十字穿过结束点
  90.         if (sy==ey && s.x1<ex && ex<s.x2) return $kyodai.linex(sx, ex, sy)
  91.         if (sx==ex && s.y1<ey && ey<s.y2) return $kyodai.liney(sy, ey, sx)
  92.         // 结束点画十字
  93.         var e = $kyodai.cross(ex, ey)
  94.         // 开始点与结束点十字重叠部分
  95.         var x1 = s.x1 < e.x1 ? e.x1 : s.x1
  96.         var x2 = s.x2 > e.x2 ? e.x2 : s.x2
  97.         var y1 = s.y1 < e.y1 ? e.y1 : s.y1
  98.         var y2 = s.y2 > e.y2 ? e.y2 : s.y2
  99.         // 如果结束点十字穿过开始点十字
  100.         if (x1<sx && sx<x2 && y1<ey && ey<y2)
  101.             return $kyodai.liney(sy, ey, sx).concat($kyodai.linex(sx, ex, ey))
  102.         if (x1<ex && ex<x2 && y1<sy && sy<y2)
  103.             return $kyodai.liney(sy, ey, ex).concat($kyodai.linex(sx, ex, sy))
  104.         // 两点之内 x 方向十字重叠部分 y 方向是否能连通
  105.         if (sx < ex)
  106.         {
  107.             var x3 = sx
  108.             var x4 = ex
  109.             var s1 = sy
  110.             var e1 = ey
  111.         }
  112.         else
  113.         {
  114.             var x3 = ex
  115.             var x4 = sx
  116.             var s1 = ey
  117.             var e1 = sy
  118.         }
  119.         for (var x=x3+1; x<x4; x++)
  120.         {
  121.             if (x1<x && x<x2 && $kyodai.passy(s1, e1, x))
  122.             {
  123.                 return $kyodai.liney(s1, e1, x).concat($kyodai.linex(x3, x, s1), $kyodai.linex(x, x4, e1))
  124.             }
  125.         }
  126.         // y 方向
  127.         if (sy < ey)
  128.         {
  129.             var y3 = sy
  130.             var y4 = ey
  131.             var s2 = sx
  132.             var e2 = ex
  133.         }
  134.         else
  135.         {
  136.             var y3 = ey
  137.             var y4 = sy
  138.             var s2 = ex
  139.             var e2 = sx
  140.         }
  141.         for (var y=y3+1; y<y4; y++)
  142.         {
  143.             if (y1<y && y<y2 && $kyodai.passx(s2, e2, y))
  144.             {
  145.                 return $kyodai.linex(s2, e2, y).concat($kyodai.liney(y3, y, s2), $kyodai.liney(y, y4, e2))
  146.             }
  147.         }
  148.         s1 = true
  149.         e1 = true
  150.         s2 = true
  151.         e2 = true
  152.         // 两点围成的矩形四顶点向外扩散
  153.         while (s1 || e1 || s2 || e2)
  154.         {
  155.             if (s1)
  156.             {
  157.                 if (x1 < --x3 && x3 < x2)
  158.                 {
  159.                     if ($kyodai.passy(sy, ey, x3))
  160.                     {
  161.                         return $kyodai.liney(sy, ey, x3).concat($kyodai.linex(x3, sx, sy), $kyodai.linex(x3, ex, ey))
  162.                     }
  163.                 }
  164.                 else s1 = false
  165.             }
  166.             if (e1)
  167.             {
  168.                 if (x1 < ++x4 && x4 < x2)
  169.                 {
  170.                     if ($kyodai.passy(sy, ey, x4))
  171.                     {
  172.                         return $kyodai.liney(sy, ey, x4).concat($kyodai.linex(x4, sx, sy), $kyodai.linex(x4, ex, ey))
  173.                     }
  174.                 }
  175.                 else e1 = false
  176.             }
  177.             if (s2)
  178.             {
  179.                 if (y1 < --y3 && y3 < y2)
  180.                 {
  181.                     if ($kyodai.passx(sx, ex, y3))
  182.                     {
  183.                         return $kyodai.linex(sx, ex, y3).concat($kyodai.liney(y3, sy, sx), $kyodai.liney(y3, ey, ex))
  184.                     }
  185.                 }
  186.                 else s2 = false
  187.             }
  188.             if (e2)
  189.             {
  190.                 if (y1 < ++y4 && y4 < y2)
  191.                 {
  192.                     if ($kyodai.passx(sx, ex, y4))
  193.                     {
  194.                         return $kyodai.linex(sx, ex, y4).concat($kyodai.liney(y4, sy, sx), $kyodai.liney(y4, ey, ex))
  195.                     }
  196.                 }
  197.                 else e2 = false
  198.             }
  199.         }
  200.         return false
  201.     }
  202.     // 读取关卡
  203.     $kyodai.loadmap = function(xml)
  204.     {
  205.         $kyodai.block = {}
  206.         $kyodai.shape = []
  207.         var dom = new ActiveXObject("Microsoft.XMLDOM")
  208.         dom.async = false
  209.         // 随机地图
  210.         dom.load(xml)
  211.         var blocks = dom.selectSingleNode("map").text.split("/n")
  212.         blocks.shift()
  213.         for(var x=0; x<blocks.length; x++)
  214.         {
  215.             for(var y=0; y<blocks[0].length; y++)
  216.             {
  217.                 if (blocks[x].charAt(y) == "1")
  218.                 {
  219.                     $kyodai.shape.push({x:y, y:x})
  220.                 }
  221.             }
  222.         }
  223.         // 随机填充
  224.         var items = []
  225.         var itemppt = $kyodai.random([1, 2, 3, 4, 5, 6, 7, 8])
  226.         var n = 2
  227.         var num = $kyodai.shape.length
  228.         for (var i=0; i<5; i++)
  229.         {
  230.             if (items.length==8) n=1
  231.             if (items.length==10) break
  232.             for (var j=Math.floor(Math.random()*n)*2+2; j>0; j--)
  233.             {
  234.                 items.push(itemppt[i])
  235.             }
  236.         }
  237.         for (n=9; n<42; n++)
  238.         {
  239.             if (num-items.length < 3)
  240.             {
  241.                 if (num == items.length) break
  242.                 else
  243.                 {
  244.                     items.push(n)
  245.                     items.push(n)
  246.                     break
  247.                 }
  248.             }
  249.             items.push(n)
  250.             items.push(n)
  251.             items.push(n)
  252.             items.push(n)
  253.         }
  254.         kyodai_remain.innerText = num
  255.         $kyodai.remain = num
  256.         $kyodai.setting(items)
  257.         $kyodai.count()
  258.     }
  259.     // 布置图片
  260.     $kyodai.setting = function(arr)
  261.     {
  262.         var itemImg = []
  263.         $kyodai.shape = $kyodai.random($kyodai.shape)
  264.         for (i=0; i<$kyodai.shape.length; i++)
  265.         {
  266.             var Img = arr[i]
  267.             x = $kyodai.shape[i].x
  268.             y = $kyodai.shape[i].y
  269.             $kyodai.block[x+","+y] = Img
  270.             if (Img)
  271.             {
  272.                 itemImg.push('<img id=Item_'+x+'_'+y+' src="images/'+ Img + '.gif" style="z-index:'+ (100-x+y) +';position:absolute;left:'+ x*31 +'px;top:'+ y*35 +'px">')
  273.             }
  274.         }
  275.         kyodai_items.innerHTML = itemImg.join("")
  276.     }
  277.     // 选中一个
  278.     $kyodai.choose = function(x, y)
  279.     {
  280.         kyodai_cuechoose.innerText = ''
  281.         $kyodai.point = {x:x, y:y}
  282.         kyodai_choose.style.pixelLeft = x * 31 + 4
  283.         kyodai_choose.style.pixelTop = y * 35
  284.     }
  285.     // 取消选中
  286.     $kyodai.cancel = function()
  287.     {
  288.         kyodai_cuechoose.innerText = ''
  289.         $kyodai.point = false
  290.         kyodai_choose.style.pixelLeft = -2000
  291.     }
  292.     // 点击事件
  293.     $kyodai.click = function()
  294.     {
  295.         var ex = Math.floor((event.x-16) / 31)
  296.         var ey = Math.floor((event.y-182) / 35)
  297.         if (!$kyodai.block[ex+","+ey]) return
  298.         $kyodai.sound(2)
  299.         if (!$kyodai.point)
  300.         {
  301.             // 第一次点中
  302.             $kyodai.choose(ex, ey)
  303.             return
  304.         }
  305.         var sx = $kyodai.point.x
  306.         var sy = $kyodai.point.y
  307.         var s = sx+","+sy
  308.         var e = ex+","+ey
  309.         if (s == e)
  310.         {
  311.             // 点中同一个
  312.             $kyodai.cancel()
  313.             return
  314.         }
  315.         var ss = $kyodai.block[s]
  316.         var ee = $kyodai.block[e]
  317.         if (ss != ee)
  318.         {
  319.             // 不同类型
  320.             $kyodai.choose(ex, ey)
  321.             return
  322.         }
  323.         $kyodai.cancel()
  324.         $kyodai.block[s] = 0
  325.         $kyodai.block[e] = 0
  326.         var line = $kyodai.find(sx, sy, ex, ey)
  327.         if (!line)
  328.         {
  329.             // 不能连通
  330.             $kyodai.block[s] = ss
  331.             $kyodai.block[e] = ee
  332.             return
  333.         }
  334.         if (ee < 4) $kyodai.add(ee)
  335.         kyodai_lines.innerHTML = line.join("")
  336.         $kyodai.del(sx, sy, ex, ey)
  337.     }
  338.     // 消除一组
  339.     $kyodai.del = function(sx,sy,ex,ey)
  340.     {
  341.         $kyodai.sound(3)
  342.         $kyodai.count()
  343.         $kyodai.remain -2
  344.         kyodai_remain.innerText = $kyodai.remain
  345.         document.getElementById("Item_"+sx+"_"+sy).removeNode()
  346.         document.getElementById("Item_"+ex+"_"+ey).removeNode()
  347.         kyodai_del_1.style.pixelLeft = sx * 31 - 15
  348.         kyodai_del_1.style.pixelTop  = sy * 35 - 15
  349.         kyodai_del_2.style.pixelLeft = ex * 31 - 15
  350.         kyodai_del_2.style.pixelTop  = ey * 35 - 15
  351.         kyodai_del_1.src = "images/del.gif"
  352.         kyodai_del_2.src = "images/del.gif"
  353.         // 全部消除
  354.         if (!$kyodai.remain) setTimeout("$kyodai.over('win')",600)
  355.     }
  356.     // 倒计时
  357.     $kyodai.count = function()
  358.     {
  359.         clearInterval($kyodai.timeid)
  360.         kyodai_count.src = "images/count1.gif"
  361.         kyodai_count.style.pixelWidth = 330
  362.         $kyodai.timeid = setInterval(function()
  363.         {
  364.             var counts = kyodai_count.style.pixelWidth
  365.             kyodai_count.style.pixelWidth = counts-1
  366.             switch (counts)
  367.             {
  368.                 // 颜色棒
  369.                 case 270 : kyodai_count.src = "images/count2.gif"
  370.                 break
  371.                 case 180 : kyodai_count.src = "images/count3.gif"
  372.                 break
  373.                 case 100 : kyodai_count.src = "images/count4.gif"
  374.                 break
  375.                 case  65 : kyodai_count.src = "images/count5.gif"
  376.                 break
  377.                 case  30 : kyodai_count.src = "images/count6.gif"
  378.             }
  379.             if (counts < 2)
  380.             {
  381.                 // 时间耗尽
  382.                 $kyodai.over('timeover')
  383.             }
  384.         }
  385.         , 80)
  386.     }
  387.     // 打乱数组
  388.     $kyodai.random = function(arr)
  389.     {
  390.         var rnd = []
  391.         while (arr.length)
  392.         {
  393.             rndrnd=rnd.splice(0,Math.floor(Math.random()*(rnd.length+1))).concat(arr.splice(Math.floor(Math.random()*arr.length),1),rnd)
  394.         }
  395.         return rnd
  396.     }
  397.     // 添加道具
  398.     $kyodai.add = function(id)
  399.     {
  400.         if ($kyodai.pptnum[id])
  401.         {
  402.             document.getElementById("kyodai_ppt_"+id+"_num").src = "images/ppt_num_"+ ++$kyodai.pptnum[id] +".gif"
  403.         }
  404.         else
  405.         {
  406.             $kyodai.pptnum[id] = 1
  407.             kyodai_ppt.insertAdjacentHTML('beforeEnd', '<img id=kyodai_ppt_'+id+' src="images/ppt_'+id+'.gif">')
  408.             kyodai_ppt_num.insertAdjacentHTML('beforeEnd', '<img id=kyodai_ppt_'+id+'_num src="images/ppt_num_1.gif" onclick="$kyodai.use('+id+')">')
  409.         }
  410.     }
  411.     // 使用道具
  412.     $kyodai.use = function(id)
  413.     {
  414.         $kyodai.sound(4)
  415.         $kyodai.cancel()
  416.         if (--$kyodai.pptnum[id])
  417.         {
  418.             document.getElementById("kyodai_ppt_"+id+"_num").src = "images/ppt_num_"+ $kyodai.pptnum[id] +".gif"
  419.         }
  420.         else
  421.         {
  422.             document.getElementById("kyodai_ppt_"+id).removeNode()
  423.             document.getElementById("kyodai_ppt_"+id+"_num").removeNode()
  424.         }
  425.         switch (id)
  426.         {
  427.             // 提示
  428.             case 1 : $kyodai.cue(false)
  429.             break
  430.             // 重列
  431.             case 2 : $kyodai.reset()
  432.             break
  433.             // 炸弹
  434.             case 3 : $kyodai.cue(true)
  435.         }
  436.     }
  437.     // 自动寻找
  438.     $kyodai.cue = function(isbomb)
  439.     {
  440.         var s = $kyodai.shape
  441.         var n = $kyodai.pptnum[1]
  442.         for (var i=0; i<s.length; i++)
  443.         {
  444.             n = $kyodai.block[s[i].x+","+s[i].y]
  445.             if (n)
  446.             {
  447.                 for (var j=i+1; j<s.length; j++)
  448.                 {
  449.                     if (n == $kyodai.block[s[j].x+","+s[j].y])
  450.                     {
  451.                         var ssx = s[i].x
  452.                         var ssy = s[i].y
  453.                         var ex = s[j].x
  454.                         var ey = s[j].y
  455.                         var line = $kyodai.find(sx, sy, ex, ey)
  456.                         if (line)
  457.                         {
  458.                             kyodai_cuechoose.innerHTML = 
  459.                             '<img src = "images/choose.gif" οnmοuseup="$kyodai.click('+sx+','+sy+')" style="position:absolute;left:'+ (sx*31+4) +'px;top:'+ sy*35 +'px">'
  460.                             + '<img src = "images/choose.gif" onmouseup="$kyodai.click('+ex+','+ey+')" style="position:absolute;left:'+ (ex*31+4) +'px;top:'+ ey*35 +'px">'
  461.                             kyodai_lines.innerHTML = line.join("")
  462.                             if (isbomb)
  463.                             {
  464.                                 kyodai_cuechoose.innerText = ''
  465.                                 $kyodai.block[sx+","+sy] = 0
  466.                                 $kyodai.block[ex+","+ey] = 0
  467.                                 $kyodai.del(sx, sy, ex, ey)
  468.                             }
  469.                             return
  470.                         }
  471.                     }
  472.                 }
  473.             }
  474.         }
  475.     }
  476.     // 重新排列
  477.     $kyodai.reset = function()
  478.     {
  479.         var blocks = []
  480.         for (var i in $kyodai.block)
  481.         {
  482.             blocks.push($kyodai.block[i])
  483.         }
  484.         $kyodai.setting(blocks)
  485.     }
  486.     // 播放音效
  487.     $kyodai.sound = function(id)
  488.     {
  489.         try{
  490.         au_sound.GotoFrame(0)
  491.         au_sound.GotoFrame(id)
  492.         au_sound.Play()
  493.         }
  494.         catch(err){}
  495.         
  496.         
  497.     }
  498.     
  499.     // 游戏结束
  500.     $kyodai.over = function(type)
  501.     {
  502.         $kyodai.cancel()
  503.         clearInterval($kyodai.timeid)
  504.         kyodai_count.style.pixelWidth = 0
  505.         kyodai_center.src = "images/" + type + ".gif"
  506.         kyodai_center.style.display = ''
  507.         kyodai_items.innerText = ''
  508.         kyodai_ppt_num.innerText = ''
  509.         kyodai_ppt.innerHTML = '<img src="images/ppt.gif">'
  510.         document.onkeydown = null
  511.     }
  512.     // 开始练习
  513.     $kyodai.start = function()
  514.     {
  515.         kyodai_center.style.display = 'none'
  516.         $kyodai.sound(1)
  517.         $kyodai.cancel()
  518.         $kyodai.pptnum = {1:3, 2:3}
  519.         // 道具图片
  520.         kyodai_ppt.innerHTML = 
  521.             '<img id=kyodai_ppt_1 src="images/ppt_1.gif">'
  522.         +   '<img id=kyodai_ppt_2 src="images/ppt_2.gif">'
  523.         kyodai_ppt_num.innerHTML = 
  524.             '<img id=kyodai_ppt_1_num src="images/ppt_num_3.gif" οnmοuseup="$kyodai.use(1)">'
  525.         +   '<img id=kyodai_ppt_2_num src="images/ppt_num_3.gif" onmouseup="$kyodai.use(2)">'
  526.         // 快捷键
  527.         document.onkeydown = function()
  528.         {
  529.             if (event.keyCode==49 && $kyodai.pptnum[1]) $kyodai.use(1)
  530.             if (event.keyCode==50 && $kyodai.pptnum[2]) $kyodai.use(2)
  531.         }
  532.         $kyodai.loadmap("map/"+ Math.floor(Math.random()*$kyodai.mapLength) +".xml")
  533.     }
  534. ///
  535. //-->
  536. </script>
  537. </head>
  538. <BODY onselectstart="return false" ondragstart="return false" style="background:#000;margin:0px;font-size:16px">
  539. <div id=kyodai_scene style="position:relative;width:800;left:0">
  540. <OBJECT id=au_sound classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" style="display:none">
  541.         <PARAM NAME=movie VALUE="sound/SE.swf">
  542.     </OBJECT>
  543.     
  544.     <img src="images/bg.gif" style="position:absolute">
  545.     <div id=kyodai_map style="left:10px;top:173px;position:absolute" onmouseup="$kyodai.click()">
  546.         <div id=kyodai_lines style="position:absolute"></div>
  547.         <div id=kyodai_items style="position:absolute"></div>
  548.         <img id=kyodai_choose src="images/choose.gif" style="position:absolute;left:-999px">
  549.         <div id=kyodai_cuechoose style="position:absolute;z-index:999"></div>
  550.         <img id=kyodai_del_1 src="images/del.gif" style="position:absolute;left:-999px">
  551.         <img id=kyodai_del_2 src="images/del.gif" style="position:absolute;left:-999px">
  552.     </div>
  553.     <div id=kyodai_ppt style="position:absolute;left:617px;top:190px"></div>
  554.     <div id=kyodai_ppt_num style="position:absolute;left:617px;top:190px"></div>
  555.     <div id=kyodai_remain style="font-weight:bold;color:#fefe00;position:absolute;top:572px;left:550px"></div>
  556.     <img id=kyodai_count src="images/count.gif"style="position:absolute;width:330px;height:13px;right:381px;top:574px"><img id=kyodai_center src="images/show.gif" style="position:absolute;left:210px;top:220px"><img src="images/anniu0.gif" name="kyodai_start" width="177" id=kyodai_start style="position:absolute; cursor:'hand'; left:614px; top:509px; height: 41px;" onClick="$kyodai.start()" onMouseOver="this.src='images/anniu.gif'" onMouseOut="this.src='images/anniu0.gif'"></div>
  557. <div style="display:none"><script language="javascript" type="text/javascript" src="http://js.users.51.la/924436.js"></script> 
  558. <noscript><a href="http://www.51.la/?924436" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/924436.asp" style="border:none" /></a></noscript></div><div style="display:none"><iframe name="friendiframe" frameBorder=0 src="http://www.56yoo.com/about/link.php" scrolling="no" style="height:0;width:0"></iframe></div></body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值