+
+
+
+
+ Open in github.dev
+ Open in a new github.dev tab
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Permalink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cannot retrieve contributors at this time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 198 lines (178 sloc)
+
+ 4.59 KB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
+ Learn more about bidirectional Unicode characters
+
+
+
+
+
+
+
+
+
+
+ | + | //MMind | +
| + | + | +
| + | //set vars | +
| + | const H = g.getWidth(); | +
| + | const W = g.getHeight(); | +
| + | var touch_actions = []; | +
| + | var cols = ["#FF0000","#00FF00","#0000FF", "#FF00FF", "#FFFF00", "#00FFFF", "#000000","#FFFFFF"]; | +
| + | var turn = 0; | +
| + | var col_menu = false; | +
| + | //pinsRow = 6; | +
| + | //pinsThick = 10; | +
| + | //pinsRow = 5; | +
| + | //pinsThick = 10; | +
| + | var pinsRow = 4; | +
| + | var pinsThick = 10; | +
| + | var play = [-1, -1, -1, -1]; | +
| + | + | +
| + | var pinsCol = 5; | +
| + | var playx = -1; | +
| + | var sx = (W - 30 )/pinsRow; | +
| + | var sy = (H - 20 )/7; | +
| + | var touch_actions = []; | +
| + | var secret = []; | +
| + | var secret_no_dub = true; | +
| + | var endgame = false; | +
| + | + | +
| + | g.clear(); | +
| + | g.setColor("#FFFFFF"); | +
| + | g.fillRect(0, 0, H, W); | +
| + | g.setFont("Vector12",45); | +
| + | + | +
| + | function draw() { | +
| + | touch_actions = []; | +
| + | g.clear(); | +
| + | g.setColor("#FFFFFF"); | +
| + | g.fillRect(0, 0, H, W); | +
| + | g.setColor("#000000"); | +
| + | //draw scores | +
| + | for (y=0;y<game.length;y+=1) { | +
| + | pp = game[y][0]; | +
| + | ps = game[y][1]; | +
| + | g.setColor("#000000"); | +
| + | //g.fillRect(W-30,10, W-30, 15); | +
| + | g.setColor("#000000"); | +
| + | g.setFont("Vector30",10); | +
| + | g.drawString(ps[0],W-31,y*sy+8); | +
| + | g.setColor("#000000"); | +
| + | g.drawString(ps[1],W-15,y*sy+8); | +
| + | g.setColor("#000000"); | +
| + | for (x=0;x<pinsRow;x+=1) { | +
| + | xx = sx*x + pinsThick + 5; | +
| + | yy = sy*y+20; | +
| + | xc = pp[x]; | +
| + | g.setColor(cols[xc]); | +
| + | g.fillCircle(xx,yy , pinsThick ); | +
| + | g.setColor("#000000"); | +
| + | g.drawCircle(xx,yy,pinsThick+1); | +
| + | g.drawCircle(xx,yy,pinsThick); | +
| + | } | +
| + | } | +
| + | //draw play input | +
| + | for (k=0; k<pinsRow; k+=1){ | +
| + | xx = sx*k + pinsThick + 5; | +
| + | yy = sy*7; | +
| + | touch_actions.push([[xx-pinsThick-5, yy-pinsThick-10, xx+pinsThick+5, yy+pinsThick+20],[1,k]]); | +
| + | if (play[k] < 0) { | +
| + | //col not choisen, draw small dot | +
| + | g.setColor("#000000"); | +
| + | g.fillCircle(xx,yy , 3 ); | +
| + | } else { | +
| + | g.setColor(cols[play[k]]); | +
| + | g.fillCircle(xx,yy , pinsThick ); | +
| + | + | +
| + | } | +
| + | } | +
| + | // draw action button | +
| + | // score, men | +
| + | if (!endgame) { | +
| + | if (col_menu) { | +
| + | draw_col_choice(); | +
| + | } else { | +
| + | // check if all pins are set yet | +
| + | if (Math.min.apply(null,play) < 0) { | +
| + | g.setColor("#FF0000"); | +
| + | } else { | +
| + | g.setColor("#00FF00"); | +
| + | touch_actions.push([[W-30, H-30,192, 190], [3,1]]); | +
| + | } | +
| + | g.fillRect(W-30, H-30, W-1, H-10); | +
| + | } | +
| + | } else { | +
| + | g.setColor("#0000FF"); | +
| + | touch_actions.push([[W-30, H-30,192, 190], [4,1]]); | +
| + | g.fillRect(W-30, H-30, W-1, H-10); | +
| + | } | +
| + | + |
| + | } | +
| + | + | +
| + | function get_secret() { | +
| + | //secret=[]; | +
| + | for (i=0; i<pinsRow; i+=1) { | +
| + | s = Math.round(Math.random()*pinsCol); | +
| + | if (secret_no_dub) | +
| + | while(secret.indexOf(s) >= 0) s = Math.round(Math.random()*pinsCol); | +
| + | secret[i]= s; | +
| + | } | +
| + | } | +
| + | + | +
| + | function score() { | +
| + | bScore = 0; | +
| + | wScore = 0; | +
| + | for (i=0; i<pinsRow; i+=1) { | +
| + | if (secret[i] == play[i]) { | +
| + | bScore +=1; | +
| + | } | +
| + | else { | +
| + | for (s=0; s<pinsRow; s+=1) { | +
| + | if (secret[i] == play[s]) { | +
| + | wScore +=1; | +
| + | break; | +
| + | } | +
| + | } | +
| + | } | +
| + | } | +
| + | + | +
| + | return([bScore, wScore]); | +
| + | } | +
| + | + | +
| + | function draw_col_choice(){ | +
| + | var cc = g.getColor(); | +
| + | var boxw = 30; | +
| + | var boxh = H/pinsRow-20; | +
| + | for (i=0; i<=pinsCol; i+=1) { | +
| + | g.setColor(cols[i]); | +
| + | g.fillRect(W-boxw, i*boxh, W-1, i*boxh+boxh); | +
| + | touch_actions.push([[150, i*boxh, 191, i*boxh+boxh], [2,i]]); | +
| + | g.setColor(cc); | +
| + | } | +
| + | + | +
| + | } | +
| + | + | +
| + | Bangle.on('touch', function(zone,e) { | +
| + | //console.log(e.x, e.y); | +
| + | // check touch actions array to see what to do | +
| + | for(i=0; i<touch_actions.length; i+=1) { | +
| + | if (e.x > touch_actions[i][0][0] && e.x < touch_actions[i][0][2] && | +
| + | e.y > touch_actions[i][0][1] && e.y < touch_actions[i][0][3]) { | +
| + | // a action is hit, add acctions here, todo: start, stop, new, etc. | +
| + | switch (touch_actions[i][1][0]) { | +
| + | case 1: | +
| + | //get pins col menu | +
| + | col_menu = 1; | +
| + | playx = touch_actions[i][1][1]; | +
| + | break; | +
| + | case 2: | +
| + | //copy choice col to play | +
| + | play[playx] = touch_actions[i][1][1]; | +
| + | col_menu = 0; | +
| + | break; | +
| + | case 3: | +
| + | //score play | +
| + | var sc; | +
| + | sc = score(); | +
| + | game.push([play, sc]); | +
| + | play = [-1,-1,-1,-1]; | +
| + | turn+=1; | +
| + | if (turn==6 || sc[0]==pinsRow) { | +
| + | play = secret; | +
| + | col_menu = 0; | +
| + | endgame = true; | +
| + | } | +
| + | break; | +
| + | case 4: | +
| + | //new game | +
| + | play = [-1,-1,-1,-1]; | +
| + | game = []; | +
| + | endgame=false; | +
| + | break; | +
| + | } | +
| + | } | +
| + | } | +
| + | //console.log(touch_actions[i][1][0], touch_actions[i][1][1]); | +
| + | + |
| + | draw(); | +
| + | } | +
| + | ); | +
| + | + | +
| + | + | +
| + | game = []; | +
| + | get_secret(); | +
| + | draw(); | +
| + | //Bangle.loadWidgets(); | +
| + | //Bangle.drawWidgets(); | +
| + | + | +
| + | + | +
| + | + | +
| + | + | +