벽에 충돌체크를 어떻게해야됄까요?
딸기우유
질문 제목 : 충돌체크를 어떻게해야됄까요?정말 막막하군요 .. 될수있는한 쉽고 자세히 설명해주시면 감사하시겠습니다..질문 내용 : #include stdio.h
#include windows.h
#include conio.h
#define left 75
#define right 77
#define brick 1
#define max 4
#define max2 34
struct bal{
int x,y;
int dir[10];
};
gotoxy(int x, int y)
{
coord pos = {x, y};
setconsolecursorposition(getstdhandle(std_output_handle), pos);
}
void textcolor(int color_number)
{
setconsoletextattribute(getstdhandle(std_output_handle),color_number);
}
struct bal ba={33,15};
map();
ball();
character();
int c_x=32;
int c_y=23;
int i,j;
int map2[max][max2]={
{brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick},
{brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick},
{brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick},
{brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick,brick}
};
main(){
system(mode con cols=70 lines=25);
map();
while(1){
character();
ball();
}
}
map(){
for(i=0;imax;i++){
for(j=0;jmax2;j++){
if(map2[i][j]==brick)
{
printf(■);
}
}
printf(\n);
}
}
character(){
int key;
gotoxy(c_x,c_y);
printf(ㅡㅡㅡㅡ);
if(kbhit()){
key=getch();
gotoxy(c_x,c_y);
printf( );
switch(key){
case left:
if(c_x0)
c_x--;
break;
case right:
if(c_x62)
c_x++;
break;
}
gotoxy(c_x,c_y);
printf(ㅡㅡㅡㅡ);
}
gotoxy(20,20);
printf(%d %d,c_x,c_y);
}
ball(){
ba.dir[0]=1; // ↗
ba.dir[1]=2; // ↘
ba.dir[2]=3; // ↙
ba.dir[3]=4; // ↖
if(ba.yc_y){
while(ba.y!=23){ // 공이 내려오는 코드
character();
gotoxy(ba.x,ba.y);
printf(ⓢ);
gotoxy(ba.x,ba.y);
printf( );
ba.y++;
gotoxy(ba.x,ba.y);
printf(ⓢ);
sleep(50);
}
}
if(ba.y==c_y){ // 공이 직선으로 올라가는 코드
for(;c_x==ba.x || c_x==ba.x-1 || c_x==ba.x-2 || c_x==ba.x-3 || c_x==ba.x-4 || c_x==ba.x-5 || c_x==ba.x-6 || c_x==ba.x+1;){
character();
if(ba.y23)
gotoxy(ba.x,ba.y);
printf( );
gotoxy(ba.x,ba.y);
printf(ⓢ);
gotoxy(ba.x,ba.y);
printf( );
ba.y--;
gotoxy(ba.x,ba.y);
printf(ⓢ);
sleep(50);
gotoxy(33,16);
printf(%d %d,ba.x,ba.y);
if(ba.y==3)
break;
/*for(i=0;imax;i++){
for(j=0;jmax2;j++){
if(ba.y==map[i][j])*/
}
}
}
if(c_x!=ba.x && c_x!=ba.x-1 && c_x!=ba.x-2 && c_x!=ba.x-3 && c_x!mp; c_x!=ba.x-4 && c_x!=ba.x-5 && c_x!=ba.x-6 && c_x!=ba.x+1 && ba.y==23){
printf(으악 !); // 죽는코드
system(pausenul);
system(cls);
gotoxy(30,12);
printf(game over\n\n\n\n\n\n\n\n);
system(pausenul);
exit(1);
}
}
}