아두이노 프로젝트
아두이노로 만드는 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에 게임을 진행한
시간을 출력하여 친구들끼리 순위 경쟁이 가능하도록
아래 사진처럼 구현해보세요!