tictactoe.lk12 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. local code = [[--TIC-TAC-TOE DEMO GAME BY RAMILEGO4GAME--
  2. local grid, xo ,win
  3. local xturn = false
  4. local function buildxo() xo = {}
  5. for x=1,3 do xo[x] = {} for y=1,3 do
  6. xo[x][y] = 0
  7. end end
  8. end
  9. local function drawTurn()
  10. local x,y,sprid
  11. x = 192/2 - 3*8
  12. y = (128-8*2)-4
  13. sprid = xturn and 59 or 35
  14. if win then sprid = win == 3 and 6 or 11 end
  15. SpriteGroup(sprid,x,y,3,1,2,2)
  16. end
  17. local function drawWin()
  18. if not win or win == 3 then return end
  19. local x,y,sprid
  20. x = 192/2 - 7*8
  21. y = (128-8*2)-4
  22. sprid = win==1 and 52 or 28
  23. SpriteGroup(sprid,x,y,7,1,2,2)
  24. end
  25. local function calcWin()
  26. local w = 0 --The winner
  27. for x=1,3 do --Vertical Scanning
  28. if xo[x][1] == xo[x][2] and xo[x][2] == xo[
  29. x][3] then
  30. return xo[x][1]
  31. end
  32. end
  33. for y=1,3 do --Horizental Scanning
  34. if xo[1][y] == xo[2][y] and xo[2][y] == xo[
  35. 3][y] then
  36. return xo[1][y]
  37. end
  38. end
  39. --Diagnostick Scanning
  40. if xo[1][1] == xo[2][2] and xo[2][2] == xo[
  41. 3][3] then
  42. return xo[1][1]
  43. elseif xo[3][1] == xo[2][2] and xo[2][2] ==
  44. xo[1][3] then
  45. return xo[3][1]
  46. end
  47. --Check if the grid is all filled
  48. for x=1,3 do
  49. for y=1,3 do
  50. if xo[x][y] == 0 then return 0 end
  51. end
  52. end
  53. return 3 --DRAW
  54. end
  55. function _startup()
  56. clear(7) win = false buildxo()
  57. xturn = not xturn
  58. local x,y
  59. x = 192/2-(3*8*4)/2
  60. y = 128/2-(3*8*4)/2-10
  61. grid = {x,y,3*8*4,3*8*4,3,3}
  62. SpriteGroup(1,x,y,3,3,4,4)
  63. drawTurn()
  64. end
  65. function _mpress(x,y)
  66. if win then
  67. _startup()
  68. return
  69. end
  70. local cx,cy = whereInGrid(x,y,grid)
  71. if cx then
  72. if xo[cx][cy] > 0 then return end
  73. local cx,cy = cx-1, cy-1
  74. local x,y
  75. x=grid[1]+cx*8*4
  76. y=grid[2]+cy*8*4
  77. Sprite(xturn and 4 or 5,x,y,0,4,4)
  78. xo[cx+1][cy+1]= xturn and 1 or 2
  79. local w = calcWin()
  80. if w > 0 then win = w end
  81. xturn = not xturn drawTurn() drawWin()
  82. end
  83. end
  84. ]]
  85. local spritemap = 'iVBORw0KGgoAAAANSUhEUgAAAMAAAABgBAMAAAC57mDaAAAAFVBMVEUAAABgWE/Dw8ZRptztG1H6ohv37C8rpz+jAAAAAXRSTlMAQObYZgAAAUlJREFUeJztllFugzAMhl2RA4wrOOwdJRdAKCeIRG/Q+19hjl021NFqJWFP/6eaVFGVL84PqHTpv/mgO7zh1dyf6OWz1ikC2fZlLRo7IjfR9cYLL3nJOX+2FXQj0eToduV850RB6aG54OeIbP9LPi3khU1Q30G/4dViTQV7tDmilJ4LUqoP2ZV7KDmSclJi03GiRG5gnoc0DFJzncC5sqxei8BmTCAKpUUHSXe+CtJGMNcKyNmy1kEqApmiwx08hmwJaCcq0DwmchqypfCm4PTb9D+fA3kTjc9+55lDk5ddF7U6qUik40iROg6effReKhwXyFqyZCm9FoFI9Qt7aSB4pU5gHUTd+SqIG0GoEZQjos6WtQ5iEcgUlSM61MFjyJaAjNEEmoc0piEHTeE9wd7flj0O36YAAAAAAAAAAAAAAAAAAAAAgF98ATkwWr0+7k9uAAAAAElFTkSuQmCC'
  86. return {code=code,spritemap=spritemap}