แก้ไขปัญหาบอลทะลุบาเวลาอัดกับขอบยังไงดีคับ

#include<stdio.h>
#include<conio.h>
#include<windows.h>

void gotoxy(int x, int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
     int TABx=40,TABy=24,TABix=1,TABiy=1;
     int x=0,y=22,n=1,p;
     int ix=1,iy=1;
     int key;

void moveball()
{
    
     for(int i=0;i<n;i++)
       {
                p=1;
                   x=x+ix; //0+1= 1 2 3 4 5 ....80    
                    y=y-iy; //24-1= 23 22 21 20 ....0
                    
              if(x<=0 || x>=80 )
               {
                   ix=(-1)*ix; //-1*12=-80
            }
            
              if(y<=0 || y>=24)
              {
                  iy=(-1)*iy; //-1*24= -24           
            }
              
}
}

void movebar(){
    
    if((y==TABy)&&ร้องไห้x>=TABx&&x<=TABx+24))
              {
                  iy=(-1)*iy; //-1*24= -24
                  
              
                if(iy>0){
                    y=y-1;
                }
                if(iy<0){
                    y=y+1;
                }
              }
    if((y==TABy+1||y==TABy-1)&&ร้องไห้x>=TABx&&x<=TABx+24)) {
              
                  p=0;
                  Sleep(20);
              }
              if(y>24)y=24;
              if(y<0)y=0;
              system("cls");
}


void printball(){
    
                gotoxy(x,y);
                  printf("O");
}

void chkbar (){
    
    if(TABx<=0)
                  TABx=0;
              
              else if(TABx>=60)
                  TABx=60;
    
              if(TABy<=0)
                  TABy=0;     
              
              else if(TABy>=24)    
                  TABy=24;
}

void printbar(){
              gotoxy(TABx,TABy);
                  printf("IIIIIIIIIIIIIIIIIIII");
//                  printf("%d,%d",TABx,TABy);
                  Sleep(50);
}

void Key(){
        if(kbhit()&&p==1)
                {
                  key=getch();
                  
                    if(key == 27)
                    {
                        exit(0); //ESC
                        //break;
                    }
                    if(key == 119)
                    {
                        TABy--; // w
                    }
                    if(key == 115)
                    {       
                        TABy++; // s
                    }
                    if(key == 97)
                    {       
                        TABx--; // a
                    }
                    if(key == 100)
                    {     
                        TABx++; // d
                    }    
                }
}

int main()
{
       do{
        moveball();        
        movebar();
        chkbar();    
        printball();
        printbar();
        Key();
          }while(1);
    }


เวลากดkey แล้วอัดบอลกับขอบมันทะลุบาอาคับผม

แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่