Advertisement
luismiasas

ping pong shaders

Aug 20th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.56 KB | None | 0 0
  1. --main = class()
  2.  
  3. displayMode(FULLSCREEN)
  4. bat = nil
  5. ball = nil
  6. ball1 = nil
  7. lastDelta = 0
  8. Bola_movimiento = false
  9. bloques = {}
  10. nivel=1
  11. vidas =3
  12. gravedad= vec2(0,0)
  13. lluvia = nil
  14. sonidos = nil
  15. velocidad = 0
  16. explotar = nil
  17. juego_finito = false
  18. ganar = false
  19. puntos = 0
  20. maximo_nivel = table.maxn(niveles)
  21.  
  22. function setup()
  23.  
  24. bat = Barra()
  25. ball = Pelota()
  26. ball1 = Pelota()
  27. lluvia = lineas()
  28. sonido_de_lluvia = 0
  29. sonidoBarra = 0
  30. ball.velocidad.x = math.random(-3,3)
  31.  
  32. Poner_bloques()
  33. print("juego de ping pong terminado")
  34. print("toca la barra para empezar a jugar")
  35. print("una ves se te acaben las 3 vidas pierdes")
  36. print("si pasas de nivel se te agrefara una vida")
  37. print("cada ves que subes de nivel la pelota sera mas rapida")
  38. print("SUERTE!!")
  39.  
  40. end
  41.  
  42. function Poner_bloques()
  43.  
  44. for i = 1,8 do
  45. c = obtenerColorPorNivel(i)
  46. for x = 1,10 do
  47. if niveles[nivel][i][x] > 0 then
  48. table.insert(bloques, Bloques(35 + (x * 62), HEIGHT - (i * 35 + 35) , c))
  49.  
  50. end
  51. end
  52. end
  53. end
  54.  
  55. function obtenerColorPorNivel(fila)
  56.  
  57. cambiarTono = fila * 35
  58. if nivel % 4 == 1 then
  59. c = color(cambiarTono,255,255)
  60. elseif nivel % 4 == 2 then
  61. c = color(255,cambiarTono,255)
  62. elseif nivel % 4 == 3 then
  63. c = color(255,255,cambiarTono,255)
  64. else
  65. c = color(0,255,cambiarTono,255)
  66. end
  67. return c
  68. end
  69.  
  70. -- This function gets called once every frame
  71. function draw()
  72.  
  73. background(0, 25, 25, 5)
  74.  
  75.  
  76. noSmooth()
  77.  
  78. if Bola_movimiento then
  79. if ball:paredes() == false then
  80. perder_vidas()
  81. end
  82.  
  83. end
  84.  
  85. if bat:rebote(ball) == false then
  86.  
  87. end
  88. for i = 1, table.maxn(bloques) do
  89. if bloques[i]:rebote(ball) then
  90.  
  91. table.remove(bloques, i)
  92.  
  93. puntos = puntos + 50
  94.  
  95. break
  96. end
  97. -- esta sentncia funciona bien
  98. if puntos == 1000 then
  99.  
  100.  
  101. -- mostrarTexto("EN RACHA!!" , 380 , 450)
  102. --mostrarTexto("BARRA ALARGADA !!" , 350 , 400)
  103.  
  104. bat.tamano.x = bat.tamano.x + 2
  105. bat.posicion.y = bat.posicion.y + 0.2
  106. end
  107. end
  108.  
  109. if table.maxn(bloques) == 1 then
  110. --ball1:draw()
  111. ball.posicion.x = bat.posicion.x
  112. ball1.posicion.x = bat.posicion.x
  113. ball.radio = 10
  114. ball1.radio = 10
  115. end
  116.  
  117. --
  118. if table.maxn(bloques) == 0 then
  119. nuevo_nivel()
  120.  
  121. end
  122.  
  123. strokeWidth(2)
  124.  
  125. bat:draw()
  126. ball:draw()
  127.  
  128. for i = 1, table.maxn(bloques)do
  129. bloques[i]:draw()
  130. end
  131.  
  132. if nivel == 2 or nivel == 4 or nivel == 6 or nivel == 7 then
  133. -- mantiene el sonido equilirado y con mayor fluides y duracion
  134. if ElapsedTime > sonido_de_lluvia then
  135. sonido_de_lluvia = ElapsedTime + 2
  136. sound(DATA, "ZgNAfwBAQj4/Pj9DAACAPwAAAAAAAIA/AABHf0JFQD9AQj9A")
  137. end
  138.  
  139. lluvia:cargar()
  140.  
  141. lluvia:dibujar()
  142.  
  143. end
  144.  
  145. if nivel == 3 then
  146. bat.posicion.x = bat.posicion.x-lastDelta
  147. bat.posicion.x = bat.posicion.x-lastDelta
  148.  
  149. end
  150.  
  151. if nivel == 4 then
  152.  
  153. if Bola_movimiento then
  154. if ball1:paredes() == false then
  155. perder_vidas()
  156.  
  157. end
  158. end
  159.  
  160. if bat:rebote(ball1) == false then
  161.  
  162. end
  163.  
  164. for u = 1, table.maxn(bloques) do
  165. if bloques[u]:rebote(ball1) then
  166.  
  167. table.remove(bloques, u )
  168.  
  169. puntos = puntos + 50
  170.  
  171.  
  172. break
  173.  
  174. end
  175. end
  176.  
  177. ball1:draw()
  178.  
  179. end
  180.  
  181.  
  182. if nivel == 5 then
  183.  
  184. ball.posicion.x = bat.posicion.x
  185. ball1.posicion.x = bat.posicion.x
  186.  
  187. if Bola_movimiento then
  188. if ball1:paredes() == false then
  189. perder_vidas()
  190.  
  191. end
  192. end
  193.  
  194. if bat:rebote(ball1) == false then
  195.  
  196. end
  197.  
  198. for u = 1, table.maxn(bloques) do
  199. if bloques[u]:rebote(ball1) then
  200.  
  201. table.remove(bloques, u )
  202.  
  203. puntos = puntos + 50
  204.  
  205.  
  206. break
  207.  
  208. end
  209. end
  210.  
  211. ball1:draw()
  212. end
  213.  
  214.  
  215. -- fin del nivel 5
  216.  
  217. if nivel == 6 or nivel == 7 then
  218. bat.posicion.x = bat.posicion.x - lastDelta
  219. bat.posicion.x = bat.posicion.x - lastDelta
  220.  
  221. --bat.tamano.x = bat.tamano.x + 2
  222.  
  223. if Bola_movimiento then
  224. if ball1:paredes() == false then
  225. perder_vidas()
  226.  
  227. end
  228. end
  229.  
  230. if bat:rebote(ball1) == false then
  231.  
  232. end
  233.  
  234. for u = 1, table.maxn(bloques) do
  235. if bloques[u]:rebote(ball1) then
  236.  
  237. table.remove(bloques, u )
  238.  
  239. puntos = puntos + 50
  240.  
  241.  
  242. break
  243.  
  244. end
  245. end
  246.  
  247. ball1:draw()
  248.  
  249. lluvia:cargar()
  250.  
  251. lluvia:dibujar()
  252.  
  253.  
  254. end
  255. -- fin del level 6 y 7
  256.  
  257.  
  258. if juego_finito then
  259.  
  260. mostrarTexto("PERDISTE", 350, 400)
  261. elseif ganar then
  262. mostrarTexto("GANASTE" , 350, 400)
  263.  
  264. end
  265.  
  266.  
  267. function touched(touch)
  268.  
  269. if CurrentTouch.state == BEGAN or
  270.  
  271. CurrentTouch.state == MOVING then
  272.  
  273. lastDelta = CurrentTouch.deltaX
  274.  
  275. if Bola_movimiento == false then
  276. if CurrentTouch.x < bat:derecha() + 100 and
  277. CurrentTouch.x > bat:izquierda() - 100 and
  278. CurrentTouch.y < bat:arriba() + 200 and
  279. CurrentTouch.y > bat:abajo() then
  280. sound(DATA, "ZgJANwBAUyFBBgUrFEQgPnuCCD/ggYs9cwB/bUBAP0c/On0N")
  281. if Bola_movimiento == false then
  282. Bola_movimiento = true
  283. end
  284. end
  285. else
  286. --movemos la barra
  287. bat.posicion.x = bat.posicion.x + lastDelta
  288. bat.posicion.x = math.min( bat.posicion.x, WIDTH - bat.tamano.x/2 )
  289. bat.posicion.x = math.max( bat.tamano.x/2, bat.posicion.x )
  290. end
  291. elseif juego_finito == true or ganar == true then
  292. if CurrentTouch.tapCount == 1 then
  293. resetearJuego()
  294. end
  295.  
  296. end
  297.  
  298. end
  299. lastDelta = 0
  300. end
  301.  
  302.  
  303. --ceramos una funcion que reseteara el balon una ves se falle con el bate
  304. function resetearBalon()
  305. Bola_movimiento = false
  306. ball.posicion.x = bat.posicion.x
  307. ball1.posicion.x = bat.posicion.x
  308. ball.posicion.y = 30
  309. ball1.posicion.y = 30
  310. ball.posicion.x = 380
  311. ball.radio = 12
  312. ball1.ratio = 12
  313. bat.posicion.x = 380
  314. bat.posicion.y = 47
  315.  
  316. end
  317.  
  318. function nuevo_nivel()
  319.  
  320. puntos = puntos + 100 * vidas * nivel
  321.  
  322. resetearBalon()
  323.  
  324. if nivel <= maximo_nivel then
  325. --el nivel aumenta a n+1
  326. nivel = nivel + 1
  327. --ball.velocidad.y = math.random(0,30)
  328. -- se colocan los bloques nuevamente del resectivo nivel
  329. Poner_bloques()
  330. ball.velocidad.y = ball.velocidad.y * 1.2
  331. vidas = vidas + 1
  332. bat.tamano = vec2(120,15)
  333. -- sound(SOUND_RANDOM, 61)
  334.  
  335. else
  336. ganar = true
  337. end
  338.  
  339. end
  340. -- creamos una nueva funcion para ir descontando las vidas
  341.  
  342. function perder_vidas()
  343.  
  344. resetearBalon()
  345. --se descuenta la vida
  346. vidas = vidas - 1
  347. if vidas == 0 then
  348. juego_finito = true
  349. -- Poner_bloques()
  350. end
  351.  
  352. end
  353.  
  354. function mostrarTexto(str , x , y )
  355. pushStyle()
  356. textMode(CORNER)
  357. fill(255, 255, 0, 255)
  358. font("Arial")
  359. fontSize(50)
  360. text(str,x,y)
  361. popStyle()
  362. end
  363.  
  364. function mostrar_advertencia(acomodar,x,y)
  365. pushMatrix()
  366. fill(255,25,25,255)--rojo
  367. font("Georgia")
  368. fontSize(20)
  369. textWrapWidth(200)
  370. text(acomodar,x,y)
  371. popMatrix()
  372.  
  373.  
  374. end
  375.  
  376. function resetearJuego()
  377.  
  378. vidas = 3
  379. puntos = 0
  380. nivel = 1
  381. bloques = {}
  382. Poner_bloques()
  383. juego_finito = false
  384. ganar = false
  385. ball.velocidad.y = 15
  386. --ball1.velocidad.y = math.random(0,15)
  387.  
  388. end
  389.  
  390. --pelota = class()
  391. Pelota = class()
  392.  
  393. function Pelota:init()
  394. -- you can accept and set parameters here
  395. self.posicion = vec2( WIDTH /2,41)
  396. self.radio = 12
  397. self.velocidad = vec2(0,15)
  398. end
  399.  
  400. function Pelota:draw()
  401. local color_adicional = 255
  402. fill(255,255,255,color_adicional)
  403. noStroke()
  404. ellipse (self.posicion.x , self.posicion.y , 2* self.radio)
  405.  
  406.  
  407. local soltar_bola = self.posicion - self.velocidad
  408.  
  409. if Bola_movimiento == true then
  410. for y = 1,2 do
  411. color_adicional = color_adicional / 2
  412. fill (255,25,255,color_adicional)
  413. ellipse(soltar_bola.x , soltar_bola.y ,1* self.radio)
  414. soltar_bola = soltar_bola - self.velocidad
  415.  
  416. end
  417. end
  418. end
  419.  
  420. function Pelota:paredes()
  421. self.posicion = self.posicion + self.velocidad
  422.  
  423. --pared lateral derecha
  424. if (self.posicion.x + self.radio) >= WIDTH then
  425. -- self.posicion.x = WIDTH - self.radio
  426. --esta linea hace que el balon rebote en la pared derecha
  427. self.velocidad.x = -self.velocidad.x
  428. --sound(SOUND_JUMP)
  429. --pared lateral izquierda
  430. elseif (self.posicion.x - self.radio) <= 0 then
  431. -- self.posicion.x = self.radio
  432. --esta linea hace que el balon rebote en la pared izquierda
  433. self.velocidad.x = -self.velocidad.x
  434.  
  435. --pared de arriba
  436. elseif (self.posicion.y + self.radio) >= HEIGHT then
  437. physics.gravity(0,4000)
  438. -- self.posicion.y = HEIGHT - self.radio
  439. self.velocidad.y = -self.velocidad.y
  440.  
  441. --pared de abajo
  442. elseif (self.posicion.y - self.radio) <= 0 then
  443. -- self.posicion.y = self.radio
  444. self.velocidad.y = -self.velocidad.y
  445. sound(SOUND_RANDOM, 79)
  446.  
  447. return false
  448. end
  449. return true
  450. end
  451.  
  452. function Pelota:derecha()
  453. return self.posicion.x + self.radio
  454. end
  455. function Pelota:izquierda()
  456. return self.posicion.x - self.radio
  457. end
  458. function Pelota:arriba()
  459. return self.posicion.y + self.radio
  460. end
  461. function Pelota:abajo()
  462. return self.posicion.y - self.radio
  463. end
  464.  
  465. --barra = class()
  466. Barra = class()
  467.  
  468. function Barra:init()
  469. -- se realizaran la implementacion de la barra del juego
  470. -- el largo y el ancho de la barra
  471. self.posicion = vec2(380 , 60)
  472. -- tamano
  473. self.tamano = vec2(120, 15)
  474. end
  475.  
  476. function Barra:draw()
  477. -- le damos color a la barra
  478. fill(45, 197, 200, 255)
  479. -- sprite("Tyrian Remastered:Boss A",300,400)
  480. rectMode(CENTER)
  481.  
  482. --le damos curvatura a la recta en las esquinas
  483. ellipse(self.posicion.x - self.tamano.x /1.9 , self.posicion.y, 15)
  484. ellipse(self.posicion.x + self.tamano.x /1.9 , self.posicion.y, 15)
  485. --mostramos la recta
  486. ellipse(self.posicion.x , self.posicion.y , self.tamano.x , self.tamano.y)
  487. end
  488.  
  489.  
  490. function Barra:rebote(ball)
  491. if ball:izquierda() <= self:derecha() and ball:derecha() >= self:izquierda()
  492.  
  493. and ball:abajo() <= self:arriba() and
  494. ball:arriba() >= self:abajo() then
  495.  
  496. ball.velocidad.y = -ball.velocidad.y
  497. ball.posicion.y = self:arriba() + ball.radio
  498. posicion = ball.posicion.x - self.posicion.x
  499. ball.velocidad.x = posicion /10
  500.  
  501. return true
  502. end
  503. return false
  504. end
  505.  
  506.  
  507. function Barra:derecha()
  508. return self.posicion.x + self.tamano.x /2
  509. end
  510. function Barra:izquierda()
  511. return self.posicion.x - self.tamano.x /2
  512. end
  513. function Barra:arriba()
  514. return self.posicion.y + self.tamano.y /2
  515. end
  516. function Barra:abajo()
  517. return self.posicion.y - self.tamano.y /2
  518. end
  519. Luismi 1:11PM Edit
  520. Posts: 33
  521. Bloques = class()
  522.  
  523. function Bloques:init(x, y , tonos)
  524. parameter.integer("Texture",1,2)
  525.  
  526. allTextures = {
  527. "Cargo Bot:Star Filled",
  528. }
  529.  
  530.  
  531.  
  532. m = mesh()
  533. m.texture = allTextures[Texture]
  534. -- parametros aqui
  535. -- damos posicion a los bloques
  536. self.posicion = vec2(x , y)
  537. -- damos tamano a los bloques
  538. self.tamano = vec2(70 , 43)
  539.  
  540. self.mesh = mesh()
  541.  
  542. self.color1 = tonos
  543. --implementamos los bloques en forma de recta
  544. self.mesh:addRect (self.posicion.x , self.posicion.y , self.tamano.x , self.tamano.y)
  545.  
  546. --le da,os tnos de color a los bloques
  547. local oscuro = self.color1:mix( color(400,400,400), 0.4 )
  548.  
  549. self.mesh:color(1 , self.color1)
  550. self.mesh:color(2 , oscuro)
  551. self.mesh:color(3 , self.color1)
  552. self.mesh:color(4 , oscuro)
  553. self.mesh:color(5 , self.color1)
  554. self.mesh:color(6 , oscuro)
  555.  
  556. self.mesh.shader = shader("Effects:Ripple")
  557.  
  558.  
  559. end
  560.  
  561. function Bloques:draw()
  562. fill(42, 82, 201, 153)
  563.  
  564. -- Configure out custom uniforms for the ripple shader
  565. self.mesh.shader.time = ElapsedTime
  566. self.mesh.shader.freq =1.5
  567. noStroke()
  568. self.mesh:draw()
  569. rectMode(CENTER)
  570. -- Codea does not automatically call this method
  571. end
  572.  
  573. function Bloques:rebote(ball)
  574.  
  575. if ball:derecha() >= self:izquierda() and ball:izquierda() <= self:derecha() and
  576. ball:arriba() >= self:abajo() and ball:abajo() <= self:arriba() then
  577.  
  578. sound(DATA, "ZgBAZAA+Qi0IQ0IWAAAAAAubAz5sIgq/VgBKU0BKQUBfIWcQ")
  579.  
  580. if ball.posicion.y <= self:arriba() and ball.posicion.y >= self:abajo() then
  581.  
  582. ball.velocidad.x = -ball.velocidad.x
  583. else
  584. ball.velocidad.y = -ball.velocidad.y
  585.  
  586. end
  587. return true
  588.  
  589. end
  590. return false
  591.  
  592. end
  593.  
  594. function Bloques:rebote(ball1)
  595.  
  596. if ball1:derecha() >= self:izquierda() and ball1:izquierda() <= self:derecha() and
  597. ball1:arriba() >= self:abajo() and ball1:abajo() <= self:arriba() then
  598. sound(DATA, "ZgBAZAA+Qi0IQ0IWAAAAAAubAz5sIgq/VgBKU0BKQUBfIWcQ")
  599.  
  600. if ball1.posicion.y <= self:arriba() and ball1.posicion.y >= self:abajo() then
  601.  
  602. ball1.velocidad.x = -ball1.velocidad.x
  603. else
  604. ball1.velocidad.y = -ball1.velocidad.y
  605.  
  606. end
  607. return true
  608.  
  609. end
  610. return false
  611.  
  612. end
  613.  
  614. -- creamos las funciones de arriba, abajo, izquierda, derecha
  615.  
  616. function Bloques:derecha()
  617. return self.posicion.x + self.tamano.x / 2
  618. end
  619. function Bloques:izquierda()
  620. return self.posicion.x - self.tamano.x /2
  621. end
  622. function Bloques:arriba()
  623. return self.posicion.y + self.tamano.y /2
  624. end
  625. function Bloques:abajo()
  626. return self.posicion.y - self.tamano.y /2
  627. end
  628.  
  629. niveles = {
  630.  
  631. {{0,0,1,1,1,1,1,1,0,0},{0,0,0,0,0,0,0,0,0,0},
  632. {0,0,1,0,1,1,0,1,0,0},{0,0,0,0,0,0,0,0,0,0},
  633. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},
  634. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},
  635.  
  636. {{1,1,1,1,1,1,1,1,1,1},{0,1,1,1,1,1,1,1,1,0},
  637. {0,0,1,1,1,1,1,1,0,0},{0,0,0,1,1,1,1,0,0,0},--nivel2 lluvia
  638. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},
  639. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},
  640.  
  641. {{0,0,0,1,1,1,1,0,0,0},{0,0,1,1,1,1,1,1,0,0}
  642. ,{0,0,1,1,1,1,1,1,0,0},{0,0,1,1,1,1,1,1,0,0},--nivel3 bate invertido
  643. {0,0,1,1,1,1,1,1,0,0},{0,0,0,1,1,1,1,0,0,0},
  644. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},
  645.  
  646. {{1,1,1,1,1,1,1,1,1,1},{1,1,1,1,0,0,0,0,1,1},
  647. {1,1,1,1,0,1,1,0,1,1},{1,1,1,1,0,0,0,0,1,1},--nivel4 doble balon
  648. {1,1,1,1,0,1,1,1,1,1},{1,1,1,1,0,1,1,1,1,1},
  649. {1,1,1,1,0,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1}},
  650.  
  651. {{1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1},
  652. {1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1},--nivel5 direccion balon con barra
  653. {1,1,1,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0,0,0},
  654. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},
  655.  
  656. {{1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1},
  657. {1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1},--nivel6
  658. {1,1,1,1,1,1,1,1,1,1},{0,0,0,0,1,1,1,0,0,0},
  659. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},
  660.  
  661. {{1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1},
  662. {1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1},--nivel7
  663. {1,1,1,1,1,1,1,1,1,1},{0,0,0,0,1,1,1,0,0,0},
  664. {0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}}
  665.  
  666. }
  667.  
  668. -- RAIN
  669.  
  670. linea = class()
  671.  
  672. function linea:init(vel , pos)
  673. -- you can accept and set parameters here
  674. self.velocidad = vel
  675. self.posicion = pos
  676. end
  677.  
  678. function linea:cargar()
  679. self.posicion.y = self.posicion.y - self.velocidad
  680.  
  681. end
  682.  
  683. function linea:mostrar()
  684. if (self.posicion.y + self.velocidad) < 0 then
  685.  
  686. return true
  687.  
  688. end
  689. return false
  690.  
  691. end
  692.  
  693. function linea:dibujar()
  694. p = self.posicion
  695. -- gotas = {"Small World:Raindrop"}
  696. line(p.x,p.y,p.x,p.y + self.velocidad)
  697. end
  698.  
  699. lineas = class()
  700.  
  701.  
  702. function lineas:init()
  703.  
  704. self.velocidad_0 = 3
  705. self.velocidad_1 = 20
  706. self.rango =1
  707. self.lines = {}
  708.  
  709. end
  710.  
  711. function lineas:mostrarTodo()
  712. for i,v in ipairs(self.lines) do
  713. if v:mostrar() then
  714. table.remove(self.lines , i )
  715.  
  716.  
  717. else
  718. v:cargar()
  719. end
  720.  
  721. end
  722.  
  723.  
  724. end
  725. function lineas:cargar()
  726.  
  727. for i = 1 , self.rango do
  728. Velocidad = math.random(self.velocidad_0 , self.velocidad_1)
  729.  
  730. dato_1 = vec2(math.random(WIDTH/1) , HEIGHT - Velocidad)
  731.  
  732. table.insert(self.lines , linea(Velocidad , dato_1))
  733. end
  734. self:mostrarTodo()
  735.  
  736.  
  737. end
  738.  
  739. function lineas:dibujar()
  740. --sound(DATA,"ZgNAeABCQj4/Pj1DWQtwPxDT77u1THs/dQBHf0JFQD9AQj9A")
  741.  
  742. pushStyle()
  743. noSmooth()
  744. stroke(255,255,255,73.9)
  745. strokeWidth(3)
  746.  
  747. for i,v in ipairs(self.lines) do
  748.  
  749.  
  750. v:dibujar()
  751.  
  752.  
  753. end
  754.  
  755. popStyle()
  756. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement