Lesson19循环语句作业

Posted zzdoit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lesson19循环语句作业相关的知识,希望对你有一定的参考价值。

#include <windows.h>
#include <math.h>

#define WINMAXIMUM 100
HWND g_hwnds[WINMAXIMUM] = { 0 };
int g_winnum = 0;

BOOL CALLBACK EnumWindowsProc(
    _In_ HWND   hwnd,
    _In_ LPARAM lParam) 
{
    char classname[MAXBYTE] = { 0 };
    GetClassNameA(hwnd, classname, MAXBYTE);
    if (strcmp("Notepad", classname) == 0)
    {
        g_hwnds[g_winnum] = hwnd;
        g_winnum++;
    }

    return TRUE;
}


int main()
{
    EnumWindows(EnumWindowsProc, NULL);


    //完成代码如下:////////////////////////////////////////////////////////
    //每排3个窗口分4列排列
    /*int i = 0;
    int line = 0;
    int num = 0;
        for (int line=0,  y =0; line<4&&y<1080; line++,y+=230)
        {
            for (int x = 0,num=0 ; num<3 && x < 1920; num++,x += 230)
            {
            MoveWindow(g_hwnds[i],x+230, y, 230, 230, TRUE);
            i++;
        }
    }*/

    //完成,代码如下://///////////////////////////////////////////////////////////////
    //让所有窗口依次从左向右飞过
    //for (int i=0; i<WINMAXIMUM;i++)
    //{
    //    for (int y=0; y<1080;y+=230)
    //    {
    //        for (int x=0;x<1920;x+=10 )
    //        {
    //            MoveWindow(g_hwnds[i], x , y, 230, 230, TRUE);
    //            Sleep(10);
    //        }
    //        
    //    }
    //    
    //}

    //代码完成,如下:///////////////////////////////////////////////////////////////////////////////////////////
    //让所有窗口依次挨个从左向右飞过
    //for (int y = 0; y < 1080 - 230; y += 230)
    //{
    //    for (int x = 0; x < 1920; x += 5)
    //    {
    //        for (int i = 0; i < WINMAXIMUM; i++)
    //        {
    //            MoveWindow(g_hwnds[i], x - 80 * i, y, 230, 230, TRUE);
    //            Sleep(5);
    //        }

    //    }

    //}

    

    //完成,代码如下://////////////////////////////////////////////////////////////////////////////////////////

    //让窗口排列成
    //*
    //**
    //***
    //**
    //*

    //int i = 0;

    //for (int line=-2,  y =0; line<=2; line++,y+=200)
    //{
    //    for (int x = 0,num=0 ; num<3-abs(line) ; num++,x += 210)
    //    {
    //        MoveWindow(g_hwnds[i],x, y, 200, 200, TRUE);
    //        i++;
    //    }
    //}

    //完成代码如下://////////////////////////////////////////////////////////

    //让窗口排列成
    //                *
    //               **
    //              ***
    //               **
    //                *

    //int i = 0;

    //for (int line = -2, y = 0; line <= 2; line++, y += 200)
    //{
    //    for (int x = 1700, num = 0; num < 3 - abs(line); num++, x -= 210)
    //    {
    //        MoveWindow(g_hwnds[i], x, y, 200, 200, TRUE);
    //        i++;
    //    }
    //}

    /////////////////////////////////////////////////////////////

    //让窗口分3行,每次每行飞入一个
    /*for (int i = 0; i < WINMAXIMUM; i++)
    {
        
        for (int x = 0; x < 1920; x += 230)
            {            
                for (int y = 0; y < 1080 - 230; y +=10)
                {
                MoveWindow(g_hwnds[i], x - 80 * i, y, 230, 230, TRUE);
                Sleep(5);
                }

            }

    }
*/

////////反弹效果不符合要求,存疑。///////////////////////////////////////////////////////////////////////////////////

    //模拟窗口反弹

for (int i=0;i<WINMAXIMUM;i++)
{
    int y = 0;
    int num = 0;
    for (int x=0,n=1;x<1920-210;n++,x+=50)
    {    
    
        if (n%2==0)
        {
            
            for (int y = num; y <870; y += 10)
            {
                
                MoveWindow(g_hwnds[i], x, y + (870 - y) / (2 * n), 210, 210, TRUE);
                
                Sleep(5);
                

            }
        } 
        else
        {
            for (int y =870; y >0; y -=10)
            {
                MoveWindow(g_hwnds[i], x, y + (870 - y) /(2*n), 210, 210, TRUE);
                Sleep(5);
                
            }
            //y=y+( 870 - y) / 2;
        }
        
        
    }
    

}
    
    
        

    
            
        




    //将数组中奇数下标的窗口从下往上飞,偶数下标的窗口从上往下飞。每次都需要反弹效果


//1,遍历数组
//for (int i=0;i<WINMAXIMUM;i++)
//{
//    //2,判断下标奇偶
//    if (i%2==1)
//    {
//        //3,奇数下标,向下飞
//        for (int x =0;x<1920;x+=50)
//        {
//
//            for (int y = 0; y <870; y += 20)
//            {
//
//                //反弹效果?
//
//
//                MoveWindow(g_hwnds[i], x, y, 210, 210, TRUE);
//                Sleep(5);
//            }
//        }
//
//    } 
//    else
//    {
//        //4,偶数下标,往上飞
//        for (int x = 0; x < 1920; x += 50)
//        {
//            
//            for (int y = 870; y>0; y -= 20)
//            {
//
//                //反弹效果?
//
//                MoveWindow(g_hwnds[i], x, y, 210, 210, TRUE);
//                Sleep(5);
//            }
//        }
//    }
//}


return 0;
}

最后两题做得不符合要求。

以上是关于Lesson19循环语句作业的主要内容,如果未能解决你的问题,请参考以下文章

Lesson17.18语句作业

lesson16_sanf_s 作业

lesson009 lesson010 作业

Lesson 1#11 循环

java学习lesson 03

2017.3.19 for