Форум языка CPP

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум языка CPP » Код домашнего задания » Программа рисует фигуру, внутри размер, есть навигация клавишами.


Программа рисует фигуру, внутри размер, есть навигация клавишами.

Сообщений 1 страница 2 из 2

1

Код:
// *********
	// *       *
	// *       *
	// *     9 *
	// *       *
	// *       *
	// *       *
	// *       *
	// *********
	
	int    iSizeFigure,    	iXPosition=1,    	iYPosition=1, 
    	iXPositionNumbers,    iYPositionNumbers,    iCounterOne=0,
    	iCounterTwo=0,    	iPressKay,        iSizeFigureMax=30,        
    	iSizeFigureMem,    	iSizeFigureMin=7;

	char	cSymbolSpace=' ',    cSymbulPerimeter='*';

	bool	bPicturedNumber=false, iRemoveGaps=false,    bDrawing=true;
	
	
	std::cout<<"Moving figures UP key \"UP\""<<std::endl;
	std::cout<<"Moving figures DOWN key \"DOWN\""<<std::endl;
	std::cout<<"Moving figures LEFT key \"LEFT\""<<std::endl;
	std::cout<<"Moving figures RIGHT key \"RIGHT\""<<std::endl;
	std::cout<<"====================================="<<std::endl;
	std::cout<<"Moving number UP key \"Pg8\""<<std::endl;
	std::cout<<"Moving number DOWN key \"Pg2\""<<std::endl;
	std::cout<<"Moving number LEFT key \"Pg4\""<<std::endl;
	std::cout<<"Moving number RIGHT key \"Pg6\""<<std::endl;
	std::cout<<"====================================="<<std::endl;
	std::cout<<"The increase in figures \"+\""<<std::endl;
	std::cout<<"The decrease in figure \"-\""<<std::endl;
	std::cout<<"====================================="<<std::endl;
	
	std::cout<<"Enter the size of the figure, no more than "<<iSizeFigureMax<<" and no less "<<iSizeFigureMin<<std::endl;
	std::cin>>iSizeFigure;
	if(iSizeFigure>iSizeFigureMax || iSizeFigure<iSizeFigureMin)
	{
    while(iSizeFigure>iSizeFigureMax || iSizeFigure<iSizeFigureMin)
    {
    	std::cout<<"Enter the size of the figure, no more than "<<iSizeFigureMax<<" and no less "<<iSizeFigureMin<<std::endl;
    	std::cin>>iSizeFigure;
    }
	}
	
	iYPositionNumbers	=	iSizeFigure/2;
	iXPositionNumbers	=	iSizeFigure/2;
	iSizeFigureMem    =	iSizeFigure;
	
	
	while(1)
	{

    

    if(iSizeFigure>=10)
    {
    	iCounterOne=1;
    }
    
    if(bDrawing)
    {
    	if(iSizeFigure>=10)
    	{
        iCounterOne=1;
    	}
    	else
    	{
        iCounterOne=0;
    	}
    	
    	
    	
    	system("cls");
    	for(int i=0;i<=iYPosition;++i)//position along the axis Y
    	{
        std::cout<<std::endl;
    	}

    	for(int i=0;i<=iSizeFigure;++i)//Drawing screen
    	{
        for(int j=0;j<=iXPosition;++j)//position along the axis X
        {
        	std::cout<<' ';
        }
        
        if(i==0 || i==iSizeFigure)//Drawing the first and last row
        {
            for(int j=0;j<=iSizeFigure;++j)
            {
            	std::cout<<cSymbulPerimeter;
            }
        }
        else //Edge and filling in figure
        {
        	int iCounterTwo=0;
        	std::cout<<cSymbulPerimeter;
        	for(int j=0;j<=iSizeFigure-2;++j)
        	{
            if(i == iYPositionNumbers)//Whether to draw a number in this series
            {
            	if(j == iXPositionNumbers)
            	{
                bPicturedNumber=true;
            	}
            }
                    	
            if(bPicturedNumber)
            {
            	std::cout<<iSizeFigure;
            	
            	bPicturedNumber	=	false;
            	iRemoveGaps    =	true;//drew a numbers
            }
            else
            {
            	if(iCounterOne>iCounterTwo && true==iRemoveGaps)//Removing extra spaces occupied by the numbers
            	{
                ++iCounterTwo;
                if(iCounterOne==iCounterTwo)
                {
                	iRemoveGaps=false;
                }
                continue;
            	}
            	std::cout<<cSymbolSpace;
            }
        	}
        	std::cout<<cSymbulPerimeter;
        }

        std::cout<<std::endl;
    	}
    	bDrawing=false;
    	iRemoveGaps=false;
    }
    
    iPressKay=_getch();
    
    switch(iPressKay)
    {
    	case 224:
        break;
    	case 72://UP Figure
        if(iYPosition!=0)
        {
        	--iYPosition;
        	bDrawing=true;
        }
        break;
    	case 80://DUWN Figure
        if(iYPosition!=20)
        {
        	++iYPosition;
        	bDrawing=true;
        }
        break;
    	case 75://LEFT Figure
        if(iXPosition!=0)
        {
        	--iXPosition;
        	bDrawing=true;
        }
        break;
    	case 77://RIGHT Figure
        if(iXPosition!=(77-iSizeFigure))
        {
        	++iXPosition;
        	bDrawing=true;
        }
        break;
    	case 43://increase the size of the figure
        if(iSizeFigure!=iSizeFigureMax)
        {
        	++iSizeFigure;
        	if(iXPosition==(77-iSizeFigure))
        	{
            --iXPosition;
        	}
        	bDrawing=true;
        }
        break;
    	case 45://decrease the size of the figure
        if(iSizeFigure!=iSizeFigureMem)
        {
        	--iSizeFigure;
        	if(iXPositionNumbers==iSizeFigure-2)
        	{
            --iXPositionNumbers;
        	}
        	if(iYPositionNumbers==iSizeFigure)
        	{
            --iYPositionNumbers;
        	}
        	bDrawing=true;
        }
        break;
    	case 56://UP Numbers
        if(iYPositionNumbers!=1)
        {
        	--iYPositionNumbers;
        	bDrawing=true;
        }
        break;
    	case 50://DUWN Numbers
        if(iYPositionNumbers!=(iSizeFigure-1))
        {
        	++iYPositionNumbers;
        	bDrawing=true;
        }
        break;
    	case 52://LEFT Numbers
        if(iXPositionNumbers!=0)
        {
        	--iXPositionNumbers;
        	bDrawing=true;
        }
        break;
    	case 54://RIGHT Numbers
        if(iXPositionNumbers!=(iSizeFigure-3))
        {
        	++iXPositionNumbers;
        	bDrawing=true;
        }
        break;
    	case 27:
        return 0;
        break;
    }
    
	}

0

2


Вы здесь » Форум языка CPP » Код домашнего задания » Программа рисует фигуру, внутри размер, есть навигация клавишами.