Sunteți pe pagina 1din 4

public boolean onTouch(MotionEvent event) { if (event.getX() >= PIECE_SIZE * 7 + 20) { MainActivity.mainAct.ShowScreen(MainActivity.mainAct.mai nMenuScreen); return false; } if (winner !

= 'n') return false; if (!redTurn) return false; int x = (int)event.getX() / PIECE_SIZE; if (x > 6) return false; if (cols.get(x).size() < 6 && pieceToAnimate == null) { cols.get(x).add('R'); pieceToAnimate = new Tuple<Integer, Tuple<Integer, Integ er>>(Y_BEGIN - PIECE_SIZE, new Tuple<Integer, Integer>(x, cols.get(x).size() - 1 )); NewTurn(); } return false; } public void Draw(Canvas canvas) { //Temp, till I don't find a better place to put this in if (!redTurn && pieceToAnimate == null && ++aiMoveTimer >= 25) { aiMoveTimer = 0; aiTurn(); NewTurn(); } for (int i = 0; i < 7; i++) { for (int j = 0; j < cols.get(i).size(); j++) { if (pieceToAnimate != null && pieceToAnimate.y.x == i && pieceToAnimate.y.y == j) continue; int a = i * PIECE_SIZE; int b = Y_BEGIN + PIECE_SIZE * 6 - PIECE_SIZE * (j + 1); canvas.drawBitmap((cols.get(i).get(j) == 'R')? R : B, null, new Rect(a, b, a + PIECE_SIZE, b + PIECE_SIZE), null); } } if (pieceToAnimate != null) { int a = pieceToAnimate.y.x * PIECE_SIZE; canvas.drawBitmap((cols.get(pieceToAnimate.y.x).get(piec eToAnimate.y.y) == 'R')? R: B, null, new Rect(a, pieceToAnimate.x, a + PIECE_SIZ

E, pieceToAnimate.x + PIECE_SIZE), null); pieceToAnimate.x += PIECE_SIZE / 5; //Change this value to change the speed of falling if (pieceToAnimate.x >= Y_BEGIN + PIECE_SIZE * 6 - PIECE _SIZE * (pieceToAnimate.y.y + 1)) { pieceToAnimate = null; } } if (winner != 'n' && pieceToAnimate == null) { int r = PIECE_SIZE / 2, a = winningAnimation; int x = winner_x * PIECE_SIZE; int y = Y_BEGIN + PIECE_SIZE * 6 - PIECE_SIZE * (winner_ y + 1); Paint paint = new Paint(); paint.setARGB((int)(255 * a / (float)50.0), 255, 255, 25 5); switch (winner_direction) { case 0: for (int i = 0; i < 4; i++) canvas.drawCircle(x + r + 2 * r * i, y + r, r, paint); break; case 1: for (int i = 0; i < 4; i++) canvas.drawCircle(x + r, y + r 2 * r * i, r, paint); break; case 2: for (int i = 0; i < 4; i++) canvas.drawCircle(x + r + 2 * r * i, y + r - 2 * r * i, r, paint); break; case 3: for (int i = 0; i < 4; i++) canvas.drawCircle(x + r + 2 * r * i, y + r + 2 * r * i, r, paint); break; } winningAnimation += (winningAnimationIncrease? 1: -1); if (winningAnimation == 0 || winningAnimation == 50) winningAnimationIncrease ^= true; } canvas.drawBitmap(Board, null, new Rect(0, Y_BEGIN, PIECE_SIZE * 7, PIECE_SIZE * 6), null); } public void NewTurn() { //Put some code to check if it was a draw redTurn ^= true; for (int i = 0; i < 7; i++) { for (int j = 0; j < 6; j++)

{ if (Check(i, j, i + 1, j, i + 2,j, i + 3, j)) { winner = cols.get(i).get(j); winner_x = i; winner_y = j; winner_direction = 0; return; } } } for (int i = 0; i < 7; i++) { for (int j = 0; j < 6; j++) { if (Check(i, j, i, j + 1, i, j + 2, i, j + 3)) { winner = cols.get(i).get(j); winner_x = i; winner_y = j; winner_direction = 1; return; } } } for (int i = 0; i < 7; i++) { for (int j = 0; j < 6; j++) { if (Check(i, j, i + 1, j + 1, i + 2, j + 2, i + 3, j + 3)) { winner = cols.get(i).get(j); winner_x = i; winner_y = j; winner_direction = 2; return; } } } for (int i = 0; i < 7; i++) { for (int j = 0; j < 6; j++) { if (Check(i, j, i + 1, j - 1, i + 2, j - 2, i + 3, j - 3)) { winner = cols.get(i).get(j); winner_x = i; winner_y = j; winner_direction = 3; return; } } } } public boolean Check(int a, int b, int c, int d, int e, int f, int g, in t h)

{ if (a < 0 || c < 0 || e < 0 || g < 0 || a > 6 || c > 6 || e > 6 || g > 6 ) return false; if (b < 0 || d < 0 || f < 0 || h < 0 || b > 5 || d > 5 || f > 5 || h > 5 ) return false; if (cols.get(a).size() <= b || cols.get(c).size() <= d || cols.get(e).si ze() <= f || cols.get(g).size() <= h) return false; if (cols.get(a).get(b) == cols.get(c).get(d) && cols.get(c).get(d) == co ls.get(e).get(f) && cols.get(e).get(f) == cols.get(g).get(h)) return true; return false; }

S-ar putea să vă placă și