[Arduino] 두더지 게임&기억력 게임 만들기
결론은 사실 실패이다. 무언가 결함이 있었는지 단순히 회로도를 보고 코드를 복사하는 것만으로는 매우 부족했다. 우선 그래도 구현한 회로가 아까우니 결과 사진을 첨부하겠다.
[두더지 잡기 게임]
코드는 그대로 가져왔다. 따로 출처를 남기겠다. 후에 참고용으로 보기 위해 올려놓는다.
자세한 내용은 원글을 참고하길 바란다.
https://m.blog.naver.com/flyingfi5h/220485798162
아두이노로 두더지 게임 만들기
아두이노 Random / Switch를 활용해서 두더지 게임 만들기 * 시작 버튼을 누르면 시작됨* 두더지를 5번 ...
blog.naver.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
int ResetSW = 0; //재시작 스위치 핀 번호
int piezo = 8; //게임소리용 피에조 부저
int led[] = {1, 2, 3, 4, 5}; //두더지 5마리
int sw[] = {A0, A1, A2, A3, A4}; //두더지 잡는 스위치 5개
int life[] = {10, 11, 12, 13}; //try 3번
int ending = 1; //게임종료용 변수
int dudog = 0; //두더지 잡은 수
int fin = 5; //잡을 두더지 마리 수
int TRY = 3; //Life
long randNumber; //무작위로 튀어나올 두더지와 스위치 번호
int i;
int j;
void setup() {
for(i=0; i<5; i++) {
pinMode(led[i], OUTPUT); //1~5번 두더지 사용
pinMode(sw[i], INPUT_PULLUP); //1~5번 두더지 스위치 사용(풀업)
}
for(j=0; j<4; j++) {
pinMode(life[j], OUTPUT); //1~3번 life 사용
}
pinMode(ResetSW, INPUT_PULLUP); //리셋용 스위치 사용(풀업)
pinMode(piezo, OUTPUT); //게임소리 부저 사용
}
void loop() {
if(ending==1) {
//게임 재시작 스위치 입력 시 (게임종료에 관한 변수 초기화)
if(digitalRead(ResetSW) == LOW) {
ending = 0;
dudog=0;
TRY = 3;
//게임 시작 소리
tone(piezo, 880); //5옥 라
delay(200);
tone(piezo, 932.33); //5옥 라
delay(200);
noTone(piezo);
for(j=0; j<4; j++){
digitalWrite(life[j], HIGH);
}
}
}else if (dudog==fin) {
//엔딩 소리 (빠밤~빠밤빠~ 소라!)
tone(piezo, 523);
delay(250);
noTone(piezo);
tone(piezo, 392);
delay(125);
noTone(piezo);
tone(piezo, 440);
delay(125);
noTone(piezo);
tone(piezo, 392);
delay(250);
noTone(piezo);
tone(piezo, 0);
delay(250);
noTone(piezo);
tone(piezo, 494);
delay(250);
noTone(piezo);
tone(piezo, 523);
delay(250);
noTone(piezo); //소리 끄기
for(j=0; j<4; j++){
digitalWrite(life[j], LOW); //LED 끄기
}
ending = 1; //엔딩소리 더 이상 출력 안함 + 게임종료
}else if (TRY==0) { //3번 이상 놓친 경우 게임 종료
tone(piezo, 523);
delay(1000);
noTone(piezo); //소리 끄기
ending = 1; //엔딩소리 더 이상 출력 안함 + 게임종료
}else{
randNumber = random(0,4); // 0번~4번 두더지까지 무작위로 선정!
switch(randNumber) {
case 0:
dudogi();
break;
case 1:
dudogi();
break;
case 2:
dudogi();
break;
case 3:
dudogi();
break;
case 4:
dudogi();
break;
}
}
digitalWrite(life[TRY], LOW); //실수한 경우 Life LED 하나씩 끄기
delay(1000); // 다음 두더지 튀어나올 대기시간
}
void dudogi()
{
for (int count=0; count < 10; count++) {
if (dudog==fin) { // 모든 두더지 잡았을 경우 for문 아웃->게임종료
// for문 시작전 판단한다.
break;
}else if(TRY == 0){
break;
}else if (digitalRead(sw[randNumber]) == LOW) {
digitalWrite(led[randNumber], LOW);
//두더지 죽는 소리
tone(piezo, 440); //솔
delay(50);
noTone(piezo);
delay(50);
tone(piezo, 440); //솔
delay(50);
noTone(piezo);
delay(50);
tone(piezo, 523); //라
delay(200);
noTone(piezo); //소리 끄기
dudog++; // 두더지 잡은 숫자 증가
TRY++;
break; // 두더지 잡으면 for문 종료해서 다른 두더지 찾음.
}else // 두더지 튀어나오기!
digitalWrite(led[randNumber], HIGH);
delay(50); // 0.05초마다 입력들어왔는지 확인
digitalWrite(led[randNumber], LOW); // 0.5초동안 입력 없으면 불 꺼짐.
}
TRY--;
}
|
다음은 기억력 게임에 대한 정보이다.
한글 자료 중 제대로 설명하는 자료가 없어서 영어로 된 문서 링크를 첨부해놓겠다.
회로를 5번이나 리셋해가며 짰는데, 마음대로 되지 않았다. 다음에는 코드를 하나씩 분석해가며 내가 짜보고 테스트를 해보아야 겠다. 그래도 회로는 구현했다. 작동이 계속 삐, 삐 소리가 나며 스위치가 눌리는대로 작동하지 않았다는 실패 결과였지만 다음에 다시 도전해보아야겠다.
https://randomnerdtutorials.com/teensy-arduino-memory-game/
Teensy/Arduino - Memory Game | Random Nerd Tutorials
This project is all about creating a simple game to test your memory.
randomnerdtutorials.com
어렵지만 틈틈히 공부해서 언젠가는 꼭 완벽한 두더지 게임, 기억력 게임을 만들어봐야겠다.
'Undergraduate Records' 카테고리의 다른 글
[Buttom UP] Image View를 이용한 이미지 처리 (0) | 2019.07.10 |
---|---|
2회차 모각코 목표 (0) | 2019.07.10 |
1회차 결과 보고서 (0) | 2019.07.08 |
[iOS] Datepicker를 이용한 알람시계 만들기 (0) | 2019.07.08 |
[Baekjoon] for문 문제 (0) | 2019.07.08 |