아두이노 프로젝트

아두이노로 만드는 lcd게임 part2(★★★)

ByteCraftCreations 2023. 10. 23. 19:32

아두이노로 만드는 lcd게임 part1 : https://bytecraftcreations.tistory.com/21

유튜브 : https://youtu.be/w2uF9qznJw0

 

안녕하세요 지난시간 part1에 이어서 코드 보겠습니다.

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int x,y,z;

int life=3;

int heroX=0;
int heroY=0;

int villainX=14;
int villainY=0;

int missileX;
int missileY;

void setup()
{
  pinMode(8, INPUT_PULLUP);
  pinMode(7,OUTPUT);
  lcd.init();
  lcd.backlight();
  randomSeed();
}

void loop()
{ 
  if(life>0)
  {

  }
  else
  {

  }
}

이제 loop를 채워가겠습니다.

 

제일 먼저 할 일은 조이스틱의 x,y,z를 읽어오는 것입니다.

    x=analogRead(A0); 
    y=analogRead(A1);
    z=digitalRead(8);

    if((x<500)&&(heroX!=0) )
    {
      heroX-=1;
    }
    if((x>530)&&(heroX!=14) )
    {
      heroX+=1;
    }

    if(y>530 )
    {
      heroY=1;
    }
    if(y<500 )
    {
      heroY=0;
    }
    makeHero(heroX,heroY,"o");

x, y, z값을 읽어오고 lcd좌표를 참고하여

 

우리 주인공 0를 읽어온 값에 맞게 출력하는

 

makeHero() 함수를 불러옵니다.

그 다음 장애물 x도 출력해줍니다.

 

먼저 x의 x,y 좌표를 계산하고 함수를 만들어서 출력합니다.

    if(villainX>-1)
    {
      villainX-=1;
    }
    if(villainX==-1)
    {
      villainX=14;
    }
    villainY=random(0,2);
    makeVillain(villainX,villainY);

주인공과 x가 만나면 life를 감소시키고

 

피에조 부저에 소리를 내도록 하겠습니다.

 

둘의 좌표가 같아지면 명령을 실행하면 되겠죠?

    if( (villainX==heroX) && (villainY==heroY))
    {
      life-=1;
      tone(7,261,150);
    }
    makelife(life);

life 표시 역시 함수로 처리했습니다.

 

조이스틱을 눌러서 z좌표가 0이되면

 

주인공이 미사일을 발사하고 소리를

 

내는 코드를 만들어보겠습니다.

    if(z==0)
    {
      missileX = heroX+1;
      missileY = heroY;
      tone(7,440,150);
    }
      missileX++;

미사일은 오른쪽으로 진행하니까

 

마지막에 x좌표를 1씩 더해줍니다.

 

이제 life가 0이 되면 GAME OVER를 출력하겠습니다.

  else
  {
    gameOver();
  }

gameover()함수로 처리했습니다.

 

이제 함수들을 정의하고 중간에 빠진 코드를 완성하면

 

게임 프로젝트가 마무리됩니다.

 

모든 코드와 자세한 설명은 유튜브에서 확인하세요!

 

유튜브 : https://youtu.be/w2uF9qznJw0

 

그리고 추가 미션입니다.

 

게임이 끝나면 GAMEOVER에 게임을 진행한

 

시간을 출력하여 친구들끼리 순위 경쟁이 가능하도록

 

아래 사진처럼 구현해보세요!