2022年8月27日土曜日

LearningKit 2022 for M5Stack Gray MiniSlot


 //Learning Kit 2022 for M5Stack

//M5Stack_Gray_minislot 


#include <M5Stack.h>

int num,i=0;

int yourmoney=100;

String numstr,leftstr,centerstr,rightstr;


const uint8_t buttonA_GPIO = 39;

const uint8_t buttonB_GPIO = 38;

const uint8_t buttonC_GPIO = 37;

 

bool flag_btA_is_pressed = false;

bool flag_btB_is_pressed = false;

bool flag_btC_is_pressed = false;


static void buttonA_isr() {

  Serial.println("A interrupt");

  flag_btA_is_pressed = true;

}

 

static void buttonB_isr() {

  Serial.println("B interrupt");

  flag_btB_is_pressed = true;

}

 

static void buttonC_isr() {

  Serial.println("C interrupt");

  flag_btC_is_pressed = true;

}


void OpenScreen()

{

  M5.Lcd.setCursor(0,0);

  M5.Lcd.setTextColor(WHITE);

  M5.Lcd.setTextSize(2);

  M5.Lcd.print("Welcome to M5Stack Gray");

  M5.Lcd.setCursor(0,20);

  M5.Lcd.print("Coded by Kim Grossa");

  M5.Lcd.setCursor(0,40);

  M5.Lcd.print("Mini Slot");

  

  M5.Lcd.setCursor(0,60);

  M5.Lcd.setTextColor(BLUE);

  M5.Lcd.setTextSize(2);

  M5.Lcd.print("ButtonA New Game   ");

  M5.Lcd.setCursor(0,80);

  M5.Lcd.print("ButtonB No Action  ");

  M5.Lcd.setCursor(0,100);

  M5.Lcd.print("ButtonC Stop slot  ");

  M5.Lcd.setCursor(0,180);

  M5.Lcd.setTextColor(BLUE,BLACK);

  M5.Lcd.setTextSize(3);

  M5.Lcd.print("You have $" + String(yourmoney)+ "   ");

}


void SlotRotate()

{

  num=random(1,4);

  numstr=String(num);

  leftstr=numstr;

  M5.Lcd.setCursor(50,140);

  M5.Lcd.setTextColor(GREEN,BLACK);

  M5.Lcd.setTextSize(4);

  M5.Lcd.print(leftstr); 

  delay(50);

  num=random(1,4);

  numstr=String(num);

  centerstr=numstr;

  M5.Lcd.setCursor(150,140);

  M5.Lcd.setTextColor(GREEN,BLACK);

  M5.Lcd.setTextSize(4);

  M5.Lcd.print(centerstr);

  delay(50);

  num=random(1,4);

  numstr=String(num);

  rightstr=numstr;

  M5.Lcd.setCursor(250,140);

  M5.Lcd.setTextColor(GREEN,BLACK);

  M5.Lcd.setTextSize(4);

  M5.Lcd.print(rightstr);

  delay(50);    

}


void setup() 

{

  M5.begin();

  M5.Power.begin();

  M5.Lcd.setBrightness(200);

  OpenScreen();


  pinMode(buttonA_GPIO, INPUT);

  pinMode(buttonB_GPIO, INPUT);

  pinMode(buttonC_GPIO, INPUT);

 

  attachInterrupt(digitalPinToInterrupt(buttonA_GPIO), buttonA_isr, FALLING);

  attachInterrupt(digitalPinToInterrupt(buttonB_GPIO), buttonB_isr, FALLING);

  attachInterrupt(digitalPinToInterrupt(buttonC_GPIO), buttonC_isr, FALLING);

 

  delay(1000); 

}


void loop() 

  SlotRotate();

  if (flag_btA_is_pressed) 

    {

      Serial.println("Button A is pressed!");

      flag_btA_is_pressed = false; 

      M5.Power.reset();    

    }

 

  if (flag_btB_is_pressed) {

    Serial.println("Button B is pressed!");

    flag_btB_is_pressed = false;

  }

 

  if (flag_btC_is_pressed) 

  {

    Serial.println("Button C is pressed!");

    flag_btC_is_pressed = false;

    if ((leftstr==centerstr)&& (centerstr==rightstr))

      {

        M5.Lcd.setCursor(50,140);

        M5.Lcd.setTextColor(RED,BLACK);

        M5.Lcd.setTextSize(4);

        M5.Lcd.print(leftstr); 


        M5.Lcd.setCursor(150,140);

        M5.Lcd.setTextColor(RED,BLACK);

        M5.Lcd.setTextSize(4);

        M5.Lcd.print(centerstr);

      

        M5.Lcd.setCursor(250,140);

        M5.Lcd.setTextColor(RED,BLACK);

        M5.Lcd.setTextSize(4);

        M5.Lcd.print(rightstr); 

             

        M5.Lcd.setCursor(0,180);

        M5.Lcd.setTextColor(BLUE,BLACK);

        M5.Lcd.setTextSize(3);

        yourmoney=yourmoney+10;

        M5.Lcd.print("You have $" + String(yourmoney)+ "   ");

      }

      else

      {

        M5.Lcd.setCursor(0,180);

        M5.Lcd.setTextColor(BLUE,BLACK);

        M5.Lcd.setTextSize(3);

        yourmoney=yourmoney-10;

        M5.Lcd.print("You have $" + String(yourmoney)+ "   "); 

       }  

       delay(1000);

  }

  if(yourmoney<=0)

  {

    M5.Lcd.fillScreen(BLACK);

    M5.Lcd.setCursor(0,140);

    M5.Lcd.setTextColor(RED,BLACK);

    M5.Lcd.setTextSize(3);

    M5.Lcd.print("Game over        ");

    delay(1000);

    M5.Power.reset();

  }

        

  M5.update();

}

0 件のコメント:

コメントを投稿