# Mine blast

Jan 23rd, 2012
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1.
2. -- mine blast
3. -- Use this function to perform your initial setup
4. function setup()
5. setInstructionLimit(0)
6. print("Touch and hold mine until it deactivates")
7. print("The quicker u get to the mine the more points you gain")
8. print("bonus points awarded at end for deactivate mines")
9. mylevel = 0
10. mynewlevel = 1
12. mycount = 1
13. myxplaces={124,224,324,424,524,624}
14. myyplaces={128,210,294,376,456,536}
15.
16. mylives=36
17. mylifedecrease = 0
18. mywall=""
19. myground=""
20.
21. --get first real random number
22. mynumber=math.random(1,6)
23. mynumber2=math.random(1,6)
24.
25. myplace=myxplaces[mynumber]
26. myplace2=myyplaces[mynumber2]
27. mybackground = 1
28. myscore=0
29. myhits=0
30. mymines=0
31. mybonus=0
32. mylevel=0
33. mystate=1
34. mylevelamount = .6
35. z=1
36. y=1
37. x=1
38. w=1
39. v=1
40. u=1
41.
42.
43. -- populate 6 by 6 array with 6 rows numbered 1 to 6
44. -- this is used as the mine grid
45. myrow={}
46. for c = 1,6 do
47.    myrow[c] = {}
48.     for d = 1,6 do
49.         myrow[c][d] = d
50.     end
51. end
52. myrow[mynumber][mynumber2]=0
53.
54. backingMode(RETAINED)
55. end
56.
57. -- This function gets called once every frame
58. function draw()
59.
60. if mystate==1 and mylives>0 then
61.     if mybackground < 2 then
62.     -- draw background blocks and initial grid of mines
63.         getgrid()
64.         mybackground = 2
65.     end
66.
67.     if w<=31 and mynewlevel >1 then
68.         fill(1, 1, 1, 255)
69.         stroke(10, 11, 10, 255)
70.         rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
71.         printword("BONUS "..mybonus,w)
72.         if w<=30.3 then
73.             w=w+.3
74.         else
75.             w=31
76.             fill(1, 1, 1, 255)
77.             stroke(10, 11, 10, 255)
78.             rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
79.             w=32
80.         end
81.     else
82.         printword("LEVEL"..mynewlevel,v)
83.         if v<=30.3 then
84.             v=v+.3
85.         else
86.             v=31
87.         end
88.      end
89.
90.     if v==31 then
91.         fill(1, 1, 1, 255)
92.         stroke(10, 11, 10, 255)
93.         rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
94.
95.         printword("ARE",z)
96.         if z<=30.3 then
97.             z=z+.3
98.         else
99.             z=31
100.         end
101.     end
102.
103.     if z==31 then
104.         fill(1, 1, 1, 255)
105.         stroke(10, 11, 10, 255)
106.         rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
107.
108.         printword("YOU",y)
109.         if y<=30.3 then
110.             y=y+.3
111.         else
112.             y=31
113.         end
114.     end
115.         if y==31 then
116.             fill(1, 1, 1, 255)
117.             stroke(10, 11, 10, 255)
118.             rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
119.
121.             if x<=30.3 then
122.                 x=x+.3
123.             else
124.                 x=31
125.             end
126.         end
127.
128.         if x==31 then
129.             fill(1, 1, 1, 255)
130.             stroke(10, 11, 10, 255)
131.             rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
132.
133.             printword("GO",u)
134.             if u<=30.3 then
135.                 u=u+.3
136.             else
137.                 u=31
138.             end
139.        end
140.             if u == 31 then
141.                 fill(1, 1, 1, 255)
142.                 stroke(10, 11, 10, 255)
143.                 rect(5,(HEIGHT-10)-100,WIDTH,HEIGHT -10)
144.                 mystate=0
145.                 mylevel=mylevel+mynewlevel
146.             end
147.
148.
149. end
150.
151. if mylevel >0 and mylives >0 then
152.
153.
154.     if mycount < 2 then -- new mine activated
155.         if myradius == 11 then
156.             stroke(5, 238, 252, 255)
157.             strokeWidth(8)
158.             number(10, HEIGHT -10, "SCORE "..myscore, 20)
159.             fill(1, 1, 1, 255)
160.             stroke(10, 11, 10, 255)
161.             strokeWidth(5)
162.             rect(5,HEIGHT -105,150,30)
163.             strokeWidth(5)
164.             stroke(5, 238, 252, 255)
165.             number(10, HEIGHT -80, "STRENGTH ", 10)
166.             stroke(255, 0, 212, 255)
167.             strokeWidth(5)
168.             rect(160,HEIGHT -105,360,30)
169.             stroke(4, 4, 4, 255)
170.             strokeWidth(0)
171.             if mylives <6 then
172.                 fill(242, 50, 16, 255)
173.             elseif mylives > 6 and mylives < 24 then
174.                 fill(242, 129, 16, 255)
175.             else
176.                 fill(17, 242, 38, 255)
177.             end
178.             rect(163,HEIGHT -102,mylives*10-5,24)
179.         end
180.         -- expand active mine radius by level amount
181.         if myradius < 31 then
182.             fill(20, 244, 4, 255)
184.         else
185.             mycount = mycount + 1
186.         end
187.     else
188.         -- decrease active mine radius by 1
189.         fill(244, 10, 5, 255)
191.     end
192.
193.     -- Draw active mine radius
194.     ellipseMode(3)
196.     sprite("Tyrian Remastered:Button Glow",myplace,myplace2)
197.
198.     -- check if player is pressing on mine if so
199.     -- give player points and mark mine as deactivated
200.     checkforpoints()
201.
202.     if myradius < 11 then -- active mine is at smallest radius
203.
204.             markhitormiss() -- check if mine deactivated or explosion
205.             checkforlevel() -- check if end of level
206.             fill(1, 1, 1, 255)
207.             stroke(10, 11, 10, 255)
208.             strokeWidth(5)
209.             rect(5,HEIGHT -105,150,30)
210.             strokeWidth(5)
211.             stroke(5, 238, 252, 255)
212.             number(10, HEIGHT -80, "STRENGTH ", 10)
213.             stroke(255, 0, 212, 255)
214.             strokeWidth(5)
215.             rect(160,HEIGHT -105,360,30)
216.             stroke(4, 4, 4, 255)
217.             strokeWidth(0)
218.             if mylives <6 then
219.                 fill(242, 50, 16, 255)
220.             elseif mylives > 6 and mylives < 24 then
221.                 fill(242, 129, 16, 255)
222.             else
223.                 fill(17, 242, 38, 255)
224.             end
225.             rect(163,HEIGHT -102,mylives*10-5,24)
226.
227.             if mylevel>0 and mylives >0 then
228.                 mycount = 1 -- get ready to expand activated mine
229.                 repeat -- get new random mine to activate
230.                     mynumber=math.random(1,6)
231.                     mynumber2=math.random(1,6)
232.                 until myrow[mynumber][mynumber2] ~= 0 and myrow[mynumber][mynumber2] ~= 7
233.                 myrow[mynumber][mynumber2]=0 -- mark as activated
234.                 myplace=myxplaces[mynumber]
235.                 myplace2=myyplaces[mynumber2]
236.             end
237.
238.     end
239.
240. end
241. end
242.
243.
244. function markhitormiss()
245.     -- if mine deactivated colour blue else blowup
246.     if myrow[mynumber][mynumber2]==7 then
247.         sprite("Tyrian Remastered:Eye Mecha",myplace,myplace2-4)
248.         mylifedecrease=0
249.     else
250.         sound(SOUND_EXPLODE,1000)
251.         sprite("Tyrian Remastered:Explosion Huge",myplace,myplace2-6)
252.         mylifedecrease=1
253.     end
254. end
255.
256. function checkforlevel()
257.     myhits = 0
258.     mymines = 0
259.     for c = 1,6 do
260.         for d = 1,6 do
261.             if myrow[c][d] == 0 then
262.                 mymines = mymines+1
263.             end
264.             if myrow[c][d] == 7 then
265.                 myhits = myhits + 1
266.             end
267.         end
268.     end
269.
270.     mylives = mylives - mylifedecrease
271.
272.
273. -- if no mines left end level
274.     if mymines+myhits == 36 then
275.
276.             -- calculate bonus based on deactivated mines
277.             -- and add to score
278.
279.             stroke(10, 11, 10, 255)
280.             strokeWidth(10)
281.             number(10, HEIGHT -10, "SCORE "..myscore, 20)
282.             mybonus = 0
283.             mybonus = mybonus + (myhits * 10)
284.
285.             if myhits > 6 and myhits <13 then
286.                 mylives = mylives + 1
287.             elseif myhits > 12 and myhits < 19 then
288.                 mylives = mylives + 2
289.             elseif myhits > 18 and myhits < 25 then
290.                 mylives = mylives + 3
291.             elseif myhits > 24 and myhits < 31 then
292.                 mylives = mylives + 4
293.             elseif myhits > 30 then
294.                 mylives = mylives + 5
295.             end
296.
297.             -- dont let bonus strength go over full strength
298.             if mylives > 36 then
299.                 mylives = 36
300.             end
301.
302.
303.             fill(1, 1, 1, 255)
304.             stroke(10, 11, 10, 255)
305.             rect(5,(HEIGHT-10)-70,WIDTH,HEIGHT -10)
306.             myscore = myscore + mybonus
307.             mynewlevel=mynewlevel+1
308.             mylevelamount=mylevelamount+.2
309.
310.             if mylives > 0 then
311.                 resetvalues()
312.             end
313.
314.     end
315.
316.     if mylives<=0 then
317.         stroke(5, 238, 252, 255)
318.         strokeWidth(8)
319.         number(10, HEIGHT -10, "SCORE "..myscore, 20)
320.         number(450, HEIGHT -10, "GAME OVER ", 20)
321.     end
322. end
323.
324. function checkforpoints()
325.     if CurrentTouch.state==BEGAN or CurrentTouch.state==MOVING then
326.         if CurrentTouch.x <= myplace + 30 and CurrentTouch.x >= myplace - 30 then
327.             if CurrentTouch.y <= myplace2 + 30 and CurrentTouch.y >= myplace2 - 30 then
328.                 stroke(10, 11, 10, 255)
329.                 strokeWidth(10)
330.                 number(10, HEIGHT -10, "SCORE "..myscore, 20)
331.                 myscore = myscore + 1
332.                 stroke(5, 238, 252, 255)
333.                 strokeWidth(8)
334.                 number(10, HEIGHT -10, "SCORE "..myscore, 20)
335.                 sound(SOUND_PICKUP,2000)
336.                 myrow[mynumber][mynumber2] = 7
337.            end
338.         end
339.     end
340. end
341.
342.
343. function getgrid()
344.
345.     if mystate==0 then
346.         stroke(5, 238, 252, 255)
347.         strokeWidth(8)
348.         number(10, HEIGHT -10, "SCORE "..myscore, 20)
349.     end
350.
351.
352.     -- render background sprites (bricks)
353.     for i = 0,7 do
354.        for a = 0,7 do
355.        -- sprite("Planet Cute:Stone Block",a * 100 -1,740)
356.         if a==0 or a==7 then
357.             --wall
358.             if mynewlevel==1 then
359.                 sprite("Planet Cute:Dirt Block",(a * 100 -1)+25,620-(i*82))
360.             elseif mynewlevel==2 then
361.                 sprite("Planet Cute:Stone Block",(a * 100 -1)+25,620-(i*82))
362.             elseif mynewlevel==3 then
363.                 sprite("Planet Cute:Grass Block",(a * 100 -1)+25,620-(i*82))
364.             elseif mynewlevel==4 then
365.                 sprite("Planet Cute:Plain Block",(a * 100 -1)+25,620-(i*82))
366.             else
367.                 sprite("Planet Cute:Wall Block",(a * 100 -1)+25,620-(i*82))
368.             end
369.
370.
371.         else
372.             if i ==0 or i==7 then
373.                 --wall
374.                 if mynewlevel==1 then
375.                         sprite("Planet Cute:Dirt Block",(a * 100 -1)+25,620-(i*82))
376.                 elseif mynewlevel==2 then
377.                         sprite("Planet Cute:Stone Block",(a * 100 -1)+25,620-(i*82))
378.                 elseif mynewlevel==3 then
379.                         sprite("Planet Cute:Grass Block",(a * 100 -1)+25,620-(i*82))
380.                 elseif mynewlevel==4 then
381.                         sprite("Planet Cute:Plain Block",(a * 100 -1)+25,620-(i*82))
382.                 else
383.                     sprite("Planet Cute:Wall Block",(a * 100 -1)+25,620-(i*82))
384.                 end
385.
386.                 if (a==2 or a==5) then
387.                         sprite("Planet Cute:Chest Open",(a * 100 -1)+25,620-(i*82))
388.                 end
389.             else
390.                 -- ground
391.                 if mynewlevel==1 then
392.                     sprite("Planet Cute:Stone Block",(a * 100 -1)+25,620-(i*82))
393.                 elseif mynewlevel==2 then
394.                     sprite("Planet Cute:Grass Block",(a * 100 -1)+25,620-(i*82))
395.                 elseif mynewlevel==3 then
396.                     sprite("Planet Cute:Brown Block",(a * 100 -1)+25,620-(i*82))
397.                 elseif mynewlevel==4 then
398.                     sprite("Planet Cute:Ramp South",(a * 100 -1)+25,620-(i*82))
399.                 else
400.                     sprite("Planet Cute:Water Block",(a * 100 -1)+25,620-(i*82))
401.                 end
402.
403.             end
404.         end
405.       -- sprite("Planet Cute:Dirt Block",a * 100 -1,60)
406.        end
407.     end
408.
409.
410.     for i = 1,6 do
411.         for a = 0,7 do
412.             if a > 0 and a < 7 then
413.              sprite("Tyrian Remastered:Orb 1",(a * 100 -1)+25,620-(i*82)) --place initial mines
414.            end
415.         end
416.     end
417. end
418.
419. function printword(myword,z)
420.      stroke(10, 11, 10, 255)
421.      strokeWidth(12)
422.      number((WIDTH/2)-((#myword/2)*30), HEIGHT -10, myword, z)
423.      stroke(5, 238, 252, 255)
424.      strokeWidth(10)
425.      number((WIDTH/2)-((#myword/2)*30), HEIGHT -10, myword, z)
426. end
427.
428. function resetvalues()
430.     mycount = 1
431.     myxplaces={124,224,324,424,524,624}
432.     myyplaces={128,210,294,376,456,536}
433.     --myyplaces={140,220,300,380,460,540}
434.
435.     --get first real random number
436.     mynumber=math.random(1,6)
437.     mynumber2=math.random(1,6)
438.
439.     myplace=myxplaces[mynumber]
440.     myplace2=myyplaces[mynumber2]
441.     mybackground = 1
442.     myhits=0
443.     mymines=0
444.     mylevel=0
445.     mystate=1
446.     mylifedecrease = 0
447.     z=1
448.     y=1
449.     x=1
450.     w=1
451.     u=1
452.     v=1
453.
454. -- populate 6 by 6 array with 6 rows numbered 1 to 6
455. -- this is used as the mine grid
456. myrow={}
457. for c = 1,6 do
458.    myrow[c] = {}
459.     for d = 1,6 do
460.         myrow[c][d] = d
461.     end
462. end
463. myrow[mynumber][mynumber2]=0
464. end
465. -----------------------------------
466. -- Functions for drawing numbers --
467. -----------------------------------
468.
469.
470. -- Draw a number. x, y is top left
471. function number(x, y, n, w)
472.     l = string.len(n)
473.     for i = 1, l do
474.         drawDigit(x + ((i - 1) * (w * 1.5)), y, string.sub(n, i, i), w)
475.     end
476. end
477.
478. -- Draw a single digit
479. function drawDigit(x, y, n, w)
480.     h = 2 * w
481.     if string.match(n, "1") then
482.         line(x + (w / 2), y, x + (w / 2), y - h)
483.     elseif string.match(n, "2") then
484.         line(x, y, x + w, y)
485.         line(x + w, y, x + w, y - (h / 2))
486.         line(x + w, y - (h / 2), x, y - (h / 2))
487.         line(x, y - (h / 2), x, y - h)
488.         line(x, y - h, x + w, y - h)
489.     elseif string.match(n, "3") then
490.         line(x, y, x + w, y)
491.         line(x + w, y, x + w, y - h)
492.         line(x + w, y - h, x, y - h)
493.         line(x, y - (h / 2), x + w, y - (h / 2))
494.     elseif string.match(n, "4") then
495.         line(x, y, x, y - (h / 2))
496.         line(x, y - (h / 2), x + w, y - (h / 2))
497.         line(x + w, y, x + w, y - h)
498.     elseif string.match(n, "5") then
499.         line(x + w, y, x, y)
500.         line(x, y, x, y - (h / 2))
501.         line(x, y - (h / 2), x + w, y - (h / 2))
502.         line(x + w, y - (h / 2), x + w, y - h)
503.         line(x + w, y - h, x, y - h)
504.     elseif string.match(n, "6") then
505.         line(x + w, y, x, y)
506.         line(x, y, x, y - h)
507.         line(x, y - h, x + w, y - h)
508.         line(x + w, y - h, x + w, y - (h / 2))
509.         line(x + w, y - (h / 2), x, y - (h / 2))
510.     elseif string.match(n, "7") then
511.         line(x, y, x + w, y)
512.         line(x + w, y, x + w, y - h)
513.     elseif string.match(n, "8") then
514.         line(x, y, x + w, y)
515.         line(x + w, y, x + w, y - h)
516.         line(x + w, y - h, x, y - h)
517.         line(x, y - h, x, y)
518.         line(x, y - (h / 2), x + w, y - (h / 2))
519.     elseif string.match(n, "9") then
520.         line(x + w, y - (h / 2), x, y - (h / 2))
521.         line(x, y - (h / 2), x, y)
522.         line(x, y, x + w, y)
523.         line(x + w, y, x + w, y - h)
524.         line(x + w, y - h, x, y - h)
525.     elseif string.match(n, "0") then
526.         line(x, y, x + w, y)
527.         line(x + w, y, x + w, y - h)
528.         line(x + w, y - h, x, y - h)
529.         line(x, y - h, x, y)
530.     elseif string.match(n, "x") then
531.         line(x, y - (w / 3), x + w, y - (h + 1))
532.         line(x + w, y - (w / 3), x, y - (h + 1))
533.     elseif string.match(n, "A") then
534.         line(x, y, x + w, y) -- across top
535.         line(x, y - h, x, y) --down left
536.         line(x + w, y, x + w, y - h) -- down right
537.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
538.     elseif string.match(n, "B") then
539.         line(x, y, x + (w/2), y) --across top
540.         line(x + w, y-(h/4), x + w, y-h+(h/4))-- down right
541.         line(x, y - h, x + (w/2), y - h)-- across bottom
542.         line(x, y - h, x, y)-- down left
543.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
544.         line(x + (w/2), y - h,x + w, y-h+(h/4))-- bottom diag
545.         line(x + (w/2), y,x + w, y-(h/4)) --top diag
546.     elseif string.match(n, "C") then
547.         line(x, y - h, x, y) --down left
548.         line(x + w, y - h, x, y - h)-- across bottom
549.         line(x, y, x + w, y) --across top
550.      elseif string.match(n, "D") then
551.         line(x, y, x + (w/2), y) --across top
552.         line(x + w, y-(h/4), x + w, y-h+(h/4))-- down right
553.         line(x, y - h, x + (w/2), y - h)-- across bottom
554.         line(x, y - h, x, y)-- down left
555.         line(x + (w/2), y - h,x + w, y-h+(h/4))-- bottom diag
556.         line(x + (w/2), y,x + w, y-(h/4)) --top diag   line(x, y, x + w, y) -- across top
557.     elseif string.match(n, "E") then
558.         line(x, y - h, x, y) --down left
559.         line(x + w, y - h, x, y - h)-- across bottom
560.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
561.         line(x, y, x + w, y) -- across top
562.     elseif string.match(n, "F") then
563.         line(x, y - h, x, y) --down left
564.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
565.         line(x, y, x + w, y) -- across top
566.     elseif string.match(n, "G") then
567.         line(x, y - h, x, y) --down left
568.         line(x + w, y - h, x, y - h)-- across bottom
569.         line(x, y, x + w, y) --across top
570.         line(x + w, y - h, x + w, y - (h / 2))
571.         line(x + w, y - (h / 2),x+(w/2),y - (h / 2))
572.     elseif string.match(n, "H") then
573.         line(x, y - h, x, y) --down left
574.         line(x + w, y, x + w, y - h) -- down right
575.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
576.     elseif string.match(n, "I") then
577.         line(x + (w / 2), y, x + (w / 2), y - h)
578.         line(x, y, x + w, y) -- across top
579.         line(x + w, y - h, x, y - h)-- across bottom
580.     elseif string.match(n, "J") then
581.         line(x + w, y, x + w, y - h) -- down right
582.         line(x + w, y - h, x, y - h)-- across bottom
583.     elseif string.match(n, "K") then
584.         line(x, y - h, x, y) --down left
585.         line(x, y - (h / 2),x+w,y) -- top diag
586.         line(x, y - (h / 2),x+w,y-h) -- bottom diag
587.     elseif string.match(n, "L") then
588.         line(x, y - h, x, y) --down left
589.         line(x + w, y - h, x, y - h)-- across bottom
590.     elseif string.match(n, "M") then
591.         line(x, y - h, x, y) --down left
592.         line(x + w, y, x + w, y - h) -- down right
593.         line(x + w, y,x+(w/2),y-(h/2)) -- right diag
594.         line(x+(w/2),y-(h/2),x,y) -- left diag
595.     elseif string.match(n, "N") then
596.         line(x, y - h, x, y) --down left
597.         line(x + w, y, x + w, y - h) -- down right
598.         line(x, y,x+w,y-h) -- diag
599.     elseif string.match(n, "O") then
600.         line(x, y, x + w, y)
601.         line(x + w, y, x + w, y - h)
602.         line(x + w, y - h, x, y - h)
603.         line(x, y - h, x, y)
604.     elseif string.match(n, "P") then
605.         line(x, y, x + w, y) -- across top
606.         line(x, y - h, x, y) --down left
607.         line(x + w, y,  x + w, y - (h / 2)) -- down right
608.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
609.     elseif string.match(n, "Q") then
610.         line(x, y, x + w, y)
611.         line(x + w, y, x + w, y - h)
612.         line(x + w, y - h, x, y - h)
613.         line(x, y - h, x, y)
614.         line(x+(w/4), y - h + (h/4), x-(w/4), y-h-(h/4))
615.     elseif string.match(n, "R") then
616.         line(x, y, x + w, y) -- across top
617.         line(x, y - h, x, y) --down left
618.         line(x + w, y,  x + w, y - (h / 2)) -- down right
619.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
620.         line(x, y - (h / 2),x+w,y-h) -- bottom diag
621.     elseif string.match(n, "S") then
622.         line(x, y, x + w, y) -- across top
623.         line(x, y - (h / 2), x + w, y - (h / 2)) -- across mid
624.         line(x + w, y - h, x, y - h)-- across bottom
625.         line(x, y - (h / 2), x, y) -- down left
626.         line(x + w, y - (h / 2), x+w, y - h) -- down right
627.     elseif string.match(n, "T") then
628.         line(x + (w / 2), y, x + (w / 2), y - h)
629.         line(x, y, x + w, y) -- across top
630.     elseif string.match(n, "U") then
631.         line(x, y - h, x, y) --down left
632.         line(x + w, y, x + w, y - h) -- down right
633.         line(x + w, y - h, x, y - h)-- across bottom
634.     elseif string.match(n, "V") then
635.         line(x, y, x+(w/2), y-h) --down left
636.         line(x + w, y, x+(w/2), y - h) -- down right
637.     elseif string.match(n, "W") then
638.         line(x, y - h, x, y) --down left
639.         line(x + w, y, x + w, y - h) -- down right
640.         line(x + w, y - h, x+(w/2),y-(h/2)) --right diag
641.         line(x, y - h, x+(w/2),y-(h/2)) --right diag
642.     elseif string.match(n, "X") then
643.         line(x, y, x+w, y-h) --diag left
644.         line(x + w, y, x, y - h) -- diag right
645.     elseif string.match(n, "Y") then
646.         line(x, y, x+(w/2), y-(h/2)) --diag left
647.         line(x + w, y, x+(w/2), y-(h/2))  -- diag right
648.         line(x + (w/2), y-h, x+(w/2), y-(h/2))  -- down middle
649.     elseif string.match(n, "Z") then
650.         line(x, y, x + w, y) -- across top
651.         line(x + w, y - h, x, y - h)-- across bottom
652.         line(x + w, y, x, y - h) -- diag right
653.     end
654. end