#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<time.h>
#include<conio.h>
void gotoxy(int x,int y);
void move();
void map();
void change(int a);
void change2();
void change3(int b);
int x=3,y=2;
int chr;
int substitute;
char map1[] = {"┏━┳━┳━┳━┳━┳━┳━┳━┓"};
char map2[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map3[] = {"┣━╋━╋━╋━╋━╋━╋━╋━┫"};
char map5[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map6[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map7[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map8[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map9[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map10[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map11[] = {"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃"};
char map4[] = {"┗━┻━┻━┻━┻━┻━┻━┻━┛"};
char* str;
int main(void)
{
map();
while(1)
{
gotoxy(x,y);
printf("[]");
if(_kbhit())
{
move();
map();
}
}
system("pause");
return 0;
}
void map()
{
printf("%s\n", map1);
printf("%s\n", map2);
printf("%s\n", map3);
printf("%s\n", map5);
printf("%s\n", map3);
printf("%s\n", map6);
printf("%s\n", map3);
printf("%s\n", map7);
printf("%s\n", map3);
printf("%s\n", map8);
printf("%s\n", map3);
printf("%s\n", map9);
printf("%s\n", map3);
printf("%s\n", map10);
printf("%s\n", map3);
printf("%s\n", map11);
printf("%s\n", map4);
}
void move()
{
chr = getch();
if(chr == 0 || chr == 224)
{
chr = getch();
if(chr == 72)
{
y-=2;
system("cls");
if(y<1)y=2;
}
if(chr == 80)
{
y+=2;
system("cls");
if(y>16)y=16;
}
if(chr == 75)
{
x-=4;
system("cls");
if(x<1)x=3;
}
if(chr == 77)
{
x+=4;
system("cls");
if(x>33)x=31;
}
}
else
{
change(y);
}
system("cls");
}
void gotoxy(int x,int y)
{
COORD Pos = {x-1,y-1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
void change(int a)
{
switch(a)
{
case 2:
str = map2;
change2();
break;
case 4:
str = map5;
change2();
break;
case 6:
str = map6;
change2();
break;
case 8:
str = map7;
change2();
break;
case 10:
str = map8;
change2();
break;
case 12:
str = map9;
change2();
break;
case 14:
str = map10;
change2();
break;
case 16:
str = map11;
change2();
break;
}
}
void change2()
{
if(x == 3)
change3(x);
if(x == 7)
change3(x);
if(x == 11)
change3(x);
if(x == 15)
change3(x);
if(x == 19)
change3(x);
if(x == 23)
change3(x);
if(x == 27)
change3(x);
if(x == 31)
change3(x);
}
void change3(int b)
{
if(chr == 49)
{
str[b] = '!';
str[--b] = '!';
}
if(chr == 50)
{
str[b] = '?';
str[--b] = '?';
}
if(chr == 51)
{
str[b] = ' ';
str[--b] = ' ';
}
}
방향키로 [] 이놈을 8*8칸 안에서 움직이면서
칸위에서 숫자1을 눌렀을경우 그칸이 '!!' 2를 눌렀을경우 '??' 3을 눌렀을경우 공백 으로 채워짐
근데 [] 있는줄이 깜빡거리는데 그거 못고치나
change2 에서 3, 7, 11 ... 31 을 보고 규칙을 느껴야지.
x % 4 == 3 이잖아. (x & 3) == 3 이기도 하고. 그러니까 한 줄로 표현하면 if (x % 4 == 3) change3(x);
change3 에서 인자로 받는 x 가 change2 에선 전역이란게 일관성 없다. change2 도 고치지 그래
%4가 4의 배수라는 뜻이야 ??
인터넷 보다가 더좋은 판그리는법 있어서 그걸로 다시만들어보려고!
change3 도, 49, 50, 51 이란 말은 '1' '2' '3' 이란 말인데, b - '1' 하면 각각, 0, 1, 2 를 만들 수 있다.
%는 나머지 연산. 4로 나눈 나머지가 3인지 비교한거야.
그 말은 change3 도 if 문 다 없앨 수 있어. const char marks[] = {'!', '?', ' '}; 을 이용해서
표 그리는것도 ㅡ,.ㅡ 외곽선 다른것들만 배열로 정의해 놓고 strcpy를 쓰도록 해. for문도 좀 쓰고.
아하 근데 b-'1'?? change3에서의 b값은 x 값인데 ? 아까 알려준데로 x%4==3 인값
일단 strcpy 랑 const char marks[]이거 무슨 기능인지 봐야겠다 그러면
b-'1' 이 아니라 chr - '1' 내가 코드 똑바로 안 읽음.
그냥 상수 배열이지.
str[b] =
marks[
chr - '1'
];
str[b - 1] 도 마찬가지.
그러니까 한줄로 표현됨. str[b - 1] = str[b] = marks ...
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.