Krishna Lalith
Published

Knights Fight

Block the opponents (arduino) move. No move implies loser.

BeginnerShowcase (no instructions)557
Knights Fight

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Joystick, 10 kohm
Joystick, 10 kohm
×1
RGB LED Pixel Matrix, NeoPixel NeoMatrix
RGB LED Pixel Matrix, NeoPixel NeoMatrix
×1

Story

Read more

Schematics

uploads2ftmp2fe6c3d006-61cb-49bf-b795-a4c902741bc32fimg_20190119_170907_AuitFbSs7w.jpg

Code

BvsW_Max7221_Joysticks.ino

Arduino
#include <LedControl.h>
LedControl lc = LedControl(8, 10, 9, 1); //10 is to CLOCK, 9 = CS, 8=DIN//

int UD = 0, LR = 0, BT = 0;
int BnW[8][8];
int i, j, XC, YC, Pi, Pj;
boolean flag;

void setup() {
  Serial.begin(9600);
  lc.shutdown(0, false);
  lc.setIntensity(0, 5);
  lc.clearDisplay(0);
  randomSeed(analogRead(0));

  for (i = 0; i < 8; i++) {
    for (j = 0; j < 8; j++) {
      if (i == 0 || i == 7) {
        BnW[i][j] = 1;
      }
      else {
        BnW[i][j] = 0;
      }
    }
  }
}

void loop() {

  UD = analogRead(A0);
  LR = analogRead(A1);
  BT = analogRead(A2);

  char xdot = map(LR, 1021, 0, 7, 0); //This maps the values//
  char ydot = map(UD, 1021, 0, 7, 0);

  lc.setLed(0, xdot, ydot , true);
  
  flag = true;
  
  if (BT == 0 && BnW[xdot][ydot] == 0) {
    for (i = 0; i < 8; i++) {
      if (BnW[i][ydot] == 1) {
        Pi = i;
        break;
      }
    }
    for (i = 7; i >= 0; i--) {
      if (BnW[i][ydot] == 1) {
        Pj = i;
        break;
      }
    }
    if (Pj > xdot && xdot > Pi) {
      BnW[Pj][ydot] = 0;
      BnW[xdot][ydot] = 1;

      //ARDUINO'S TURN
      flag = false;
      for (i = 0; i < 8; i++) {

        for (j = 0; j < 8; j++) {
          if (BnW[j][i] == 1) {
            Pi = j;
            break;
          }
        }
        for (j = 7; j >= 0; j--) {
          if (BnW[j][i] == 1) {
            Pj = j;
            break;
          }
        }

        //select one row make diff one
        if (Pj - Pi > 2 && BnW[Pi + 2][i] == 0) {
          BnW[Pj - 2][i] = 1;
          BnW[Pi][i] = 0;
          flag = true;
          break;
        }
        //close one row
        if (Pj - Pi > 1 && BnW[i][Pi + 1] == 0) {
          BnW[Pj - 1][i] = 1;
          BnW[Pi][i] = 0;
          flag = true;
          break;
        }
      }
    }
  }

  if (flag == false) {
    for (i = 0; i < 8; i++) {
      for (j = 0; j < 8; j++) {
        lc.setLed(0, i, j , false);
      }
    }
    exit(0);
  }

  //update 8x8 board
  for (i = 0; i < 8; i++) {
    for (j = 0; j < 8; j++) {
      if (BnW[i][j] == 1) {
        lc.setLed(0, i, j , true);
      }
      if (BnW[i][j] == 0) {
        lc.setLed(0, i, j , false);
      }
    }
  }

  //lc.clearDisplay(0);
  delay(150);
}

Credits

Krishna Lalith
11 projects • 2 followers
Contact

Comments

Please log in or sign up to comment.