//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 件のコメント:
コメントを投稿