C++로 MyNumber 만들기!① 맵 그리기(1) 목표 설정, 배열, define(매크로 포맷 대상)
프로세스 고려
그러니 마이넘버를 실제로 만들어보자.
최초의 코드는 이런 느낌이었다.
tokuniimihanai
#include<iostream>
using namespace std;
int main(){
return 0;
}
당연하지, 하지만 아직 아무것도 하지 않았어!갑자기 여기서부터 쓰면 불가능한 달팽이라서'원래 마이넘버는 뭐예요?'이렇게 생각하면 최초의 목표를 설정한다.
↓↓ 그렇다면 다음 그림을 살펴보자.크면 안 돼.↓↓
마지막 쪽에서 생각한 게 너무 많아서 혼란스러웠지만 먼저 해야 할 일은
① 필드가 있음
② 마당에 파괴할 벽이 있다
그걸 이루는 거야.
지도를 만들겠다고?활용단어참조
예를 들어 세로 15칸*세로 30칸이면 총 450칸의 빈칸이 있다.
450개의 변수를 수동으로 준비하고 관리하기는 어렵다.
그러니 배열을 이용해 한 번 관리하자.
hairetsuttesugoi
int map[15][30];
이 기술은 맵[0][0]에서 맵[14][29]까지의 int형 변수를 한 줄로 표시했다.편리‼int map[15][30]; //配列の宣言
for(int i = 0; i < 15; i++){ //0-14行目まで繰り返す処理の中に、
for(int j = 0; j < 30; j++){ //0-29列目まで繰り返す処理を埋め込みます。この表記は頻出なので注意‼
map[i][j] = 0; //配列の全てに0を代入
cout << map[i][j]; //配列の全てを出力
}
cout << "\n"; //ここ忘れがちですが、各行29列目のあとで改行しましょう。
}
이렇게 기술하면 실행할 때 길이가 15*너비 30개 0으로 배열해야 한다.↓↓000000000000000000000000000000 //map[0][0]からmap[0][29]まで出力し\nで改行。
000000000000000000000000000000 //map[1][0]からmap[1][29]まで出力し\nで改行。以下同じ。
000000000000000000000000000000
(……省略……)
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000 //map[14][0]からmap[14][29]まで出力し\nで改行。
↑↑ 이런 인상.화면이 내 잠꾸러기처럼 보이게!
그렇지만
하지만 여러분.
내 핸드폰 화면 이런 거 아니지?
실제 스마트폰 화면을 살펴봅시다.(이건 주운 사진이야. 안 맞아!)↓↓
0은 안 되는 거지!
마이슈퍼 지도에는 철거해야 할 벽이 촘촘하게 늘어서 있었다.표현하자면 □이겠죠.하지만 이제 지도에 0만 뜨면 끝이에요.
그럼 이런 메커니즘을 소개해 봅시다.
① int[15][30]형 배열맵에 값을 대입(아까의 예에 따라 0)
② 대입치대로 지도에 그리기(0시 □ 그리기)
이렇게 하면 □ 이외의 내용을 그릴 수 있을 뿐만 아니라'디지털 계산'을 통해'각종 문자와 그림'을 관리할 수 있다.편리‼
방금 전의 전선을 수정해 보세요.
이번엔 ①와 ②를 각각 처리하므로 같은 기술이 연속적으로 진행되되 방법이 없다고 판단해 포기하십시오.
int map[15][30];
for(int i = 0; i < 15; i++){
for(int j = 0; j < 30; j++){
map[i][j] = 0;
}
}
//ここまでで配列の全てに0を代入できました。
//以下の記述で画面に出力してみます。
for(int i = 0; i < 15; i++){
for(int j = 0; j < 30; j++){
switch(map[i][j]){ //switch文で配列の値の場合分けをします。今回は0しかありませんが、今後増えます。
case 0: cout << "□"; break; //:の後には必ず半角スペースを入れる事と、各caseの最後にbreak;を忘れずに‼
default: break;
}
}
cout << "\n";
}
이런 느낌이에요.두 번째 설명은 모든 어레이에 대한 것입니다.
①값이 0일 경우 □ 출력
② 이것 말고는 아무것도 하지 않는다
이런 상황에서 헤어지면
배열당 값
① 평범한 벽... 0
② 폭탄이 있는 벽... 1
③ 평범한 벽(체크)... 2
④ 폭탄이 있는 벽(검사)...3
⑤폭탄(게임 종료)...-1
⑥ 파괴된 벽... - 2.
이렇게 되면 6가지 모델로 늘어날 것으로 보인다.그래서 이번에는if문이 아니라 switch문인 경우를 분리해서 채택했습니다.
그럼 실제 출력해 보세요.둥!!
좋은 모래‼
드디어 지도를 그린 것 같다.
더 좋죠!
그렇다면 잘하더라도 현재 코드인'전문'을 살짝 확인해야 한다.
imano-code
#include<iostream>
using namespace std;
int main() {
int map[15][30];
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 30; j++) {
map[i][j] = 0;
}
}
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 30; j++) {
switch (map[i][j]) {
case 0: cout << "□"; break;
default: break;
}
}
cout << "\n";
}
return 0;
}
이 코드는 처리에 있어서 결코 틀리지 않았지만, "읽기가 매우 어렵다."구체적으로 말하면① 15, 30 등등 송어에 대한 숫자가 너무 많이 나온다.각자 무엇을 대표하고 있습니까?변경할 때는 모든 것을 착수해야 하기 때문에 매우 번거롭다
②main() 함수에서 많은 처리가 이루어졌는데 각각 어떻게 처리되었는가?
잠깐만요.
실제로는 아직 많을 수도 있지만, 어쨌든 우선 이 두 문제를 집중적으로 해결합시다!
① 수량을 쉽게 이해할 수 있도록--define을 사용하세요!
그나저나 여러분 이것 좀 보세요.
#define MICHO 20 //文末に;は不要なので注意!
"이게 뭐야?"이런 느낌이 들 수 있지만, 이 기술을 사용하면#define MICHO 20
#include<iostream>
using namespace std;
int main(){
cout << MICHO;
return 0;
}
MICHO 값만 출력하는 코드를 만들어 보십시오20
출력되어야 합니다.이런 명령을 #define 명령이라고 하는데 #define A 형식으로 사용합니다.이렇게 되자 A는 그 후 B를 나타내는 것이 되었다.
(또한, A가'이것은 define의 값입니다'라는 것을 쉽게 알기 위해 A는 모두 대문자로 표시한다)
이렇게 쓰는 장점은 다음과 같다.
① 값을 통일적으로 변경하면 누락을 방지할 수 있다.
② 읽을 수 있도록 수치를 명명할 수 있다.
잠깐만요.다른 방법으로는 const와 enum을 사용하는 방법도 있고, 혹은 그쪽이 추천받은 것 같다(죄송합니다) 하여튼 이번엔 #define을 사용해 송어 수량을 관리해 봅시다!
먼저 코드의 시작 부분에서
#define MAP_HEIGHT 15
#define MAP_WIDTH 30
이렇게 쓰세요.이렇게 해서MAP_HEIGHT는 15의 값을 나타냅니다.
MAP_WIDTH가 30인 값을 나타냅니다.
이렇게 결정됐습니다.
따라서 모든 값을 개작하면
#define MAP_HEIGHT 15
#define MAP_WIDTH 30
#include<iostream>
using namespace std;
int main() {
int map[MAP_HEIGHT][MAP_WIDTH];
for (int i = 0; i < MAP_HEIGHT; i++) {
for (int j = 0; j < MAP_WIDTH; j++) {
map[i][j] = 0;
}
}
for (int i = 0; i < MAP_HEIGHT; i++) {
for (int j = 0; j < MAP_WIDTH; j++) {
switch (map[i][j]) {
case 0: cout << "□"; break;
default: break;
}
}
cout << "\n";
}
return 0;
}
알아!!!!!!!!!!...아니, 어때.아마도 아직 아무런 효과가 없을 것이다.코드가 워낙 어려워서요.아무튼 이제 속았다고 생각하고 이걸로 써봐요.
끊을게요!
여기까지 보도로 상당히 길어졌다.
②의 "main() 함수에서 어떻게 처리되는지 알기 어려웠지만, 이번에는 여기서 끝내고 다음에 돌릴게요.미안해!!
그렇긴 하지만 이번에만 스마트폰 화면을 성공적으로 보여야 한다."뭘 해야 할까요?"나는 이렇게 현혹된 여러분에게 매우 큰 진보라고 생각한다.다음에도 파이팅!!
그럼 다음에는'지도 그려주세요(2)'를 기대해주세요!!
====================================
읽어주셔서 감사합니다.
미성숙한 사람이라 미성숙한 부분이 많다고 생각해요.모르는 부분에 대해 질문을 하시면 답장 범위 내에서 답장을 드리겠습니다.또 잘못된 점과 개선된 점이 있으면 가급적 지적해달라고 당부했다.진지하게 공부하게 해주세요.
MICHO
Reference
이 문제에 관하여(C++로 MyNumber 만들기!① 맵 그리기(1) 목표 설정, 배열, define(매크로 포맷 대상)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/michowamemo/items/87ee3a960ee23fff8422텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)